Most Gousto customers choose to get their recipe boxes on a subscription basis: every week they choose their recipes from our menu, and we pick, pack and deliver them to their door. To give customers as much flexibility as possible, we let customers edit their box right up until it’s sent to one of our factories for picking.

The (simplified) life of a Gousto box
The (simplified) life of a Gousto box
The (simplified) life of a Gousto box

This process works really well most of the time. But what happens when a customer’s payment fails?

It’s natural that a proportion of payments will fail — customers’ cards have changed, or there aren’t enough funds in the account. At Gousto we had a natural failed payment rate of around 2% for existing customers.

Until recently we only had two ways of handling a failed payment. First, we could send out the box anyway and put a debit on the customer’s account. Alternatively, we could just cancel the customer’s order. …


This article is part of a collection of my own notes on AWS that might be useful to others.

IAM (Identity and Access Management) contains all the security tools for an AWS account, including:

  • Users
  • Groups
  • Roles

An AWS (Amazon Web Services) root account should never be used besides in initial setup. It as unlimited permissions so it’s much more secure to use a user.

IAM is a globally-scoped service.

Users

Users are usually respresent a physical person. Think of users as user accounts.

Groups

Groups contain users. They can align with business functions, e.g. …


This article is part of a collection of my own informal notes on AWS that might be useful to others.

As a global cloud provider, AWS (Amazon Web Services) has a number of places in which it has datacentres. These are known as regions.

AWS has regions all around the world, and each has a unique code — e.g. eu-east-1, us-east-2.

A region is essentially a cluster of datacentres.

Most AWS services are region-scoped, i.e. resources provisioned in one region aren’t necessarily replicated or related to resources in another region. However a small number of services, e.g. …


This article is part of a collection of my own informal notes on AWS that might be useful to others.

This information is correct at the time of publishing. Things change quickly!

Image for post
Image for post
The most interesting and appropriate stock image I could find.

What is DNS?

The best analogy I’ve heard for understanding DNS is that of a phone book. IP addresses are used to identify computers on a network, and DNS maps those IP addresses to human-friendly domain names — .e.g. example.com

Domain Registration

There are lots of registrars available for domain registration, including AWS. You can purchase a domain from the Route 53 service in the AWS console.

By default there is a limit of 50 domains that can be managed through Route 53, but you can increase this by contacting Amazon.


This article is part of a collection of my own informal notes on AWS that might be useful to others.

Amazon offers a range of database services. The AWS relational database service is known as RDS (Relational Database Service), and the no-SQL service is called DynamoDB. AWS also offers Redshift for data warehousing and Elasticache for cache storage.

Filling cabinet.
Filling cabinet.
Photo by Jan Kolar / VUI Designer on Unsplash

RDS

RDS offers various systems for your database. I won’t run through all of them, but they include popular relational solutions such as MySQL, PostgreSQL, and Amazon’s proprietary Aurora.

Two key selling points of RDS are multi-AZ and read-replicas. …


Here at Gousto, quite a few of our codebases are written in Python — and the number is growing all the time. At our last Python Guild meeting, we realised it would be great if we could have some more consistency in formatting across our projects.

We discussed various options and ultimately settled on Black — an opinionated, uncompromising code formatter for Python.

Why Black?

Let’s be honest: while we might be tempted to hold extensive discussions about how best to format our code, it’s not the best use of our time. Black allows us to offload a lot of that debate about what the optimal code format should be, and lets us focus on the code itself. …

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store