baweaver

Writing

Essays on engineering, leadership, Ruby, and systems thinking.

May 27, 2026

Grab the Chainsaw

A tornado flattened my town in 2011. What I learned that night still shapes how I show up to work today.

Dec 27, 2024

Noah Gibbs: Mentor, Friend, Ally

Content Warning: Death of a Ruby community member I woke up this morning to receive the news, among...

Oct 04, 2024

Let's Read - Eloquent Ruby - Ch 21 – Method Missing

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Oct 04, 2024

Let's Read - Eloquent Ruby - Ch 22 – Method Missing Delegation

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Oct 03, 2024

Let's Read - Eloquent Ruby - Ch 20 – Block Hooks

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 27, 2024

Let's Read - Eloquent Ruby - Ch 19 – Block Actions

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 26, 2024

Let's Read - Eloquent Ruby - Ch 18 – Block Wrapping

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 24, 2024

Let's Read - Eloquent Ruby - Ch 17 – Block Iterators

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 13, 2024

Let's Read - Eloquent Ruby - Ch 16 – Module Mixins

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 12, 2024

Let's Read - Eloquent Ruby - Ch 14 – Class Instance Variables

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 12, 2024

Let's Read - Eloquent Ruby - Ch 15 – Module Namespaces

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 11, 2024

Let's Read - Eloquent Ruby - Ch 13 – Singleton and Class Methods

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 10, 2024

Let's Read - Eloquent Ruby - Ch 11 – Operators

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 10, 2024

Let's Read - Eloquent Ruby - Ch 12 – Equality

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 07, 2024

Let's Read - Eloquent Ruby - Ch 10 – Short Methods

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 05, 2024

Let's Read – Eloquent Ruby – Ch 8 – Dynamic Typing

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 05, 2024

Let's Read – Eloquent Ruby – Ch 9 – Tests

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Sep 03, 2024

Let's Read – Eloquent Ruby – Ch 7 – Objects

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Jan 25, 2024

On Diligence

What is diligence? What does it mean to be diligent? It's a subject I've been reflecting on a good...

Oct 01, 2023

Understanding Ruby - Memoization

Introduction Memoization is a common technique in Ruby, but alas it's one with a few...

Sep 28, 2023

Beyond Senior - Metric Obsessions

After a number of conversations over the past few years with several other engineers who have moved...

May 11, 2023

Beyond Senior - Fire! Fire!

After a number of conversations over the past few years with several other engineers who have moved...

Apr 27, 2023

Beyond Senior - The Vista Problem

After a number of conversations over the past few years with several other engineers who have moved...

Apr 27, 2023

In Favor of Ruby Central Memberships

At the end of RailsConf this year Jonan and Ruby Central launched the Ruby Central Membership Program...

Jan 24, 2023

Pattern Matching Interfaces in Ruby

Defining a standard for implementing pattern matching interfaces in Ruby, originally from the 2021...

Dec 08, 2022

To Be Known for our Kindness

Content Warning: Death of a Ruby community member We have lost a great man in the Ruby community in...

Nov 30, 2022

Beyond Senior - The Parable of the Sword

After a number of conversations over the past few years with several other engineers who have moved...

Oct 06, 2022

New in Ruby 3.2 - Data.define

Victor Shepelev (Zverok) has just landed an extremely useful feature in Ruby, Data.define. You can...

Oct 04, 2022

On Promotions

On Promotions Ah yes, that time of year has come again, and with it come some of the most...

Sep 18, 2022

Beyond Senior – The Peacock, the Hermit, and the Counsel

After a number of conversations over the past few years with several other engineers who have moved...

Sep 05, 2022

Beyond Senior – The IC Misnomer

After a number of conversations over the past few years with several other engineers who have moved...

Sep 04, 2022

Beyond Senior – Just Enough Experimentation

After a number of conversations over the past few years with several other engineers who have moved...

Sep 03, 2022

Beyond Senior – Progressive Influence

After a number of conversations over the past few years with several other engineers who have moved...

Aug 26, 2022

Understanding Ruby – Recursion

To understand recursion, you must first understand recursion. Cute, but perhaps not the most useful...

Jun 20, 2022

On Autism - Grounding and Normalcy

Most of my writing on autism tends to pertain to software engineering in some regard, and while I...

Jun 15, 2022

ASTs in Ruby - Node Pattern and Introducing RuboCop

In the last article I was not being quite honest when I said that regex would not work when trying to...

Jun 14, 2022

ASTs in Ruby - Pattern Matching

Have you ever wanted to edit Ruby code programmatically? Perhaps change one bit of text to another,...

Jun 11, 2022

The Case for Pattern Matching Key Irreverence in Ruby

I had alluded to this post a bit earlier on Twitter, and in the Ruby bug tracker, but wanted to more...

Jun 05, 2022

Exploring dry-rb - Intuition of Results

dry-rb is a fascinating set of tools and libraries, but their usage may not be readily apparent. Why...

May 24, 2022

Ruby in FantasyLand: SumsUp

Javascript comes with this lovely little spec called Fantasy Land that defines certain type classes...

Mar 21, 2022

Tales of the Autistic Developer – The Politician

For those who don't know me, I'm autistic. I've been a developer for the better part of a decade. I...

Nov 19, 2021

Tales of the Autistic Developer – Order and Chaos

For those who don't know me, I'm autistic. I've been a developer for the better part of a decade. I...

Nov 14, 2021

Future of Ruby – AST Tooling

This is a series meant to explore the potential future of the Ruby programming language by visiting...

Nov 02, 2021

Let's Read – Eloquent Ruby – Ch 6 – Symbols

Oct 19, 2021

Let's Read – Eloquent Ruby – Ch 5 – Regular Expressions

Oct 17, 2021

Tales of the Autistic Developer - Loud Loud World

For those who don't know me, I'm autistic. I've been a developer for the better part of a decade. I...

Sep 28, 2021

Let's Read – Polished Ruby Programming – Ch 3.2 Instance Variables

Sep 21, 2021

Let's Read – Eloquent Ruby – Ch 4 – Smart Strings

Sep 12, 2021

Ruby 3.1 – Shorthand Hash Syntax – First Impressions

It's the time of year again, and with it comes a bundle of new Ruby 3.1 features getting approved and...

Sep 07, 2021

Let's Read – Eloquent Ruby – Ch 3 – Smart Collections

Aug 30, 2021

Let's Read – Polished Ruby Programming – Ch 3.1 – Local Variables

Aug 01, 2021

Functional Programming in Ruby – State

Ruby is, by nature, an Object Oriented language. It also takes a lot of hints from Functional...

Jul 31, 2021

Understanding Ruby - For vs Each

Introduction For those coming from other languages with for loops the concept of each,...

Jul 16, 2021

Let's Read – Polished Ruby Programming – Ch 2

Jul 15, 2021

Let's Read – Eloquent Ruby – Ch 2 – Control Structures

Jul 09, 2021

Let's Read – Eloquent Ruby – Ch 1 – Code That Looks Like Ruby

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent...

Jul 08, 2021

Let's Read – Polished Ruby Programming – Ch 1

Polished Ruby Programming is a recent release by Jeremy Evans, a well known Rubyist working on the...

May 15, 2021

Interviewing - Perspective of the Interviewee

Interviewing in tech is hard, especially when you're just getting started. Years ago when I was getti...

Feb 12, 2021

Understanding Ruby - Enumerable - Coercion

Introduction Enumerable. Debatably one of, if not the, most powerful features in Ruby. As...

Feb 12, 2021

Understanding Ruby - Enumerable - Combining

Introduction Enumerable. Debatably one of, if not the, most powerful features in Ruby. As...

Feb 12, 2021

Understanding Ruby - Enumerable - Grouping

Introduction Enumerable. Debatably one of, if not the, most powerful features in Ruby. As...

Feb 12, 2021

Understanding Ruby - Enumerable - Iterating and Taking

Introduction Enumerable. Debatably one of, if not the, most powerful features in Ruby. As...

Feb 11, 2021

Understanding Ruby - Enumerable - Counting

Introduction Enumerable. Debatably one of, if not the, most powerful features in Ruby. As...

Feb 11, 2021

Understanding Ruby - Enumerable - Intro and Interfaces

Introduction Enumerable. Debatably one of, if not the, most powerful features in Ruby. As...

Feb 11, 2021

Understanding Ruby - Enumerable - Predicate Conditions

Introduction Enumerable. Debatably one of, if not the, most powerful features in Ruby. As...

Feb 11, 2021

Understanding Ruby - Enumerable - Searching and Filtering

Introduction Enumerable. Debatably one of, if not the, most powerful features in Ruby. As...

Feb 11, 2021

Understanding Ruby - Enumerable - Sorting and Comparing

Introduction Enumerable. Debatably one of, if not the, most powerful features in Ruby. As...

Feb 11, 2021

Understanding Ruby - Enumerable - Transformations

Introduction Enumerable. Debatably one of, if not the, most powerful features in Ruby. As...

Feb 09, 2021

Understanding Ruby - Comparable

Introduction Before we get into larger modules like Enumerable there are some very interes...

Feb 08, 2021

Understanding Ruby - to_proc and Function Interfaces

Introduction We've just covered the idea of Block Functions, Proc Functions, and Lambda Fu...

Feb 07, 2021

Definitive Pattern Matching - Array-like Structures

Introduction This is the start of a series on Ruby Pattern Matching, the goal of which is...

Feb 07, 2021

Understanding Ruby - Blocks, Procs, and Lambdas

Introduction Ruby is a language that uses multiple paradigms of programming, most usually...

Feb 06, 2021

Understanding Ruby - Triple Equals

Introduction Triple Equals (===) in Ruby is one of the most powerful features in the entir...

Feb 01, 2021

Matchable - Class-level Pattern Matching Macros Explained

Introduction Recently I've released a new gem, Matchable, which introduces class-level mac...

Jan 14, 2021

Ruby 3 Pattern Matching Applied: Tic-Tac-Toe

Pattern Matching in Ruby 2.7 and 3.0 can be an odd concept to read about, and an even stranger one to know how to use. This is another use case, this time to solve a Tic-Tac-Toe game

Jan 13, 2021

Ruby 3 Pattern Matching Applied: Poker

Pattern Matching in Ruby 2.7 and 3.0 can be an odd concept to read about, and an even stranger one to know how to use. This is a detailed example of a more complicated use-case of pattern matching to solve for scoring poker hands

Jan 08, 2021

Introducing Patterns in Parallelism for Ruby

With the advent of Ractor and Fibers we've hit the limits of mutable types. We're going to need some new patterns, and with that comes some interesting observations on the nature of parallel structures.

Dec 30, 2020

Advent of Ruby 3.0 - Day 06 - Custom Customs

An exploration into Ruby 2.7 and 3.0 features applied to Advent of Code Problems

Dec 29, 2020

Advent of Ruby 3.0 - Day 04 - Passport Processing

An exploration into Ruby 2.7 and 3.0 features applied to Advent of Code Problems

Dec 29, 2020

Advent of Ruby 3.0 - Day 05 - Binary Boarding

An exploration into Ruby 2.7 and 3.0 features applied to Advent of Code Problems

Dec 28, 2020

Advent of Ruby 3.0 - Day 03 - Toboggan Trajectory

An exploration into Ruby 2.7 and 3.0 features applied to Advent of Code Problems

Dec 27, 2020

Advent of Ruby 3.0 - Day 01 - Report Repair

An exploration into Ruby 2.7 and 3.0 features applied to Advent of Code Problems

Dec 27, 2020

Advent of Ruby 3.0 - Day 02 - Password Philosophy

An exploration into Ruby 2.7 and 3.0 features applied to Advent of Code Problems

Dec 25, 2020

Tales of the Autistic Developer - Becoming an Organizational Leader

A few months ago I'd announced my promotion, and in some of the replies I was asked what exactly I did to get to this point. This post covers my evolution at Square and how I've gotten to this point, as well as what I plan to do from here.

Dec 25, 2020

Tales of the Autistic Developer - The Expert

Autism can lead to obsession, and it isn't unusual that this evolves into expertise after enough practice, but how can this be leveraged effectively at work?

Sep 02, 2020

Ruby 3 - Set Literal

In our series on new Ruby 3.0 features we continue with the new Set literal syntax.

Sep 02, 2020

Tales of the Autistic Developer - The Mentor

People on the spectrum have a lot to share, but sometimes that sharing becomes a rapid information dump rather than something understandable by anyone else. How can someone on the spectrum mentor effectively, given this? These are a few of my strategies.

Sep 01, 2020

Ruby 3 - Anonymous Struct

In our series on new Ruby 3.0 features we start with the anonymous Struct, ${}.

Aug 06, 2020

Clocks are Monoids Too!

Along the theme of exploring FP concepts and interesting ideas we're taking another look at monoids in a specific sense: with clocks!

Aug 02, 2020

Tales of the Autistic Developer - Senior Developer

What does it take to become a Senior developer if you're on the spectrum? What does it look like once you're there? This is but one experience among many, but perhaps one that can help.

Dec 06, 2019

The Night Before Code Freeze

A new twist on a classic holiday poem with cartoon lemurs and fun to match

Nov 01, 2019

Deeper Magics: Monoids in Ruby and Rails

There exist some deeper magics and patterns in Ruby, this series will take a look at ideas from FP and how they can be applied.

Sep 14, 2019

Tales of the Autistic Developer - Myth of the Autistic Jerk

There's a myth that autistic people behave poorly, and that it's excusable because they're autistic. That's far from the truth.

Sep 05, 2019

The Nature of Success

What does it mean to be successful? Turns out that's complicated.

Aug 20, 2019

Decorating Ruby - Part Three - Prepending Decoration

How various forms of method decoration work in Ruby

Aug 19, 2019

Of a Higher Order - Map, Filter, Reduce

So you've seen map, filter, reduce, and other functions, but how do they work behind the scenes? Let's take a look

Aug 18, 2019

Decorating Ruby - Part Two - Method Added Decoration

How various forms of method decoration work in Ruby

Aug 17, 2019

Decorating Ruby - Part One - Symbol Method Decoration

How various forms of method decoration work in Ruby

Aug 16, 2019

Moving to Dev.To

Aug 05, 2019

How it's Made - Tales of the Ruby Grimoire

How my illustrated talk, "Tales of the Ruby Grimoire", was created.

Aug 04, 2019

Tales of the Ruby Grimoire - Part Five - On the Nature of Magic

Dark tales of Ruby magics from beyond what any sane Rubyist would teach in a book of legends, opened by a particularly curious young lemur named Red.

Aug 04, 2019

Tales of the Ruby Grimoire - Part Four - The Lemurs of Haskell

Dark tales of Ruby magics from beyond what any sane Rubyist would teach in a book of legends, opened by a particularly curious young lemur named Red.

Aug 04, 2019

Tales of the Ruby Grimoire - Part One - The Grimoire

Dark tales of Ruby magics from beyond what any sane Rubyist would teach in a book of legends, opened by a particularly curious young lemur named Red.

Aug 04, 2019

Tales of the Ruby Grimoire - Part Three - The Lemurs of Javascript

Dark tales of Ruby magics from beyond what any sane Rubyist would teach in a book of legends, opened by a particularly curious young lemur named Red.

Aug 04, 2019

Tales of the Ruby Grimoire - Part Two - The Lemurs of Scala

Dark tales of Ruby magics from beyond what any sane Rubyist would teach in a book of legends, opened by a particularly curious young lemur named Red.

Jul 14, 2019

Tales of the Autistic Developer - The 10x Engineer

With the recent debate over the 10x engineer, I see people like myself destroyed in pursuit of the myth. The danger is real, inhibitions are low, and many will burn out in the process.

Jul 14, 2019

Tales of the Autistic Developer - The Ecstasy of the Void

Lessons I wish I had learned when I was a new and Junior developer years ago, in the hopes that they'll help others avoid some of the same mistakes.

Jun 21, 2019

A Scoop of Sorbet - First Impressions

Stripe just released a new Ruby Static Typing library named Sorbet, let's take a look into it

Jun 14, 2019

Ruby 2.7: The Pipeline Operator

A pipeline operator has been added to Ruby, but not quite the one we'd expected

Apr 18, 2019

Ruby 2.7 — Pattern Matching — Destructuring on Point

Ruby 2.7 — Pattern Matching — Destructuring on Point Now that pattern matching has hit...

Apr 17, 2019

Ruby 2.7 — Pattern Matching — First Impressions

Ruby 2.7 — Pattern Matching — First Impressions Shall we grab a sneak peak at what Pattern...

Mar 18, 2019

Ruby 2.7 — Numbered Parameters

Ruby 2.7 — Numbered Parameters Ruby 2.7 is coming out this December, as with all modern...

Feb 18, 2019

Exploring TracePoint in Ruby — Part Two — Events

A comprehensive guide to every TracePoint event in Ruby — line, class, call, return, raise, block, thread, and fiber events with practical examples.

Feb 10, 2019

Ruby 2.7 — Enumerable#tally

Ruby 2.7 — Enumerable#tally Christmas has come and passed, 2.6 has been released, and now...

Feb 08, 2019

Exploring TracePoint in Ruby — Part One — Example Code

An introduction to TracePoint in Ruby — what it does, how it works, and practical examples of tracing code execution.

Jan 04, 2019

2018 in Review

A look back at 2018 — conference talks, open source projects, articles written, and adventures had.

Jan 01, 2019

Performance Test

Benchmarking different approaches to implementing select with reduce — push, shovel, and pure plus.

Dec 28, 2018

On On-Call, Operations, and Holidays

Thoughts on on-call culture, operations during the holidays, and building sustainable practices for engineering teams.

Dec 27, 2018

I want to paste in Pry!

Tips for pasting multi-line code into Pry, including using edit and pbpaste on Mac.

Dec 27, 2018

Sf — Abusing Operators and Method Missing

Taking operator abuse further with method_missing and custom proc coercion to build expressive DSLs.

Dec 26, 2018

Exploring Ruby 2.6 — Proc#compose and Enumerator#chain

Exploring Ruby 2.6 Proc#compose for function composition and Enumerator#chain for lazy enumeration.

Dec 26, 2018

Mf — Abusing Ruby’s Operator Precedence

Abusing Ruby's proc coercion and operator precedence to create expressive functional combinators.

Dec 12, 2018

RubyConf Rundown Pt. 1

A recap of favorite talks from RubyConf 2018, including Reducing Enumerable and other highlights.

Nov 18, 2018

Reducing Enumerable — Part Five: Cerulean, Master of Tally By

Part five of Reducing Enumerable — Cerulean teaches Red how to implement tally_by using reduce.

Nov 18, 2018

Reducing Enumerable — Part Four: Violet, Master of Find

Part four of Reducing Enumerable — Violet teaches Red how to implement find using reduce.

Nov 18, 2018

Reducing Enumerable — Part Six: A Final Lesson from Scarlet

The finale of Reducing Enumerable — Scarlet reveals the true nature of reduce and Red's journey comes full circle.

Nov 17, 2018

Reducing Enumerable — Part Three: Indigo, Master of Select

Part three of Reducing Enumerable — Indigo teaches Red how to implement select using reduce.

Nov 17, 2018

Reducing Enumerable — Part Two: Chartreuse, Master of Map

Part two of Reducing Enumerable — Chartreuse teaches Red the secrets of implementing map with reduce.

Nov 14, 2018

Exploring Ruby 2.6 — Enumerator, Hash, and Enumerable Changes

Exploring new Enumerable and Enumerator features in Ruby 2.6, including to_h with blocks and Enumerator chaining.

Oct 24, 2018

Lemurs mean Hope

The personal story behind the lemur illustrations — autism, mentorship, and how a group of lemurs became a symbol of hope.

Oct 05, 2018

Destructuring in Ruby

Implementing destructuring in Ruby using blocks, allowing methods to accept both keyword arguments and objects.

Sep 24, 2018

Let's Read! — Eloquent Ruby (Ch 2)

Reading through Eloquent Ruby Chapter 2 — choosing the right control structure, with modern Ruby updates.

Sep 21, 2018

Let's Read! — Eloquent Ruby (Ch 1)

Reading through Eloquent Ruby Chapter 1 — writing code that looks like Ruby, with notes on what has changed since 2011.

Sep 10, 2018

Understanding Transducers in Ruby

An introduction to transducers in Ruby — composable algorithmic transformations decoupled from their input sources.

Aug 04, 2018

Creating “Reducing Enumerable — An Illustrated Adventure”

Behind the scenes of creating a fully illustrated conference talk about reduce for Southeast Ruby 2018.

Jun 19, 2018

Challenge — Table of Contents Generator

A developer challenge to build a table of contents generator from HTML headers, with multiple solution approaches.

May 21, 2018

Tak — Sequencing Movesets in JS

Representing Tak board game moves as functional transformations in JavaScript.

May 13, 2018

Functional Programming in Ruby — Closures

Understanding closures in Ruby — how functions can capture and remember their surrounding context.

May 13, 2018

Functional Programming in Ruby — Flow Control

Functional approaches to flow control in Ruby, moving beyond exceptions to monadic error handling.

Apr 30, 2018

Qo::Evil — Dynamic Compilation with eval

Using eval to dynamically compile Qo pattern matches into native Ruby for near-vanilla performance.

Apr 25, 2018

On Dealing with Deep Hashes in Ruby — XF — Part Two: Traces

Part two of the Xf series, exploring Traces for recursively searching and transforming values in deep hashes.

Apr 24, 2018

On Dealing with Deep Hashes in Ruby — XF — Part One: Scopes

Introducing Xf, a Ruby gem for transforming deep hashes using functional scopes inspired by Haskell lenses.

Apr 20, 2018

The Developer Spectrum

A playful taxonomy of developer archetypes represented by different colored lemurs and their programming philosophies.

Apr 15, 2018

For want of Pattern Matching in Ruby — The Creation of Qo

The story behind creating Qo, a Ruby gem that brings pattern matching and fluent querying using triple equals.

Dec 02, 2017

New in Enumerable — Triple Equals Predicates

Exploring a Ruby proposal to add triple-equals predicate methods to Enumerable for more expressive filtering.

Oct 17, 2017

Reducing Enumerable — Sorting and State

Implementing sorting and stateful Enumerable functions using reduce, including quick sort and group_by.

Oct 16, 2017

Abusing Hash Constructors

Exploring the lesser-known features of Hash constructors in Ruby, from default values to block-based initialization.

Oct 16, 2017

Reducing Enumerable — No-Op and Boolean

Continuing the reduce series with no-op and boolean Enumerable functions implemented in terms of reduce.

Oct 16, 2017

Reducing Enumerable — The Basics

Every Enumerable method can be implemented with reduce. A beginner-friendly introduction to this powerful concept.

Oct 16, 2017

Triple Equals Black Magic

A deep dive into Ruby's triple equals operator and the surprising things you can do with it.