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!

Lessons Learned from our First Real World Code Live Stream

Earlier this month, Betsy and I tried to live stream a pairing session and failed miserably. But! We had fun, so we had a retro and made a plan for how we can do better.

Real World Code Incident Report! How We Used the OODA Loop to Triage a Amazon RDS Cascade Failure for a Heroku-hosted Rails App

Notabli reached out to us the day after Christmas because their API was falling over, and I was bored. Isn't that what everyone uses the Holidays for? Triaging production issues for fun? Here's how we diagnosed and resolved the downtime by using the OODA loop!

Debugging a Race Condition in a Brittle Cypress Test Live on Stream on January 3rd, 2019

We asked what programming problems you would like watch be solved on stream in a real-world context. ~40% of you wanted to see us solve a race condition and another 30% wanted to see us solve a brittle JavaScript feature test. We're doing both!

Understanding Git: Configuration of Repositories and Remotes

Recently, a dev.to community member asked for someone to explain what's going on in their .git/config when they have GitHub and Heroku remotes. This article refines your mental model by providing a glimpse into the history of software configuration and version control, and using that to solve a real-world configuration problem.

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.