The Zapier Engineering Blog
A blog about hacking, development workflow automation, and how to get things done with less work.
How We Automated Our Engineering Skills Test for Hundreds of Applicants
Implement an algorithm that computes a minimum spanning tree for a weighted undirected graph.
Don’t worry, we aren’t going to ask you a question like that. At Zapier, we think putting candidates through a crummy interview process is a poor way to assess them and doesn’t help us make Zapier...
A Place for Manualization in an Automated World
Editor’s note: We publish occasional guest posts on the Zapier Engineering Blog, like this one from Sunny Paris, CEO of NoCRM.io
For decades, programmers have been manually initiating automation. The perennial example is the trusty shell script, run from the command line at the moment it’s needed. When so much...
Webhooks for Productive Developers
Keeping it simple is usually the best course of action in most things. There are a bunch of problems that can be solved without your development environment. For the many cases that require moving data or alerting when data changes, webhook notifications are a useful pattern to reduce–and sometimes, eliminate–the...
The Technical Debt Behind Your Integrations Strategy
An integrations strategy promises to connect your software to all the other tools your customers use. Approached correctly, you can connect All The Things. But it’s not easy. With one or two integrations, maybe you can stay on top of the changes in just a handful of APIs. More...
Security Exploit Bounty Program
Closure of Public Bounty Program
As of 20 January 2022 we have closed our public bounty program in favour of a managed program through HackerOne. While our HackerOne program is not currently public, we still welcome submissions from security researchers! Please use the form linked below to submit through...
Decreasing RAM Usage by 40% Using jemalloc with Python & Celery
At Zapier, we're running hundreds of instances of Python and Celery, a distributed queue that helps us perform thousands of tasks per second. With that kind of load, the RAM usage has become a point of contention for us.
To process all the activity within our service, we run...
Minimize Downtime for MySQL Upgrades: How to Work Around RDS Limitations
If you've worked on a web application backed by a relational database, you will understand how frequently the underlying schema changes. You might add or remove columns, change the type of existing columns, or add new indices as your business evolves.
While modern ORMs make such schema changes fairly simple,...
Thinking Fast and Estimating Wrong
Software estimates are fundamentally flawed. I've always intuitively known this, but a year ago, I did a little experiment inside Zapier to prove it. Now when I say "prove," I don't mean full-on lab coats, large population, double-blind, scientific study. So please don't beat me up too much about my...
The Developer-Friendly Way to Change Your API Auth
During the lengthy history of public-facing APIs on the Internet, the process of requiring a user's authorization has progressed through a variety of methods. It's great when an API provider supports a newer (and hopefully better) authorization method, but deprecating the older method sometimes leaves the existing users and integrations...
How Zapier Drives Upgrades for Autopilot
Welcome to our series of case studies about our partners. This month, we sat down with the team behind marketing automation software Autopilot to learn about how Zapier has impacted their business.
Read on to learn more or jump ahead to learn how the Autopilot team increased upgrades by: