HealthKit + Celery on ECS, Part 3: Deploying Workers to Fargate
One Docker image, two ECS services, an SQS queue with IAM auth, and the Django settings crash that blocks every first Celery deploy.
One Docker image, two ECS services, an SQS queue with IAM auth, and the Django settings crash that blocks every first Celery deploy.
You can’t process Apple HealthKit data inline. Here’s why we needed Celery with SQS, how Redis fits in separately for caching, and the architecture that emer...
A visual deep-dive into running Celery workers as separate ECS containers — broker topology, task lifecycle, concurrency models, and the Beat scheduler gotcha.
Part 4 of building the AI assistant. This covers the most critical issue in health AI: preventing the model from making up data that doesn’t exist.
Part 3 of the series on building a women’s health AI assistant. This covers the system prompts, safety guardrails, and behavior control that make an AI agent...
This is the first in a series documenting how I built a women’s health AI assistant using AWS Strands SDK, Bedrock, and Django. The system handles personal h...
If you’re building multi-user AI agents with AWS Strands SDK, you’ll quickly hit a common problem: how do you bind tools to a specific user without passing u...
How I replaced inline URL citations with a token-based reference system that separates machine semantics from user-visible text — and why the old approach wa...
One Docker image, two ECS services, an SQS queue with IAM auth, and the Django settings crash that blocks every first Celery deploy.
A chunk-based import pipeline with SQS, dispatcher tasks that chain through the queue, fingerprint deduplication, and why we track batch state in PostgreSQL ...
You can’t process Apple HealthKit data inline. Here’s why we needed Celery with SQS, how Redis fits in separately for caching, and the architecture that emer...
A visual deep-dive into running Celery workers as separate ECS containers — broker topology, task lifecycle, concurrency models, and the Beat scheduler gotcha.
Part 4 of building the AI assistant. This covers the most critical issue in health AI: preventing the model from making up data that doesn’t exist.
Part 3 of the series on building a women’s health AI assistant. This covers the system prompts, safety guardrails, and behavior control that make an AI agent...
This is the first in a series documenting how I built a women’s health AI assistant using AWS Strands SDK, Bedrock, and Django. The system handles personal h...
If you’re building multi-user AI agents with AWS Strands SDK, you’ll quickly hit a common problem: how do you bind tools to a specific user without passing u...
Part 4 of building the AI assistant. This covers the most critical issue in health AI: preventing the model from making up data that doesn’t exist.
Part 3 of the series on building a women’s health AI assistant. This covers the system prompts, safety guardrails, and behavior control that make an AI agent...
This is the first in a series documenting how I built a women’s health AI assistant using AWS Strands SDK, Bedrock, and Django. The system handles personal h...
If you’re building multi-user AI agents with AWS Strands SDK, you’ll quickly hit a common problem: how do you bind tools to a specific user without passing u...
One Docker image, two ECS services, an SQS queue with IAM auth, and the Django settings crash that blocks every first Celery deploy.
A chunk-based import pipeline with SQS, dispatcher tasks that chain through the queue, fingerprint deduplication, and why we track batch state in PostgreSQL ...
You can’t process Apple HealthKit data inline. Here’s why we needed Celery with SQS, how Redis fits in separately for caching, and the architecture that emer...
A visual deep-dive into running Celery workers as separate ECS containers — broker topology, task lifecycle, concurrency models, and the Beat scheduler gotcha.
How I replaced inline URL citations with a token-based reference system that separates machine semantics from user-visible text — and why the old approach wa...
This is the first in a series documenting how I built a women’s health AI assistant using AWS Strands SDK, Bedrock, and Django. The system handles personal h...
If you’re building multi-user AI agents with AWS Strands SDK, you’ll quickly hit a common problem: how do you bind tools to a specific user without passing u...
One Docker image, two ECS services, an SQS queue with IAM auth, and the Django settings crash that blocks every first Celery deploy.
You can’t process Apple HealthKit data inline. Here’s why we needed Celery with SQS, how Redis fits in separately for caching, and the architecture that emer...
A visual deep-dive into running Celery workers as separate ECS containers — broker topology, task lifecycle, concurrency models, and the Beat scheduler gotcha.
One Docker image, two ECS services, an SQS queue with IAM auth, and the Django settings crash that blocks every first Celery deploy.
A chunk-based import pipeline with SQS, dispatcher tasks that chain through the queue, fingerprint deduplication, and why we track batch state in PostgreSQL ...
You can’t process Apple HealthKit data inline. Here’s why we needed Celery with SQS, how Redis fits in separately for caching, and the architecture that emer...
One Docker image, two ECS services, an SQS queue with IAM auth, and the Django settings crash that blocks every first Celery deploy.
A chunk-based import pipeline with SQS, dispatcher tasks that chain through the queue, fingerprint deduplication, and why we track batch state in PostgreSQL ...
You can’t process Apple HealthKit data inline. Here’s why we needed Celery with SQS, how Redis fits in separately for caching, and the architecture that emer...
I have 268 markdown files in my Obsidian vault – internal docs, architecture decisions, API specs, meeting notes. Searching them with Obsidian’s built-in sea...
If you’re building multi-user AI agents with AWS Strands SDK, you’ll quickly hit a common problem: how do you bind tools to a specific user without passing u...
How I replaced inline URL citations with a token-based reference system that separates machine semantics from user-visible text — and why the old approach wa...
This is the first in a series documenting how I built a women’s health AI assistant using AWS Strands SDK, Bedrock, and Django. The system handles personal h...
How I replaced inline URL citations with a token-based reference system that separates machine semantics from user-visible text — and why the old approach wa...
I have 268 markdown files in my Obsidian vault – internal docs, architecture decisions, API specs, meeting notes. Searching them with Obsidian’s built-in sea...
A chunk-based import pipeline with SQS, dispatcher tasks that chain through the queue, fingerprint deduplication, and why we track batch state in PostgreSQL ...
You can’t process Apple HealthKit data inline. Here’s why we needed Celery with SQS, how Redis fits in separately for caching, and the architecture that emer...
This is the first in a series documenting how I built a women’s health AI assistant using AWS Strands SDK, Bedrock, and Django. The system handles personal h...
Part 3 of the series on building a women’s health AI assistant. This covers the system prompts, safety guardrails, and behavior control that make an AI agent...
Part 3 of the series on building a women’s health AI assistant. This covers the system prompts, safety guardrails, and behavior control that make an AI agent...
Part 3 of the series on building a women’s health AI assistant. This covers the system prompts, safety guardrails, and behavior control that make an AI agent...
Part 4 of building the AI assistant. This covers the most critical issue in health AI: preventing the model from making up data that doesn’t exist.
Part 4 of building the AI assistant. This covers the most critical issue in health AI: preventing the model from making up data that doesn’t exist.
I have 268 markdown files in my Obsidian vault – internal docs, architecture decisions, API specs, meeting notes. Searching them with Obsidian’s built-in sea...
I have 268 markdown files in my Obsidian vault – internal docs, architecture decisions, API specs, meeting notes. Searching them with Obsidian’s built-in sea...
I have 268 markdown files in my Obsidian vault – internal docs, architecture decisions, API specs, meeting notes. Searching them with Obsidian’s built-in sea...
I have 268 markdown files in my Obsidian vault – internal docs, architecture decisions, API specs, meeting notes. Searching them with Obsidian’s built-in sea...
I have 268 markdown files in my Obsidian vault – internal docs, architecture decisions, API specs, meeting notes. Searching them with Obsidian’s built-in sea...
I have 268 markdown files in my Obsidian vault – internal docs, architecture decisions, API specs, meeting notes. Searching them with Obsidian’s built-in sea...
A visual deep-dive into running Celery workers as separate ECS containers — broker topology, task lifecycle, concurrency models, and the Beat scheduler gotcha.
After 14 years of building software, I’m finally writing about it.
After 14 years of building software, I’m finally writing about it.
A chunk-based import pipeline with SQS, dispatcher tasks that chain through the queue, fingerprint deduplication, and why we track batch state in PostgreSQL ...
One Docker image, two ECS services, an SQS queue with IAM auth, and the Django settings crash that blocks every first Celery deploy.
How I replaced inline URL citations with a token-based reference system that separates machine semantics from user-visible text — and why the old approach wa...
How I replaced inline URL citations with a token-based reference system that separates machine semantics from user-visible text — and why the old approach wa...