
The Product Manager’s Guide to Designing a Great Notification Experience
Notifications aren’t just messages—they’re a core part of your product experience. Learn how to design smarter, better-timed notifications that build trust, drive engagement, and keep users connected across every channel.

The Sub-prime Crisis of Notifications
There is a direct connection between all the unnecessary notifications you get on your phone and the sub-prime financial crisis of 2008: lack of accountability for bad behavior.

Build a Serverless Lie Detector that uses AI for Facial Recognition
When the Face API recognizes that one of our spies is being deceitful, we will use Courier to broadcast the identity of the mole to our spy network.

I Owned a Major Product Feature as a PM Intern
We wanted to learn more about Denis’ Courier internship experience, so we asked if he’d be willing to work on a writeup for us. Then what he came up with was so good, we thought it would be a great idea to share with all of you!

Building a Great UX Outside of your App
This article argues that there’s a more important user experience than the one inside your app.

Sending Secret Messages with the Courier API and Node.js
In this tutorial, we will be building a Node.js app that sends multi-channel notifications in morse code.

Build a WebAssembly Language for Fun and Profit: Code Generation
The final phase of our compiler is code generation. This phase takes the AST and converts it to a set of executable instructions. In our case, WebAssembly.

Build a WebAssembly Language for Fun and Profit: Parsing
In this post, we’ll cover the next phase of our compiler, parsing. Parsing is the portion of our compiler that takes the token stream generated by the lexer and converts it into an AST.

Build a WebAssembly Language for Fun and Profit: Lexing
I decided to create this guide and provide a simple overview designed to help get your feet wet in building languages and exploring the inner workings of WebAssembly (wasm).