I write about programming, cloud, databases and other such things.
Do's and Don'ts of Storing Large Trees in PostgreSQL
I have been operating a tree of millions of nodes in PostgreSQL. Here are some of the things I wish I knew before I started.
Rate Limiting Saves the (Sun)day
A spambot spammed our signup endpoint, causing our AWS SES account to be blocked. I implemented a fixed-window rate limiter in Node.js / TypeScript for Curveball to prevent the attack from happening again.
Shipping ECS logs to Mezmo (LogDNA) with AWS Firelens and Fluent Bit
Ship your AWS ECS Fargate logs directly to Mezmo using AWS Firelens and Fluent Bit, without going through CloudWatch Logs. This will save you a lot of money.
Next.js: You might want to use Vercel
This blog uses Next.js and used to be deployed on AWS Elastic Beanstalk. I have since migrated it over to Vercel. In this article, I explain why I migrated and why you too might want to consider Vercel.
Structuring Golang for AWS Lambda and API Gateway: Modular Monolith
Structuring a Golang project for deployment on AWS Lambda with API Gateway using AWS SAM to avoid serverless copy-paste everywhere.
Using AWS Parameter Store with AWS Lambda
I go over how we can read values from AWS Parameter Store in an AWS Lambda function with a code example in Golang.
Consuming a DynamoDB Stream without AWS Lambda
Tutorial on writing our own DynamoDB Stream consumer using the low-level DynamoDB Stream APIs without using AWS Lambda triggers or the Kinesis adapter.
Go got generics
Go 1.18 is about to come out and bring generics to Go. No more passing interface{} all over the place for no good reason. This article is a quick introduction to generics in Go for the noobs out there.
My domain was suspended
AWS Route 53 sends you Nigerian Prince spammy-looking emails and suspends your website if you don't click the links in them. My domain was suspended. Let's reflect on what went wrong.
Building a hierarchical geo search for remote jobs
An in-depth look at the database design of a hierarchical geographical search similar to LinkedIn's remote job search feature.
Modeling Hierarchical Tree Data in PostgreSQL
An introduction to storing hierarchical tree and graph data structures in a PostgreSQL database, using recursive CTE, ltree materialized paths and other schema design techniques.
Deploying to AWS Elastic Beanstalk with GitHub Actions
This tutorial walks you through setting up a minimal CI/CD pipeline for an AWS Elastic Beanstalk app using GitHub Actions.
Deploying a Next.js app with Docker and AWS Elastic Beanstalk
An in-depth walkthrough on deploying a Next.js app with Docker and AWS Elastic Beanstalk, from Dockerizing Next.js to going live.
How I built my blog with Next.js, TypeScript, MDX, Tailwind
We walk through how I built this blog, going over the design and organization of the project and how Next.js, TypeScript and MDX come together in this blog that you are reading.