Builder & technologist
Hi, I'm Jake.
I build things with technology and write about what I learn along the way. This is my corner of the web — a place for my projects and the occasional blog post.
Projects
All projects →jstgtech.com — this site
A static blog and portfolio on Astro 7 + Tailwind 4, deployed to S3 + CloudFront with Terraform-managed infrastructure and full CI/CD.
AI content pipeline with human approval
GitHub Actions workflows where Claude researches and drafts blog posts daily, and nothing publishes until a human approves it in the CMS.
Serverless GitHub OAuth for Sveltia CMS
A stateless AWS Lambda that self-hosts the GitHub OAuth handshake for a git-based CMS — no third-party auth service, secrets in SSM.
Popular this week
All posts →Diagnosing and fixing Lambda cold starts that matter
A practitioner guide to measuring Lambda Init Duration, trimming package bloat, and deciding when provisioned concurrency is worth its always-on cost.
CI/CD for a static site: build, sync, and invalidate
How to structure a GitHub Actions pipeline that builds a static site, syncs it to S3 with correct cache headers, and invalidates CloudFront without overpaying.
The Capital One breach: an SSRF bug into 100M records
A misconfigured WAF and an SSRF bug let an attacker reach the AWS metadata service and steal role credentials — exposing 100M+ Capital One records.
Latest writing
All posts →Storm-0558: When a Stolen Signing Key Forges Any Token
A single stolen token-signing key let attackers mint valid cloud identities and read email in about 25 organizations. Root cause, blast radius, and what to do about your own keys.
CircleCI Breach: Stolen Session Cookies and Your CI Secrets
One infected engineer laptop, one stolen SSO session, and every customer secret in CircleCI was in play. What failed, the blast radius, and how to make CI secrets cheap to rotate.
The chalk/debug npm Compromise: Anatomy of a Package Hijack
One phished maintainer turned 18 ubiquitous npm packages into a crypto-stealing payload in about two hours. Here is how it worked and the build-pipeline controls that blunt it.
Explore
All posts →Tutorials
Step-by-step how-tos and deep dives.
- Cutting NAT gateway costs with VPC endpoints that actually help
- CI/CD for a static site: build, sync, and invalidate
- CloudFront invalidations without nuking your AWS bill
- Ditch IAM access keys: GitHub Actions OIDC to AWS
Spotlights
One AWS service or tool at a time.
- Service spotlight: Amazon Cognito user pools vs identity pools
- Service spotlight: Amazon Bedrock and its guardrails feature
- Service spotlight: Amazon EventBridge beyond Lambda glue
- Service spotlight: Amazon SQS queue depth, DLQs, and visibility
Security watch
CVEs, advisories, and what to do about them.
- Storm-0558: When a Stolen Signing Key Forges Any Token
- CircleCI Breach: Stolen Session Cookies and Your CI Secrets
- The chalk/debug npm Compromise: Anatomy of a Package Hijack
- Snowflake Customer Breaches: Why Passwords Without MFA Still Lose