Build. Document. Share.

When we work on a new project, we document what we learn along the way. This blog is our way to share what we’ve found valuable in designing and building software over the years.

The Echobind Blog

Engineering

Lessons and learnings from the real-world software development we do daily.

Data Validation and Error Handling Best Practices

Data Validation and Error Handling Best Practices

Cully Larson
March 21, 2023
Rails Scopes: Create Faster, Cleaner Queries

Rails Scopes: Create Faster, Cleaner Queries

Deloris Thompson
February 15, 2023
‘Metaprogramming’ Filters w/ Rails-GraphQL

‘Metaprogramming’ Filters w/ Rails-GraphQL

Matt Thompson
January 18, 2023
MVC flavors with Prisma Middleware and Extensions

MVC flavors with Prisma Middleware and Extensions

Matt Thompson
January 12, 2023
Typescript Generics

Typescript Generics

Jennifer Watanabe
January 11, 2023
An A-Frame State Management Example

An A-Frame State Management Example

Samantha Shackelford
January 6, 2023
Test Stripe Subscriptions with Test Clocks

Test Stripe Subscriptions with Test Clocks

Alex Anderson
January 5, 2023
Instant Site Updates with On-Demand Revalidation and Directus

Instant Site Updates with On-Demand Revalidation and Directus

Alex Anderson
December 15, 2022
Playwright with Next-Auth and PrismaOverview

Playwright with Next-Auth and PrismaOverview

Matt Thompson
December 5, 2022
React vs React Native: How Different Are They, Really?

React vs React Native: How Different Are They, Really?

Mike Cavaliere
December 1, 2022
Conditionally Render Fields Using React Hook Form

Conditionally Render Fields Using React Hook Form

Preston Kelly
November 15, 2022
Why we ditched GraphQL for tRPC

Why we ditched GraphQL for tRPC

Alex Anderson
November 8, 2022
Book Review: Ask Your Developer by Jeff Lawson

Book Review: Ask Your Developer by Jeff Lawson

Claire Surma
November 3, 2022
What’s the difference between artifacts and cache in GitHub Actions?

What’s the difference between artifacts and cache in GitHub Actions?

Cully Larson
October 27, 2022
Why Our Team is Stripe Certified; Yes, Including Non-Developers

Why Our Team is Stripe Certified; Yes, Including Non-Developers

Mike Cavaliere
October 4, 2022
Slicing TypeScript Literal Strings

Slicing TypeScript Literal Strings

Alex Anderson
September 29, 2022
Getting Started with Next.js, GraphQL and React Query (1/3)

Getting Started with Next.js, GraphQL and React Query (1/3)

Preston Kelly
September 28, 2022
Using the currentColor CSS Property with SVG

Using the currentColor CSS Property with SVG

Alex Anderson
September 26, 2022
Make Prisma Ignore a Migration Change

Make Prisma Ignore a Migration Change

Cully Larson
September 23, 2022
Dynamic CMS-driven Redirects with Next.js

Dynamic CMS-driven Redirects with Next.js

Alex Anderson
September 22, 2022
Running Cypress tests in parallel in GitHub Actions without Cypress Dashboard

Running Cypress tests in parallel in GitHub Actions without Cypress Dashboard

Cully Larson
September 16, 2022
CSS Custom Properties for Stacked Transforms

CSS Custom Properties for Stacked Transforms

Alex Anderson
September 14, 2022
Finding flaky Cypress tests by simulating a slow network

Finding flaky Cypress tests by simulating a slow network

Cully Larson
September 9, 2022
Echobind Ships Expo TypeScript Template 2.0.0

Echobind Ships Expo TypeScript Template 2.0.0

Jenn Robison
August 23, 2022
My Journey In Tech

My Journey In Tech

Alex Silcox
August 11, 2022
Bison Release 1.12.0

Bison Release 1.12.0

Kishan Gajera
August 9, 2022
Benefits of Implementing TypeScript Early

Benefits of Implementing TypeScript Early

Mariah Grey
June 30, 2022
Spring Peaks at Echobind

Spring Peaks at Echobind

Krystalyn Bauer
June 8, 2022
Custom React Hook Guide: Build a Kanye Quote app with React Native

Custom React Hook Guide: Build a Kanye Quote app with React Native

Mickey Martinez
May 19, 2022
Out and About at React Miami

Out and About at React Miami

Echobind Team
April 28, 2022
Reduce repeated code in Jest tests with it.each

Reduce repeated code in Jest tests with it.each

Kishan Gajera
March 31, 2022
TypeScript - Generic Types

TypeScript - Generic Types

Dominic Sherman
March 30, 2022
New ECMAScript Features to Help Get You Through Your Day

New ECMAScript Features to Help Get You Through Your Day

Cory Bosselmann
March 29, 2022
Inspiring Kids to Pursue a Future in Tech

Inspiring Kids to Pursue a Future in Tech

Jennifer Watanabe
March 28, 2022
Safely Alter Postgres Columns with USING

Safely Alter Postgres Columns with USING

Cully Larson
March 25, 2022
How To Get Your iOS App Into TestFlight and Test It, for Xcode 13

How To Get Your iOS App Into TestFlight and Test It, for Xcode 13

David Barkman
January 20, 2022
Creating Custom Icon Fonts in React Native and Expo

Creating Custom Icon Fonts in React Native and Expo

Alex Silcox
January 17, 2022
SectionedFetchRequest, sweet, sweet automagic goodness!

SectionedFetchRequest, sweet, sweet automagic goodness!

Echobind Team
January 7, 2022
Binary trees, what are they?

Binary trees, what are they?

Usman Ibrahim
November 29, 2021
Bison Release 1.11.0

Bison Release 1.11.0

Kishan Gajera
November 8, 2021
Developing an Independent Watch App

Developing an Independent Watch App

David Barkman
October 21, 2021
React Hook Form for React Native

React Hook Form for React Native

Alex Silcox
September 9, 2021
Converting Javascript to TypeScript with React Native

Converting Javascript to TypeScript with React Native

Jennifer Watanabe
September 2, 2021
Using NextAuth.js with Bison

Using NextAuth.js with Bison

Kishan Gajera
August 19, 2021
Swift Concurrency

Swift Concurrency

David Barkman
August 12, 2021
Alexa Skills

Alexa Skills

Deloris Thompson
July 16, 2021
My Journey to Engineering

My Journey to Engineering

Paul Buendia
July 8, 2021
Automated React-Native Release Tagging Using GitHub Actions

Automated React-Native Release Tagging Using GitHub Actions

Dominic Sherman
July 1, 2021
An Intro to Web3 Development

An Intro to Web3 Development

Dominic Sherman
June 17, 2021
SwiftUI, is it ready?

SwiftUI, is it ready?

Echobind Team
June 10, 2021
The Plan

The Plan

Mariah Grey
May 27, 2021
NextAuth.js Intro [3 of 3]: Adding Access Control

NextAuth.js Intro [3 of 3]: Adding Access Control

Mike Cavaliere
May 20, 2021
An Introduction to Ethereum

An Introduction to Ethereum

Dominic Sherman
May 13, 2021
Learning Rails after Bison’s JAMstack

Learning Rails after Bison’s JAMstack

Kim Wilkes
May 6, 2021
Why Should I Write Clean Code?

Why Should I Write Clean Code?

Mariah Grey
April 29, 2021
Variety Is the Spice of (Agency) Life

Variety Is the Spice of (Agency) Life

Jenn Robison
April 22, 2021
Docker Compose DB

Docker Compose DB

Matt Thompson
April 15, 2021
Revelio: Defer and Lazy-Load with the Intersection Observer API

Revelio: Defer and Lazy-Load with the Intersection Observer API

Deloris Thompson
April 8, 2021
React Native 0.64

React Native 0.64

Dominic Sherman
April 1, 2021
NextAuth.js Intro [2 of 3]: Magic Link Email Authentication

NextAuth.js Intro [2 of 3]: Magic Link Email Authentication

Mike Cavaliere
March 25, 2021
Measure Twice Code Once

Measure Twice Code Once

Isaac Myman
March 17, 2021
NextAuth.js Intro [1 of 3]: One-Click Signup

NextAuth.js Intro [1 of 3]: One-Click Signup

Mike Cavaliere
March 11, 2021
From Teaching to Tech

From Teaching to Tech

Kim Wilkes
March 4, 2021
Creating Your Own JAMStack Blog in No Time with Next.js and Bison

Creating Your Own JAMStack Blog in No Time with Next.js and Bison

Mike Cavaliere
October 19, 2020
Choosing Your Path

Choosing Your Path

Jenn Robison
September 18, 2020
A Guide for RESTful APIs with Node, Sequelize & Postgres

A Guide for RESTful APIs with Node, Sequelize & Postgres

Mickey Martinez
September 1, 2020
Next-Level Mobile App Debugging with a Network Proxy

Next-Level Mobile App Debugging with a Network Proxy

Ryan Atkinson
May 21, 2020
Leveling Up

Leveling Up

Alvin Crespo
May 19, 2020
COVID-Q: Technology Overview

COVID-Q: Technology Overview

Chris Ball
May 12, 2020
Not Just a Code Monkey

Not Just a Code Monkey

Jenn Robison
May 11, 2020
Hyper Focused → Hyper Productive

Hyper Focused → Hyper Productive

Matt Thompson
April 28, 2020
GraphQL and Typescript: Revisiting an Echobind Case Study

GraphQL and Typescript: Revisiting an Echobind Case Study

Ryan Atkinson
April 27, 2020
3 Attributes of Good Embedded Software Consultants

3 Attributes of Good Embedded Software Consultants

Mike Cavaliere
April 23, 2020
How to Avoid Response Bias in Surveys

How to Avoid Response Bias in Surveys

Anne Tolmie
April 20, 2020
Listen for the Call

Listen for the Call

Jenn Robison
April 2, 2020
Feature Flipping with Rails and Rollout

Feature Flipping with Rails and Rollout

Gabriel Martin
March 24, 2020
Remote Workers: Help Your Neighbor

Remote Workers: Help Your Neighbor

Matt Thompson
March 17, 2020
Getting to Yes Faster

Getting to Yes Faster

Anne Tolmie
March 3, 2020
Use These 3 Things to Add Value to Your App in 5 Minutes or Less

Use These 3 Things to Add Value to Your App in 5 Minutes or Less

Echobind Team
February 18, 2020
React Native Fix: Jumping Screens in the React-Navigation TabNavigator

React Native Fix: Jumping Screens in the React-Navigation TabNavigator

Ryan Atkinson
February 17, 2020
How to Run React Native Apps on a Specific Device in the iOS Simulator

How to Run React Native Apps on a Specific Device in the iOS Simulator

Josh Buchea
February 10, 2020
Why Top-Notch Soft Skills Are Vital for Software Consultants

Why Top-Notch Soft Skills Are Vital for Software Consultants

Mike Cavaliere
February 7, 2020
React Native iOS Splash Screen with Storyboard

React Native iOS Splash Screen with Storyboard

Jenn Robison
February 5, 2020
Yes, Your Team Needs Pull Request Templates

Yes, Your Team Needs Pull Request Templates

Echobind Team
January 29, 2020
Optimizing your Android Build for React Native

Optimizing your Android Build for React Native

Jenn Robison
January 21, 2020
Building a Social Media Image Generator

Building a Social Media Image Generator

Joe Previte
January 14, 2020
Ruby on Rails — Importing Data from an Excel File

Ruby on Rails — Importing Data from an Excel File

Gabriel Martin
January 13, 2020
What to Ask When Hiring a React Native Consultancy

What to Ask When Hiring a React Native Consultancy

Mike Cavaliere
January 10, 2020
Up and Running — Next.js and TypeORM

Up and Running — Next.js and TypeORM

Matt Thompson
January 9, 2020
Convert a React Component to TypeScript

Convert a React Component to TypeScript

Joe Previte
January 7, 2020
How to Integrate Ruby on Rails with Box.com in 2020 (Part 1)

How to Integrate Ruby on Rails with Box.com in 2020 (Part 1)

Kory Tegman
January 3, 2020
Finding Joy In Automated Tests

Finding Joy In Automated Tests

Jenn Robison
January 2, 2020
Static Sites without the Static

Static Sites without the Static

Chris Ball
December 31, 2019
Zero to Dark Mode in React Native

Zero to Dark Mode in React Native

Josh Buchea
December 13, 2019
React with TypeScript: Components as Function Declarations vs. Function Expressions

React with TypeScript: Components as Function Declarations vs. Function Expressions

Joe Previte
December 13, 2019
Clear the Clutter with Fragments

Clear the Clutter with Fragments

Jenn Robison
December 12, 2019
Styling with :focus-within

Styling with :focus-within

Echobind Team
December 9, 2019
Reducing Costly Renders During Gesture Animations in React Native

Reducing Costly Renders During Gesture Animations in React Native

Isaiah Grey
December 9, 2019
Tides of the Tailwind

Tides of the Tailwind

Kory Tegman
December 5, 2019
Advantages Of Dark Theme User Interfaces

Advantages Of Dark Theme User Interfaces

Michael Dang
December 4, 2019
Up and Running: ZEIT Now Environments

Up and Running: ZEIT Now Environments

Matt Thompson
December 1, 2019
The ROI of Self-Directed Investment Time for Software Engineers

The ROI of Self-Directed Investment Time for Software Engineers

Mike Cavaliere
November 27, 2019
The Business Value of (& Precautions for) React Native

The Business Value of (& Precautions for) React Native

Mike Cavaliere
November 26, 2019
A Comparison of Three Methods for Styling Components in React Native

A Comparison of Three Methods for Styling Components in React Native

Ryan Atkinson
November 19, 2019
AllThingsOpen 2019 Recap

AllThingsOpen 2019 Recap

Joe Previte
November 12, 2019
Reinvesting in Echobind

Reinvesting in Echobind

Michael Yared
October 22, 2019
Rolling Your Team RPG Style

Rolling Your Team RPG Style

Matt Thompson
October 21, 2019
This Month We Learned - September 2019

This Month We Learned - September 2019

Anne Tolmie
October 19, 2019
How to Mock Using Jest.spyOn (Part 2)

How to Mock Using Jest.spyOn (Part 2)

Jeffrey Zhen
October 16, 2019
8 Business Reasons to Adopt GraphQL and Apollo Server

8 Business Reasons to Adopt GraphQL and Apollo Server

Mike Cavaliere
October 15, 2019
A Reflection: Building a GraphQL API with Nest.js

A Reflection: Building a GraphQL API with Nest.js

Joe Previte
October 8, 2019
GraphQL — the Dev Edition

GraphQL — the Dev Edition

Matt Thompson
September 26, 2019
This Month We Learned - August 2019

This Month We Learned - August 2019

Anne Tolmie
September 6, 2019
Spotlight Series : Mike Cavaliere

Spotlight Series : Mike Cavaliere

Echobind Team
August 27, 2019
Becoming More Proficient on the Back-End (Part 4)

Becoming More Proficient on the Back-End (Part 4)

Joe Previte
August 23, 2019
Becoming More Proficient on the Back-End (Part 3)

Becoming More Proficient on the Back-End (Part 3)

Joe Previte
August 16, 2019
Becoming More Proficient on the Back-End (Part 2)

Becoming More Proficient on the Back-End (Part 2)

Joe Previte
August 15, 2019
Becoming More Proficient on the Back-End (Part 1)

Becoming More Proficient on the Back-End (Part 1)

Joe Previte
July 29, 2019
Supporting the next generation of developers through volunteering

Supporting the next generation of developers through volunteering

JC Hiatt
May 16, 2019
How to Write Functional Tests in React (Part 1)

How to Write Functional Tests in React (Part 1)

Jeffrey Zhen
April 12, 2019
Software Development: A Woodworkers Perspective (Final)

Software Development: A Woodworkers Perspective (Final)

Matt Thompson
April 1, 2019
Software Development: A Woodworkers Perspective (Part 4)

Software Development: A Woodworkers Perspective (Part 4)

Matt Thompson
March 15, 2019
Software Development: A Woodworkers Perspective (Part 3)

Software Development: A Woodworkers Perspective (Part 3)

Matt Thompson
March 1, 2019
Software Development: A Woodworkers Perspective (Part 2)

Software Development: A Woodworkers Perspective (Part 2)

Matt Thompson
February 15, 2019
A Common Conditional Rendering Bug in React Native

A Common Conditional Rendering Bug in React Native

Ryan Atkinson
January 22, 2019
Lazy Loading Components in React

Lazy Loading Components in React

Jeffrey Zhen
January 22, 2019
Software Development: A Woodworkers Perspective (Part 1)

Software Development: A Woodworkers Perspective (Part 1)

Matt Thompson
January 14, 2019
Software Development: A Woodworkers Perspective

Software Development: A Woodworkers Perspective

Matt Thompson
January 1, 2019
What is this type?!

What is this type?!

Alvin Crespo
October 25, 2018
Automating CodePush deploys with Fastlane

Automating CodePush deploys with Fastlane

Chris Ball
August 27, 2018
A 12-Factor Approach to Environment-Specific Builds in React Native

A 12-Factor Approach to Environment-Specific Builds in React Native

Chris Ball
August 7, 2018
Integrating Prettier + ESLint + Airbnb Style Guide in VSCode

Integrating Prettier + ESLint + Airbnb Style Guide in VSCode

Jeffrey Zhen
June 20, 2018
Productive Performance for Engineers

Productive Performance for Engineers

Jeffrey Zhen
June 18, 2018
Essential Customizations for VSCode

Essential Customizations for VSCode

Jeffrey Zhen
June 13, 2018
Improve Developer Productivity with Generators and Team Conventions

Improve Developer Productivity with Generators and Team Conventions

Chris Ball
May 8, 2018
GDPR Compliance For App Developers

GDPR Compliance For App Developers

Michael Yared
April 28, 2018
The Secret Art of Effective Developer Mentorship

The Secret Art of Effective Developer Mentorship

Ryan Atkinson
April 26, 2018
Thanks for 2017!

Thanks for 2017!

Chris Ball
January 9, 2018
How to Engage a Community

How to Engage a Community

Robert Beene
December 29, 2017
Happy Holidays

Happy Holidays

Echobind Team
December 20, 2017
Pressure Indicating UI

Pressure Indicating UI

Dave Wasmer
December 19, 2017
10 Questions to Ask Around Safeguarding Patient Data

10 Questions to Ask Around Safeguarding Patient Data

Michael Yared
December 18, 2017
The Graphcool Framework: A path to instant GraphQL greatness

The Graphcool Framework: A path to instant GraphQL greatness

Chris Ball
November 8, 2017
Understanding HIPAA Compliance for Apps

Understanding HIPAA Compliance for Apps

Michael Yared
October 31, 2017
Headless Browser testing with CircleCI 2.0

Headless Browser testing with CircleCI 2.0

Alvin Crespo
September 25, 2017
Betting on React Native

Betting on React Native

Chris Ball
February 16, 2017
How to Easily Create Custom Skills for Alexa

How to Easily Create Custom Skills for Alexa

Chris Power
January 14, 2017
Why Your Company Should Contribute to Open Source

Why Your Company Should Contribute to Open Source

Robert Beene
January 9, 2017
Thanks for 2016!

Thanks for 2016!

Chris Ball
January 2, 2017
Working Together

Working Together

Michael Yared
December 27, 2016
What Is JWT and Why Does It Matter

What Is JWT and Why Does It Matter

Robert Beene
November 30, 2016
Elixir & Phoenix Conf 2016 Recap — For the Love of Programming

Elixir & Phoenix Conf 2016 Recap — For the Love of Programming

Robert Beene
September 8, 2016
Leveling Up With Echobind

Leveling Up With Echobind

Robert Beene
May 5, 2016
Recap of Ruby on Ales 2016

Recap of Ruby on Ales 2016

Michael Yared
April 10, 2016
The Real Costs of Not Keeping Software Current

The Real Costs of Not Keeping Software Current

Michael Yared
December 13, 2015

Interested in working with us?

Give us some details about your project, and our team will be in touch with how we can help.