Blog Posts

Two Months In: Notes from a First-Time SaaS Founder

Trying to be a real first-time SaaS founder has been interesting over the past two months. Here's what I've learned so far building Vizzly—ship early, use AI as an enabler, embrace cold outreach, and why indie SaaS actually feels possible.

Vizzly vs. The Visual Testing Status Quo

I spent 4 years at Percy learning what's broken about visual testing. Vizzly is my fix: real screenshots from your tests, team-based pricing, and actual designer-developer collaboration built in

Hello Tornadic

Tornadic is a new community-driven platform for exploring tornado history, radar loops, and storm data—all in one place. Built for weather nerds, storm chasers, and the tornado-curious alike.

Introducing the Ghost Digest Generator Action

If you’re a Ghost blog user like me, you might have noticed a gap: there’s no built-in way to generate digests of your posts. I was surprised to find this missing feature, especially since regular rou ...

Bronny James: A Victim of His Father’s Success

Bronny James’ selection by the Lakers might seem like nepotism, but using the 55th pick, which rarely yields successful players, makes it an okay move. However, his father’s fame brings undue pressure and media scrutiny, impacting Bronny’s early career.

Does your code deserve the refactor?

We often hear the story of someone building something quickly that becomes popular, only to be embarrassed by the source code's appearance. More often than not, these are small side projects designed to solve a problem...

Embracing RYE: Repeat Yourself Enough

DRY (Don’t Repeat Yourself) is often seen as a golden rule. However, adhering too strictly to DRY can lead to premature abstractions that complicate your codebase. Embracing RYE (Repeat Yourself Enough) allows repetition until a clear, beneficial pattern emerges...

Streamlined Screenshot Reviews with GitHub Rich Diffs

When you're working on UI testing, reviewing screenshots as part of a (PR) can be a time-consuming and tedious process By using a test runner like Moonshiner to capture the screenshots and GitHub's built-in rich diff feature for code changes...

Tutorial: Visual testing for Gatsby and Netlify with Percy

As one of the most popular “static site” generators, the React-based Gatsby has been adopted by thousands of teams to create e-commerce websites, developer blogs, portfolios, and more. Gatsby is a robust framework t...

Announcing Percy’s GitHub Actions

We’re always looking for ways to make it easier for developers to get started with visual testing. That’s why we’re thrilled to release our new GitHub Actions on the heels of the recent general availability release. This...

Automatically shut off your Ender 3 after prints complete

I recently have been running longer prints that sometimes finish in the middle of the night (or day when I’m not around). Sometimes these prints would finish at 2am and I would hate for the printer to be left on until I w...

New Percy SDK: End-to-end visual testing with TestCafe

We’re excited to introduce our new TestCafe integration! TestCafe, the node.js end-to-end testing tool, provides a quick, free, and open-source way to test your web applications across browsers. As it’s gained popularity...

Your tests aren’t slow because of Karma (or the browser)

There’s been a trend I have been seeing around the front end world where folks are switching their test suites to use Jest over something like Karma and Mocha. Usually the main benefit that’s touted is speed 🏎💨 What...

My first few days with the Ender 3

It’s been a little while since I’ve written a non-technical blog post (or even a post that’s not related to work). They’re much easier to write 😆 My amazing wife bought me a 3D printer for Christmas this year (along...

Creating an Accessible Custom Checkbox

Native HTML controls work great up until you need to apply custom styling. It’s pretty difficult to style controls like selects, checkboxes, and radio buttons. That’s why people usually end up ditching the native controls...

Single Page Apps routers are broken

Currently, every major Single Page App’s (SPA) router is broken the second you install it (Ember, Angular, React/Preact/Vue.js, etc). Before we go much further, I want to make sure you know I’m not hating on SPAs. The opp...

Using Amazon Lambda to create a contact form

While Hurricane Harvey rains down on Texas I decided this would be a prefect time to build a contact form for a static HTML page that I need. At first I looked at services like FormKeep to send emails but I felt like it w...