<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Abhinav C — Writing</title><description>Abhinav C, site reliability engineer. Keeps production up and AWS bills down.</description><link>https://abhinavch.com/</link><language>en</language><item><title>torana: what a 5 MB reverse proxy taught me about latency</title><link>https://abhinavch.com/blog/building-torana/</link><guid isPermaLink="true">https://abhinavch.com/blog/building-torana/</guid><description>Building a small Rust reverse proxy, from 1,060 requests a second to parity with Caddy. Two changes did almost all of it, and neither was clever.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>rust</category><category>networking</category><category>projects</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>The Kubernetes upgrade treadmill has a price tag now</title><link>https://abhinavch.com/blog/eks-upgrade-treadmill/</link><guid isPermaLink="true">https://abhinavch.com/blog/eks-upgrade-treadmill/</guid><description>EKS extended support costs six times the standard control plane price. Falling behind on Kubernetes versions used to be technical debt. Now it is a line item.</description><pubDate>Tue, 20 Oct 2026 00:00:00 GMT</pubDate><category>kubernetes</category><category>eks</category><category>finops</category><category>upgrades</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Rate limits are product decisions, and AI agents just became your biggest customers</title><link>https://abhinavch.com/blog/rate-limits-are-product-decisions/</link><guid isPermaLink="true">https://abhinavch.com/blog/rate-limits-are-product-decisions/</guid><description>API gateways have two very different kinds of limits: ones that protect your systems and ones that define what a customer bought. In 2026, agents that never sleep are testing both.</description><pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate><category>apigee</category><category>api-management</category><category>ai</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Write every Boto3 script as if it will run twice</title><link>https://abhinavch.com/blog/boto3-scripts-that-run-twice/</link><guid isPermaLink="true">https://abhinavch.com/blog/boto3-scripts-that-run-twice/</guid><description>Cloud scripts get retried, rerun and run against the wrong account. Five habits make them safe: idempotency, pagination, real retries, dry runs and explicit targets.</description><pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate><category>python</category><category>boto3</category><category>aws</category><category>automation</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>A dashboard should answer one question in five seconds</title><link>https://abhinavch.com/blog/dashboards-answer-one-question/</link><guid isPermaLink="true">https://abhinavch.com/blog/dashboards-answer-one-question/</guid><description>Most Grafana dashboards are a wall of every metric someone once found interesting. The good ones are designed like a page in a newspaper: one headline, read top to bottom.</description><pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate><category>grafana</category><category>observability</category><category>design</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Your quality gate should only judge new code</title><link>https://abhinavch.com/blog/quality-gates-new-code/</link><guid isPermaLink="true">https://abhinavch.com/blog/quality-gates-new-code/</guid><description>Gating on overall coverage punishes whoever touches old code and rewards nobody. Judge each change on its own, and the codebase improves as a side effect.</description><pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate><category>sonarqube</category><category>code-quality</category><category>ci-cd</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Deploying is engineering. Releasing is a business decision.</title><link>https://abhinavch.com/blog/deploy-is-not-release/</link><guid isPermaLink="true">https://abhinavch.com/blog/deploy-is-not-release/</guid><description>When shipping code and turning on features are the same event, every deploy carries business risk and every launch carries technical risk. Separating them is the most underrated change in release engineering.</description><pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate><category>release-engineering</category><category>ci-cd</category><category>feature-flags</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>CDK is a compiler. Review the output.</title><link>https://abhinavch.com/blog/cdk-is-a-compiler/</link><guid isPermaLink="true">https://abhinavch.com/blog/cdk-is-a-compiler/</guid><description>Teams review the TypeScript and deploy the CloudFormation. When those disagree, production follows the CloudFormation. Treat the synthesized template as the real artifact.</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><category>aws</category><category>cdk</category><category>cloudformation</category><category>infrastructure-as-code</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Your container image is a product you ship to yourself</title><link>https://abhinavch.com/blog/container-images-are-supply-chains/</link><guid isPermaLink="true">https://abhinavch.com/blog/container-images-are-supply-chains/</guid><description>Every image carries an operating system, a runtime and hundreds of packages you did not choose. In 2026 regulators and customers are starting to ask what is inside. Be able to answer.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>docker</category><category>security</category><category>supply-chain</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>S3 quietly became a coordination service</title><link>https://abhinavch.com/blog/s3-is-a-coordination-service/</link><guid isPermaLink="true">https://abhinavch.com/blog/s3-is-a-coordination-service/</guid><description>Strong consistency, then conditional writes, then managed tables. S3 can now do jobs that used to need a database or a lock table. Most architectures have not caught up.</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><category>aws</category><category>s3</category><category>architecture</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Savings Plans are bonds, not coupons</title><link>https://abhinavch.com/blog/savings-plans-are-bonds/</link><guid isPermaLink="true">https://abhinavch.com/blog/savings-plans-are-bonds/</guid><description>A commitment is a fixed-income position on your own future usage. Finance teams have managed that kind of risk for a century. Borrow their playbook: ladder it.</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate><category>finops</category><category>aws</category><category>savings-plans</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Ansible and Chef moved upstream. Most teams never noticed.</title><link>https://abhinavch.com/blog/config-management-image-factory/</link><guid isPermaLink="true">https://abhinavch.com/blog/config-management-image-factory/</guid><description>Configuration management used to fix running servers. Now its best job is building the image, once, before anything runs. What changed, and where in-place config still earns its keep.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate><category>ansible</category><category>chef</category><category>packer</category><category>immutable-infrastructure</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>An alert is a contract with a sleeping person</title><link>https://abhinavch.com/blog/alerts-are-contracts/</link><guid isPermaLink="true">https://abhinavch.com/blog/alerts-are-contracts/</guid><description>Every page promises that something is wrong, that it matters now, and that a human can fix it. Break any of those and on-call stops trusting the pager, AI triage or not.</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><category>alerting</category><category>sre</category><category>prometheus</category><category>cloudwatch</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>EMR clusters should die young</title><link>https://abhinavch.com/blog/emr-clusters-die-young/</link><guid isPermaLink="true">https://abhinavch.com/blog/emr-clusters-die-young/</guid><description>A long-running EMR cluster is a pet with a very large food bill. Treat clusters as disposable compute for a single job, and S3 as the only place data lives.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>aws</category><category>emr</category><category>finops</category><category>data</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>The GPU line item is the new EC2 line item</title><link>https://abhinavch.com/blog/gpu-finops/</link><guid isPermaLink="true">https://abhinavch.com/blog/gpu-finops/</guid><description>AI workloads moved the biggest number on the bill. The playbook that tamed EC2 still applies, with two new metrics: GPU utilization and cost per request.</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate><category>finops</category><category>aws</category><category>ai</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>NodeMinus: put the safety check where the delete happens</title><link>https://abhinavch.com/blog/nodeminus-guardrails/</link><guid isPermaLink="true">https://abhinavch.com/blog/nodeminus-guardrails/</guid><description>A small desktop app that deletes node_modules folders. The UI asks for confirmation, but the real guardrail lives in the Rust backend, where no frontend bug can skip it.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>rust</category><category>tauri</category><category>safety</category><category>projects</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>SLOs for features that answer differently every time</title><link>https://abhinavch.com/blog/slos-for-llm-features/</link><guid isPermaLink="true">https://abhinavch.com/blog/slos-for-llm-features/</guid><description>LLM-backed features break the usual assumptions: slow by design, a dependency you do not run, and &quot;success&quot; that a status code cannot see. What to measure instead.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><category>reliability</category><category>slo</category><category>ai</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>On AWS, the SQL Server bill is a license bill</title><link>https://abhinavch.com/blog/sql-server-license-is-the-bill/</link><guid isPermaLink="true">https://abhinavch.com/blog/sql-server-license-is-the-bill/</guid><description>SQL Server 2016 reached end of extended support in July 2026, so a lot of databases are moving now. Before resizing anything, know that cores, not hardware, drive the cost.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><category>sql-server</category><category>aws</category><category>finops</category><category>migrations</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>The best OS hardening is having less OS</title><link>https://abhinavch.com/blog/less-os-is-more-secure/</link><guid isPermaLink="true">https://abhinavch.com/blog/less-os-is-more-secure/</guid><description>CIS checklists harden a general-purpose server one setting at a time. Minimal operating systems remove most of what those checklists were protecting. With Amazon Linux 2 now past end of support, it is a good moment to choose.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>hardening</category><category>aws</category><category>linux</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>AWS got safer by default. Your old accounts did not.</title><link>https://abhinavch.com/blog/aws-secure-defaults/</link><guid isPermaLink="true">https://abhinavch.com/blog/aws-secure-defaults/</guid><description>New S3 buckets block public access, encrypt objects and disable ACLs out of the box. Accounts created years ago kept their old settings. A short list of what to check.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>aws</category><category>security</category><category>hardening</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Kubernetes requests are a purchase order</title><link>https://abhinavch.com/blog/kubernetes-requests/</link><guid isPermaLink="true">https://abhinavch.com/blog/kubernetes-requests/</guid><description>Every CPU and memory request reserves capacity you pay for, whether the pod uses it or not. Get them right and the cluster gets smaller and more stable.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><category>kubernetes</category><category>finops</category><category>reliability</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Your Helm chart is a public API. Version it like one.</title><link>https://abhinavch.com/blog/helm-charts-are-apis/</link><guid isPermaLink="true">https://abhinavch.com/blog/helm-charts-are-apis/</guid><description>The day a second team installs your chart, values.yaml becomes an interface other people depend on. Most chart breakages are API breakages nobody called that.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><category>helm</category><category>kubernetes</category><category>platform-engineering</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Your observability bill is a cardinality bill</title><link>https://abhinavch.com/blog/observability-bill/</link><guid isPermaLink="true">https://abhinavch.com/blog/observability-bill/</guid><description>Monitoring costs rarely grow with traffic. They grow with labels, log lines nobody reads and traces kept by default. Here is where the money goes and how to get it back.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>observability</category><category>finops</category><category>opentelemetry</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Reserved concurrency is the best circuit breaker in AWS</title><link>https://abhinavch.com/blog/lambda-concurrency-circuit-breaker/</link><guid isPermaLink="true">https://abhinavch.com/blog/lambda-concurrency-circuit-breaker/</guid><description>Most people meet Lambda concurrency as a limit to raise. Used deliberately, it is a dial that protects your database, isolates noisy functions and works as a kill switch.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><category>aws</category><category>lambda</category><category>reliability</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Terraform state is a production database</title><link>https://abhinavch.com/blog/terraform-state/</link><guid isPermaLink="true">https://abhinavch.com/blog/terraform-state/</guid><description>It holds every resource ID, sometimes secrets, and the only record of what Terraform thinks it owns. Treat it with the same care as the database it probably describes.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><category>terraform</category><category>aws</category><category>infrastructure-as-code</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Ingress NGINX is retired. Your ingress still works. For now.</title><link>https://abhinavch.com/blog/ingress-nginx-retired/</link><guid isPermaLink="true">https://abhinavch.com/blog/ingress-nginx-retired/</guid><description>The community ingress-nginx controller stopped getting fixes in March 2026. Nothing broke that day, which is exactly why it is easy to ignore.</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate><category>kubernetes</category><category>gateway-api</category><category>migrations</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Certificates now last 200 days. Then 47.</title><link>https://abhinavch.com/blog/47-day-certificates/</link><guid isPermaLink="true">https://abhinavch.com/blog/47-day-certificates/</guid><description>Public TLS certificates are on a schedule to shrink to 47 days by 2029. If renewal still involves a person, the schedule is the incident.</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate><category>tls</category><category>automation</category><category>reliability</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Jenkins isn&apos;t your problem. Your Jenkinsfile is.</title><link>https://abhinavch.com/blog/jenkinsfile-is-the-problem/</link><guid isPermaLink="true">https://abhinavch.com/blog/jenkinsfile-is-the-problem/</guid><description>Teams migrate off Jenkins to escape slow, fragile pipelines, then rebuild the same pipelines somewhere else. The tool was never the bottleneck. The design was.</description><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate><category>jenkins</category><category>ci-cd</category><category>gitlab-ci</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>gflow: team conventions belong in a config file, not a wiki page</title><link>https://abhinavch.com/blog/gflow-conventions-as-code/</link><guid isPermaLink="true">https://abhinavch.com/blog/gflow-conventions-as-code/</guid><description>Every team has rules for branch names, commit messages and pull requests. Most keep them in a document people skim once. gflow puts them in a committed YAML file that a CLI follows for you.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><category>go</category><category>git</category><category>developer-experience</category><category>projects</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Measure Kafka lag in seconds, not messages</title><link>https://abhinavch.com/blog/kafka-lag-in-seconds/</link><guid isPermaLink="true">https://abhinavch.com/blog/kafka-lag-in-seconds/</guid><description>A consumer group 50,000 messages behind might be fine or might be an hour stale. The number that matters to the business is how old the data is.</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate><category>kafka</category><category>streaming</category><category>observability</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Moving EC2 to ECS without anyone noticing</title><link>https://abhinavch.com/blog/ec2-to-ecs/</link><guid isPermaLink="true">https://abhinavch.com/blog/ec2-to-ecs/</guid><description>The best migration is one where the only people who notice are the ones reading the bill.</description><pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate><category>aws</category><category>ecs</category><category>docker</category><category>migrations</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Scheduling Kubernetes jobs for when the grid is cleaner</title><link>https://abhinavch.com/blog/carbon-aware-scheduler/</link><guid isPermaLink="true">https://abhinavch.com/blog/carbon-aware-scheduler/</guid><description>A carbon-aware scheduler that delays batch jobs until electricity is cleaner. The interesting decisions were not about carbon at all. They were about what happens when the data is missing.</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate><category>kubernetes</category><category>go</category><category>sustainability</category><category>projects</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>Your certificate will expire on a Saturday</title><link>https://abhinavch.com/blog/cert-saturday/</link><guid isPermaLink="true">https://abhinavch.com/blog/cert-saturday/</guid><description>It&apos;s a law of nature. Certificates expire on weekends, around 2 a.m., while the person who renewed it last year is on a beach with no signal.</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><category>tls</category><category>aws</category><category>automation</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>The most-deployed untested code in your company is Bash</title><link>https://abhinavch.com/blog/bash-is-production/</link><guid isPermaLink="true">https://abhinavch.com/blog/bash-is-production/</guid><description>Bash runs your entrypoints, your deploys and your backups, and almost nobody reviews it like code. Five failure modes that strict mode does not catch, and a line for when to stop.</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate><category>bash</category><category>automation</category><category>reliability</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item><item><title>The cheapest EC2 instance is the one you turned off</title><link>https://abhinavch.com/blog/turn-it-off/</link><guid isPermaLink="true">https://abhinavch.com/blog/turn-it-off/</guid><description>Every cost review I&apos;ve run starts the same way. Someone opens Cost Explorer, sorts by service, and EC2 sits at the top like it pays rent. It doesn&apos;t. You do.</description><pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate><category>aws</category><category>finops</category><category>ec2</category><author>abhinavchamallamudi@outlook.com (Abhinav C)</author></item></channel></rss>