Level up your engineering skills

Engineering is the core of any technology organization, here are resources dedicated to helping you and your team be more effective programmers, testers, architects and engineers.

Pairing with Privilege

Pair programming is most effective when each person in a pair is able to contribute, but this can be trickier than you would think. There are all sorts of power dynamics that emerge in pair programming, and these power dynamics are directly related to ally skills and inclusion.

Want to help your team more effectively understand how differences in privilege impact how to pair? Let us know and we'll set up a time!





Real World Refactoring

Have you ever found yourself needing to implement a new feature, but unlike previous feature requests, this one gets all awkward when you try to work it into your existing codebase? When this happens, you know you need to refactor, but it's not clear the best way to do so -- or how to refactor without losing several days to it.

Want to provide your team with some real-world refactoring training? Let us know and we'll set up a time!





Technical Coaching

Your team is bright and engaged, but requires active supervision from you to keep the ball rolling. What if you had help to help them reach that next level? What would that free you to do?

We provide your team with the support it needs to build it's autonomy while meeting your organizations objectives.





Untangling Asynchronous JavaScript Free Email Course

Asynchronous programming, while powerful, has it's own set of challenges. In 4 emails, Betsy walks you through the philosphies, strategies and tactics that help wrangle existing asynchronous code and shows how to safely introduce asynchronous behavior.

Sign up for the free Untangling Asynchronous JavaScript Email Course





Untangling Asynchronous JavaScript

This 8 week course breaks down the philosphies strategies and tactics that help wrangle existing asynchronous code and shows how to safely introduce asynchronous behavior.

Pre-order the 8 week Untangling Asynchronous JavaScript eCourse

You can sign up for the free, 5-day Untangling Asynchronous JavaScript Email Course





Which Auth is Which?

Clearly communicate who's who and what they can do with a 8 page zine on authentication and authorization.

Download Which Auth Is Which!

Implementation Strategies for Integrating External Services Into Your Application

Modern software relies on external services to take responsibility for some aspect of the product's feature set. Learn how to integrate them in a manner that's appropriate for your context.

You deserve a porcini hunting guide

A friend recently learned how to forage for porcini mushrooms in the Sierras. Learning to spot the mushrooms is a lot like learning how to refactor code in a legacy context.

Metrics, Async/Await, and Really Big Hammers

Async/await is a _really shiny_ hammer. But what happens when we run into the wrong kind of nail?

Practical Empathy, or: How I Stopped Hating Pair Programming

Pairing works better for me nowadays because I realized that pairing is a programming skill. Just like for loops, code review, or domain modelling. And like any other skill, it can be taught and learned. People love or hate pair programming, and for good reason! It's a tough skill!

GraphQL and Rails - A Brief Introduction

While the marketing will tell you the concepts behind GraphQL are simple, a full GraphQL implementation is quite complex. Here are a few tips to help you learn to use GraphQL and Rails effectively together.

Embracing Uncomfortable Refactoring

Sometimes refactoring is fun. Sometimes refactoring feels therapeutic. Usually, those kinds of refactoring are the kinds we don't need.

A brief adventure in ActionMailer debugging

Are you making changes involving ActionMailer and hitting `(object doesn't support #inspect)`? Remember what `ActionMailer::Base.mail` is expected to return.