RSS Amplifier

Blog

Andrew Gilliland

A software engineer writing about AWS, Python, and building things on the web.

andrewgilliland.devRSS feed ↗50 posts

Latest posts

Authorizer Lambdas with Cognito and API Gateway

Cognito can tell you who a user is, but it cannot answer what they are allowed to do. An authorizer Lambda gives you one place to evaluate permissions before a request reaches your backend, with Cognito for identity and a separate permission source for authorization.

Build an Asset CDN on AWS with CDK (S3 + CloudFront + Route53 + ACM)

Build a fast asset pipeline with a private S3 origin, CloudFront caching, custom DNS, and HTTPS certificates using AWS CDK.

Real-Time Image Optimization with Lambda on S3 Upload

Automatically optimize images the moment they're uploaded to S3 using Lambda functions triggered by S3 events. Perfect for user-generated content and dynamic workflows.

Intro to Amazon SQS

SQS is AWS's managed message queue service. Messages go in, consumers pull them out, and the queue handles everything in between. Here's what it is, when to use it, and how to implement the common patterns.

What Is an Agent Harness?

The model is just token prediction. An agent harness is everything else - the loop, the tools, the memory, and the safety controls that make a model actually useful.

How to Build a Permission Gate Extension for Pi

Pi is a minimal, extensible coding agent. This article walks through building a permission gate extension that intercepts dangerous bash commands before they run.

Hosting TanStack Start on AWS

How to deploy a TanStack Start SSR app to AWS using Lambda or ECS Fargate, wired together with CloudFront, S3, and CDK.

Autonomous Test Generation with Playwright and Claude

How to build an AI agent that crawls your site, observes each page, and writes Playwright spec files - without you authoring a single selector.

AI-Powered E2E Testing with Playwright and Claude

How to use Claude's API alongside Playwright to write semantic smoke tests that reason about page state instead of matching brittle selectors.

Intro to Machine Learning with scikit-learn

Machine learning sounds intimidating, but scikit-learn makes it approachable. Here's how to train your first model in Python.

Reducing Alert Noise with CloudWatch Composite Alarms

When your database goes down, every service that depends on it starts throwing errors. Composite alarms let you express alarm logic so you get one page per root cause, not one per symptom.

Cleaning and Exploring Data with Python

Real data is messy. Here's how to handle missing values, fix types, and explore datasets before doing anything useful with them.

Building Data Pipelines with Step Functions and Lambda

When one Lambda isn't enough, Step Functions lets you orchestrate multi-step workflows with retries, error handling, and a full execution history built in.

Securing a Lambda API with Lambda Authorizers

The Events API is built and fast. Now POST /events and DELETE /events/{id} need auth. Lambda authorizers let you validate any token format from any issuer before a request ever reaches your handler.

Structuring a Lambda API for Performance

The architecture decisions that make a Lambda-backed API fast - per-route function layout, lean handlers, per-function dependencies, ARM64, and CDK patterns that compound into short cold starts.

Lambda Cold Starts

What happens during a Lambda cold start, how to measure it with X-Ray and CloudWatch Logs Insights, and how to reduce it with lean packages, init code patterns, and provisioned concurrency.

Lambda with RDS Proxy

Why Lambda exhausts RDS connection limits under load, and how to fix it with RDS Proxy - including CDK setup, IAM auth, and connection reuse.

E2E Testing with Playwright

How to add end-to-end tests to a React app with Playwright, including checkout flow testing for e-commerce, and run them automatically on every pull request.

Getting Started with Pandas for Data Science

Pandas is Python's answer to working with tabular data. Here's a practical intro for developers who've never touched a DataFrame.

The Working Dad Workout Program

Finding time to work out with a full-time job and kids is hard. Here's the program that actually works.

Environment Variables, Secrets, and SSM Parameter Store

Hardcoded config doesn't scale and hardcoded secrets are a security incident waiting to happen. Here's how to manage environment variables, secrets, and configuration for Lambda functions on AWS - from local development to production.

No Bastion Required: Accessing Private RDS with SSM Port Forwarding

RDS in a private subnet doesn't need a bastion host or an open port 22. AWS Systems Manager port forwarding creates an encrypted tunnel from your laptop to a private endpoint - no public IP, no SSH key management required. Here's how to set it up with CDK.

Intro to Amazon EC2

EC2 is AWS's virtual machine service - rent compute capacity in the cloud, pay by the hour. Here's what it is, when to use it over serverless options, the configuration knobs that matter, and how to provision it with CDK.

Understanding the Intersection Observer API

The Intersection Observer API lets you detect when elements enter or leave the viewport - without scroll event listeners. Here's what it solves, how it works, and real patterns you can use today.

Intro to Amazon SNS

SNS is AWS's pub/sub messaging service. One message in, many subscribers notified. Here's what it is, when to use it, and how to implement the common patterns.

CloudWatch Alarms with SNS, Email, and Slack

CloudWatch Alarms don't notify anyone on their own. Here's how to wire them to SNS for email alerts and a Lambda function for Slack notifications.

Monitoring and Observability on AWS

Your code is deployed. Now make sure it stays healthy. Here's how to monitor Lambda functions with CloudWatch.

Continuous Deployment to AWS with GitHub Actions and OIDC

How to set up keyless, secure continuous deployment to AWS using GitHub Actions and OIDC - and why it beats AWS-native CI/CD tools for most teams.

Python Type Hints for TypeScript Developers

You already think in types from TypeScript. Here's how to bring that mindset to Python with type hints, mypy, and Pydantic.

Python for JavaScript Developers

A side-by-side look at Python through the lens of JavaScript. If you know JS, you're closer to writing Python than you think.

Intro to AWS CDK

AWS CDK lets you define cloud infrastructure with real code instead of YAML. Here's how to get started with TypeScript.

Your First AWS Lambda Function with Python

Write, test, and deploy a Python Lambda function from scratch. No prior AWS experience needed.

Infrastructure as Code: CDK vs CloudFormation

CloudFormation uses YAML. CDK uses TypeScript. Here's when to use each and why CDK feels like a superpower.

Building a REST API with API Gateway and Lambda

Wire up API Gateway to Lambda functions and build a serverless REST API using Python and CDK.

Intro to DynamoDB for Python Developers

DynamoDB is the serverless database that pairs naturally with Lambda. Here's how to use it from Python.

Intro to GitHub Actions

GitHub Actions is CI/CD built directly into GitHub. No external service to configure. Push code, merge a PR, cut a release - automation runs. Here's what it is, how workflows are structured, and real examples for the most common use cases.

Intro to Docker for Python and Lambda

When zip files aren't enough, container images let you package anything for Lambda. Here's how to use Docker with Python.

Setting Up SQLAlchemy Data Models with AWS Aurora

You have an Aurora database running in AWS. Now you need to get your schema into it. Here's how to define your data models with SQLAlchemy, manage migrations with Alembic, and run them against Aurora - step by step.

Amazon S3: What It Is, What It's For, and How to Deploy It with CDK

S3 is AWS's object storage service - store any file at any scale. Here's what it is, what it's built for, what it isn't, what it works with, and how to deploy it with CDK.

AWS Glossary - Networking, Serverless, Compute, and Databases

Definitions for the AWS services and concepts covered across the architecture articles on this site. VPCs, subnets, Lambda, API Gateway, EventBridge, SQS, Step Functions, RDS, Aurora, security groups, and everything in between.

AWS Lambda: What It Is, When to Use It, and How to Deploy It

Lambda is AWS's serverless compute service - run code without managing servers, pay only for what you use. Here's what it is, why it's worth knowing, when to reach for something else, and how to deploy it with CDK.

AWS RDS vs Aurora: Choosing the Right Managed Database

Both RDS and Aurora are managed relational databases, but they're built differently. Here's how to choose between them for a new project.

Three-Tier Architecture on AWS

The classic three-tier architecture - presentation, application, and data layers inside a VPC - is the foundation of most production AWS deployments. Here's how it works, how subnets and security groups enforce it, and how to deploy it with CDK.

Amazon EventBridge - Event-Driven Architecture on AWS

EventBridge is a serverless event bus that connects your applications with data from AWS services, SaaS apps, and custom sources. Learn what it is, the problems it solves, and how to implement it with CDK.

CI/CD for Lambda Functions with GitHub Actions

Stop running cdk deploy from your laptop. Set up a GitHub Actions pipeline to test and deploy your Lambda functions automatically.

uv Is the npm of Python

If you're a JavaScript developer curious about Python, uv makes the tooling feel familiar. Here's how it maps to what you already know.

Data Visualization with D3 and React

Build interactive data visualizations using D3.js and React. See live examples of bar charts, donut charts, and line charts you can embed directly in your content.

TypeScript Tips I Use Every Day

A handful of TypeScript patterns that have made my code more expressive, safer, and easier to refactor.

Why I Use Tailwind CSS

Tailwind CSS changed how I think about styling. Here's why utility-first CSS has become my default approach.

Getting Started with Astro

Astro is a modern web framework that lets you build fast, content-focused websites using your favorite UI components.