Skip to content

Commit 8a65106

Browse files
committed
Update pdf generation script and file paths in download.mdx files
1 parent bb25f46 commit 8a65106

35 files changed

Lines changed: 39 additions & 38 deletions

File tree

  • scripts/generate-pdfs
  • src/content/articles
    • alert-fatigue-reduction-triage-actionable-alerts
    • api-deprecation-sunset-headers-consumer-migration
    • api-gateway-metrics-traces-logs-debugging
    • api-usage-metering-quotas-cost-attribution
    • argocd-sync-failures-gitops-debugging-troubleshooting
    • availability-targets-five-nines-cost-benefit-analysis
    • backpressure-load-shedding-admission-control-overload
    • blameless-postmortem-incident-analysis-systemic-causes
    • blue-green-canary-deployment-strategy-comparison
    • cdn-edge-caching-cache-keys-vary-headers
    • chaos-engineering-failure-injection-low-cost-experiments
    • ci-pipeline-caching-docker-layers-dependency-cache
    • circuit-breaker-retry-budget-cascade-failure-prevention
    • consumer-driven-contract-testing-pact-internal-apis
    • container-vulnerability-scanning-ci-shift-left-security
    • database-schema-migrations-continuous-deployment-zero-downtime
    • dead-letter-queue-design-replay-debugging
    • distributed-tracing-sampling-strategies-head-tail
    • eol-runtime-upgrade-dependency-hell-migration
    • ephemeral-preview-environments-cost-control-cleanup
    • flaky-test-diagnosis-race-conditions-e2e-stabilization
    • golden-paths-developer-experience-standardization-autonomy
    • grafana-dashboard-hygiene-pruning-actionable-metrics
    • helm-release-management-drift-detection-debugging
    • idempotent-message-handlers-deduplication-retries
    • internal-cli-kubectl-terraform-wrapper-abstraction
    • internal-developer-portal-platform-self-service-actions
    • internal-platform-api-versioning-deprecation-breaking-changes
    • kubernetes-cluster-upgrade-playbook-risk-reduction
    • kubernetes-cost-optimization-resource-sizing-spot-instances
    • kubernetes-decision-framework-when-not-to-use
    • kubernetes-dns-debugging-ndots-coredns-troubleshooting
    • kubernetes-hpa-autoscaling-metrics-tuning-latency

_TODO.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@ https://aws.plainenglish.io/how-to-build-a-chatbot-using-aws-lex-and-lambda-in-2
2727

2828
- Need an article on OpenStack
2929

30-
- Home page reorganization: move the "What I Deliver" box from the Hero into the Backstage image. Move the Backstage image / video to the hero.
31-
32-
- Add a "Preview Special" item to our Download CTA that lets the user know the Deep Dive content can be previewed in HTML format, and offer a switch to it.
33-
3430
## Youtube video for Backstage IDP hero on Home page
3531

3632
- Discuss agentic AI integrations to add to Backstage
33+
- Home page reorganization: move the "What I Deliver" box from the Hero into the Backstage image. Move the Backstage image / video to the hero.
34+
35+
## Deep Dive Link
36+
37+
- Add a "Preview Special" item to our Download CTA that lets the user know the Deep Dive content can be previewed in HTML format, and offer a switch to it.

scripts/generate-pdfs/index.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ const generatePdf = async (browser, slug) => {
135135
height: Math.round(CONTENT_HEIGHT_PX),
136136
})
137137

138-
await page.goto(inputUrl, { waitUntil: 'networkidle0', timeout: 60_000 })
138+
await page.goto(inputUrl, { waitUntil: 'networkidle2', timeout: 60_000 })
139139
await page.emulateMediaType('print')
140140

141141
// Wait for web fonts so PDF typography matches the site instead of fallback metrics.

src/content/articles/alert-fatigue-reduction-triage-actionable-alerts/download.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ cover: "./download.jpg"
66
coverAlt: "Radar screen showing single bright alert ping surrounded by faded noise halo, representing critical actionable cloud monitoring alert"
77
isDraft: false
88
publishDate: 2025-10-05
9-
fileName: "*.pdf"
9+
fileName: "alert-fatigue-reduction-triage-actionable-alerts.pdf"
1010
fileSize: "2.3 MB"
1111
fileType: "Whitepaper"
1212
pages: 24

src/content/articles/api-deprecation-sunset-headers-consumer-migration/download.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ isDraft: false
99
fileType: "Whitepaper"
1010
fileSize: "2.3 MB"
1111
pages: 24
12-
fileName: "*.pdf"
12+
fileName: "api-deprecation-sunset-headers-consumer-migration.pdf"
1313
---
1414

1515
API deprecation looks simple on paper: announce a sunset date, send emails, flip the switch. In practice, deprecated endpoints live forever. Consumers ignore warnings, sunset dates slip, and enterprise customers have contracts that guarantee availability. One API marked "deprecated" two years prior was still handling 30% of production traffic — and nobody wanted to be the engineer who broke their integration.

src/content/articles/api-gateway-metrics-traces-logs-debugging/download.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ isDraft: false
99
fileType: "Whitepaper"
1010
fileSize: "2.3 MB"
1111
pages: 24
12-
fileName: "*.pdf"
12+
fileName: "api-gateway-metrics-traces-logs-debugging.pdf"
1313
---
1414

1515
Four hours debugging a latency spike revealed the problem: the gateway metrics measured the wrong thing. Users saw 5-second delays, the gateway dashboard showed 200ms P99 latency, and every backend claimed sub-100ms response times. The real issue—4 seconds spent waiting for slow consumers to upload request bodies — never appeared in any metric. Gateway observability that does not connect to upstream and downstream services is useless.

src/content/articles/api-usage-metering-quotas-cost-attribution/download.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ isDraft: false
99
fileType: "Whitepaper"
1010
fileSize: "2.3 MB"
1111
pages: 24
12-
fileName: "*.pdf"
12+
fileName: "api-usage-metering-quotas-cost-attribution.pdf"
1313
---
1414

1515
A finance director lost his mind during budget review: infrastructure costs doubled but when asked why, engineering had no answer. The real problem — one internal team consuming 80% of an API's capacity while costs were split evenly across six teams. Their allocated budget: $15,000. Their actual cost: $120,000. The other five teams were subsidizing them, and nobody knew.

src/content/articles/argocd-sync-failures-gitops-debugging-troubleshooting/download.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ isDraft: false
99
fileType: "Whitepaper"
1010
fileSize: "2.3 MB"
1111
pages: 24
12-
fileName: "*.pdf"
12+
fileName: "argocd-sync-failures-gitops-debugging-troubleshooting.pdf"
1313
---
1414

1515
GitOps sells you on declarative simplicity: define your desired state in Git, and ArgoCD makes it so. The pitch works beautifully in demos. In production, you'll eventually stare at a sync that's been "Progressing" for 20 minutes, wondering what's happening inside the black box. A production deployment hung during sync with no error, no timeout, no logs — just a spinner. The root cause: a sync wave ordering issue where a PreSync hook was waiting for a service that wouldn't exist until a later wave.

src/content/articles/availability-targets-five-nines-cost-benefit-analysis/download.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ isDraft: false
99
fileType: "Whitepaper"
1010
fileSize: "2.3 MB"
1111
pages: 24
12-
fileName: "*.pdf"
12+
fileName: "availability-targets-five-nines-cost-benefit-analysis.pdf"
1313
---
1414

1515
A startup was spending 40% of their infrastructure budget chasing 99.99% availability with multi-region failover and 24/7 on-call rotations burning out their team. Their revenue loss from downtime was roughly $15,000 annually. They were spending $150,000 to save $15,000—meanwhile competitors shipped features faster by not over-engineering their infrastructure.

src/content/articles/backpressure-load-shedding-admission-control-overload/download.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ isDraft: false
99
fileType: "Whitepaper"
1010
fileSize: "2.3 MB"
1111
pages: 24
12-
fileName: "*.pdf"
12+
fileName: "backpressure-load-shedding-admission-control-overload.pdf"
1313
---
1414

1515
An e-commerce platform's flash sale traffic spiked to 10x normal within minutes. The system accepted every request — that was the problem. Database connections exhausted. Response times climbed from 200ms to 30 seconds. Clients timed out and retried, doubling the load again. What could have been a recoverable 15-minute degradation became a 4-hour outage. The fix wasn't more capacity — it was teaching the system to say "no."

src/content/articles/blameless-postmortem-incident-analysis-systemic-causes/download.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ isDraft: false
99
fileType: "Whitepaper"
1010
fileSize: "2.3 MB"
1111
pages: 24
12-
fileName: "*.pdf"
12+
fileName: "blameless-postmortem-incident-analysis-systemic-causes.pdf"
1313
---
1414

1515
An engineer fat-fingers a production config change. The payment service goes down for two hours. The instinctive investigation finds the engineer and assigns blame. But three months later, a different engineer makes a different config mistake, and the system fails the same way. The "solution" didn't prevent anything — it just rotated blame to someone new.

0 commit comments

Comments
 (0)