<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Umer Amin Durrani — Research & Systems]]></title><description><![CDATA[Umer Amin Durrani writes about AI technical project management, Linux/DevOps, brand building and research. Practical ideas for reliable systems and delivery.]]></description><link>https://umeramindurrani.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ae209ae46d69ef92fd410ec/25bd7a87-e47f-4888-85be-c8d0ae95f6ad.png</url><title>Umer Amin Durrani — Research &amp; Systems</title><link>https://umeramindurrani.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sun, 08 Nov 2026 13:17:36 GMT</lastBuildDate><atom:link href="https://umeramindurrani.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Linux Incident Response: What to Capture Before Restarting]]></title><description><![CDATA[Linux incident response: preserve service, log, resource and dependency evidence before a controlled restart.]]></description><link>https://umeramindurrani.hashnode.dev/linux-incident-response-what-to-capture-before-restarting</link><guid isPermaLink="true">https://umeramindurrani.hashnode.dev/linux-incident-response-what-to-capture-before-restarting</guid><category><![CDATA[Linux]]></category><dc:creator><![CDATA[Umer Amin Durrani]]></dc:creator><pubDate>Sat, 07 Nov 2026 10:03:08 GMT</pubDate><content:encoded><![CDATA[<p>A service is down. Someone suggests restarting it. That may restore service, but it can also erase clues about why it failed. In the first few minutes, collect a small, safe evidence snapshot before changing the system—unless there is an immediate safety or security reason to contain it first.</p>
<p>This is a practical checklist for Linux operators handling an availability incident. Follow your organization’s incident process, protect sensitive logs, and avoid copying secrets into tickets or chat.</p>
<h2>First, establish the timeline</h2>
<p>Record when the symptom started, who noticed it, which users or functions are affected, and what changed recently. Note the system’s time and timezone so logs can be compared across hosts. Keep a simple incident log with timestamps and actions taken.</p>
<h2>Capture the current state</h2>
<p>Before restarting services, record:</p>
<ul>
<li><strong>Service status:</strong> current state, recent restarts and any reported failure reason.</li>
<li><strong>Recent logs:</strong> a bounded time window around the incident, including the application and relevant system journal entries.</li>
<li><strong>Resource pressure:</strong> CPU load, memory and swap use, filesystem capacity and inode availability.</li>
<li><strong>Process and network clues:</strong> relevant processes, listening ports and connection errors for the affected service.</li>
<li><strong>Dependency health:</strong> database, DNS, identity, storage, queue or external API status as applicable.</li>
<li><strong>Recent changes:</strong> deployment version, configuration edits, package updates, certificate changes or infrastructure modifications.</li>
</ul>
<p>Keep collection read-only where possible. Use an approved tool or runbook, limit output to the affected host and incident window, and redact tokens, customer data and credentials before sharing evidence.</p>
<h2>Then make a controlled change</h2>
<p>Once the current state is recorded, agree on the next action and its owner. If a restart is appropriate, capture the exact time and result. Check the service’s health from the user perspective, not only whether the process is running. If the restart fails, preserve the new logs and avoid repeating the same action without a hypothesis.</p>
<p>For a suspected compromise, do not casually reboot or clean up the host; follow the security incident response process so evidence and containment are handled correctly.</p>
<h2>Turn the incident into a better runbook</h2>
<p>After recovery, document the trigger, evidence, decision, change, validation and follow-up owner. Ask what signal would have detected the problem earlier and what safe action should happen next time. A useful runbook helps the next person make a calmer decision, not just run a longer list of commands.</p>
<p>More on Linux, DevOps and resilient delivery: <a href="https://umer-amin.vercel.app/">umer-amin.vercel.app</a>.</p>
<p><strong>What is the first piece of evidence you wish your team always captured before a restart?</strong></p>
<p>#Linux #IncidentResponse #DevOps #SRE</p>
]]></content:encoded></item><item><title><![CDATA[AI Agents in Production: A Release Readiness Checklist]]></title><description><![CDATA[AI agent release checklist: evaluation, least privilege, approvals, validation, audit logs, failure handling, monitoring and rollback.]]></description><link>https://umeramindurrani.hashnode.dev/ai-agents-in-production-a-release-readiness-checklist</link><guid isPermaLink="true">https://umeramindurrani.hashnode.dev/ai-agents-in-production-a-release-readiness-checklist</guid><category><![CDATA[ai agents]]></category><dc:creator><![CDATA[Umer Amin Durrani]]></dc:creator><pubDate>Sat, 07 Nov 2026 10:02:11 GMT</pubDate><content:encoded><![CDATA[<p>An AI agent can look impressive in a demo and still be unready for production. A demo proves that a path can work once. A release process must show how the system behaves when inputs are incomplete, tools fail, permissions are too broad or a human needs to intervene.</p>
<p>The question is not “Can the agent do the task?” It is “Can we bound, observe and recover the task when it does something unexpected?”</p>
<h2>Start with a narrow job</h2>
<p>Write down the user, the trigger, the permitted actions and the expected result. Keep the first release focused on a small, reversible workflow. If the task cannot be explained in a few sentences, it is probably too broad for a first rollout.</p>
<h2>Readiness checks before release</h2>
<ol>
<li><strong>Evaluation set:</strong> collect representative requests, edge cases, ambiguous inputs and known failure examples. Run the same set after prompt, model or tool changes.</li>
<li><strong>Least privilege:</strong> give the agent only the data and actions needed for its job. Separate read access from write or execute access.</li>
<li><strong>Approval boundaries:</strong> require a person to approve irreversible actions, external commitments, sensitive data changes and high-impact decisions.</li>
<li><strong>Input and output validation:</strong> treat model output as untrusted. Check formats, allowed values, destination and scope before a tool acts.</li>
<li><strong>Audit trail:</strong> capture the request, tool calls, approval, result and errors without recording secrets or unnecessary personal data.</li>
<li><strong>Failure behavior:</strong> define timeouts, retries, rate limits, duplicate prevention and a safe stop state. Make uncertainty visible instead of silently guessing.</li>
<li><strong>Monitoring:</strong> track task completion, escalation, tool errors and user corrections. Logs should help an operator answer what happened and why.</li>
<li><strong>Rollback and ownership:</strong> name the person who can disable the workflow, restore the previous version and communicate an incident.</li>
</ol>
<h2>Release gradually</h2>
<p>Start with a small group and a low-risk task. Compare outcomes with the agreed evaluation set, review exceptions, and check whether users understand what the agent did. Expand permissions or audience only when the evidence supports it.</p>
<p>This is where product, engineering, operations and security need to work together. The release is not complete when the prompt is polished; it is complete when the workflow has an owner, boundaries, monitoring and a recovery path.</p>
<h2>Make the next decision explicit</h2>
<p>Before launch, document what the agent is allowed to do on its own, what requires approval and who responds when it fails. A clear “not yet” is a useful release decision when the safety case is incomplete.</p>
<p>More writing on AI workflows, Linux/DevOps and project delivery: <a href="https://umer-amin.vercel.app/">umer-amin.vercel.app</a>.</p>
<p><strong>Which control would you insist on before an AI agent can change production data?</strong></p>
<p>#AIAgents #DevOps #AI #DevSecOps</p>
]]></content:encoded></item><item><title><![CDATA[Linux Disaster Recovery: A Backup Is Not a Recovery Plan]]></title><description><![CDATA[Linux disaster recovery: define RTO/RPO, map dependencies, test restores in isolation, validate service recovery and keep a practical runbook.]]></description><link>https://umeramindurrani.hashnode.dev/linux-disaster-recovery-a-backup-is-not-a-recovery-plan</link><guid isPermaLink="true">https://umeramindurrani.hashnode.dev/linux-disaster-recovery-a-backup-is-not-a-recovery-plan</guid><category><![CDATA[Linux]]></category><category><![CDATA[Devops]]></category><dc:creator><![CDATA[Umer Amin Durrani]]></dc:creator><pubDate>Sat, 07 Nov 2026 10:01:09 GMT</pubDate><content:encoded><![CDATA[<p>A backup job can report “successful” every night and still leave a team unable to restore the service it depends on. The missing piece is usually not another copy of the data. It is a tested recovery path.</p>
<p>For a small Linux workload, disaster recovery starts with a few plain questions: what must come back first, how much data can we afford to lose, and who knows the steps when the usual operator is unavailable?</p>
<h2>Define the recovery target before choosing tools</h2>
<p>Recovery time objective (RTO) is the time the service can be unavailable. Recovery point objective (RPO) is the amount of recent data the business can tolerate losing. They are business decisions that shape technical design.</p>
<p>A team that needs a core service restored in hours has different requirements from one that can rebuild a low-priority internal tool the next day. Write the targets down, agree them with the people who depend on the service, then check whether the current backup and restore process can meet them.</p>
<h2>What a usable recovery plan includes</h2>
<ol>
<li><strong>A clear scope:</strong> identify the service, data, configuration, secrets, certificates and external dependencies that must return together.</li>
<li><strong>Known-good backups:</strong> document where copies live, how they are protected, how long they are retained, and who can access them.</li>
<li><strong>A restore sequence:</strong> list dependencies in order. A database may need to be restored before an application can start; DNS and identity may also be prerequisites.</li>
<li><strong>A clean recovery environment:</strong> know where the service can be rebuilt, including OS versions, packages, network rules and infrastructure definitions.</li>
<li><strong>Validation checks:</strong> define how to confirm that data is consistent, the application is healthy, permissions are correct and users can complete a critical task.</li>
<li><strong>Named decision owners:</strong> make it clear who declares an incident, approves failover, communicates status and decides when the recovered system is safe.</li>
</ol>
<h2>The restore drill is the evidence</h2>
<p>A restore test should happen in an isolated environment, with a written record of what was restored, how long it took, what failed, and which assumptions proved false. Start with one service and a low-risk drill. Fix the gaps, update the runbook, and repeat.</p>
<p>The aim is not to create a dramatic exercise. It is to make recovery ordinary enough that the team can perform it under pressure. A backup you have never restored is an unverified assumption.</p>
<h2>Keep the plan usable</h2>
<p>Store the runbook somewhere reachable during an outage. Avoid relying on a single person’s memory or credentials. Protect backup access separately from production access, and review the plan when architecture or ownership changes.</p>
<p>I write about Linux, DevOps, AI workflows and technical project delivery at <a href="https://umer-amin.vercel.app/">umer-amin.vercel.app</a>.</p>
<p><strong>When did your team last restore a real backup into a clean environment?</strong></p>
<p>#Linux #DisasterRecovery #DevOps #BackupStrategy</p>
]]></content:encoded></item><item><title><![CDATA[AI-Generated Code Review: 8 Checks Before the Pull Request Ships]]></title><description><![CDATA[A practical AI code review checklist for pull requests: scope, behavior, tests, dependencies, secrets, failures, operations and human ownership.]]></description><link>https://umeramindurrani.hashnode.dev/ai-generated-code-review-8-checks-before-the-pull-request-ships</link><guid isPermaLink="true">https://umeramindurrani.hashnode.dev/ai-generated-code-review-8-checks-before-the-pull-request-ships</guid><category><![CDATA[code review]]></category><category><![CDATA[ai agents]]></category><dc:creator><![CDATA[Umer Amin Durrani]]></dc:creator><pubDate>Sat, 07 Nov 2026 09:59:53 GMT</pubDate><content:encoded><![CDATA[<p>AI can produce a working-looking change before a teammate has finished reading the ticket. The speed is useful. The review question is harder: <strong>can the team explain, test and safely own what the change does?</strong></p>
<p>AI-generated code should go through the same engineering review as any other contribution, with extra attention to assumptions, dependencies and the context the model could not see.</p>
<h2>Start with the requirement</h2>
<p>Before reading the diff, compare it with the issue or product requirement. Does the change solve the actual user problem? Does it introduce a new behavior that nobody asked for? A tidy implementation can still be the wrong implementation.</p>
<h2>Eight checks for an AI-assisted pull request</h2>
<ol>
<li><strong>Scope:</strong> Is every changed file relevant to the task? Ask why each unexpected file changed.</li>
<li><strong>Behavior:</strong> Can you explain the behavior before and after the change, including edge cases?</li>
<li><strong>Tests:</strong> Do tests cover the requirement and likely failure paths, or do they merely repeat the implementation?</li>
<li><strong>Dependencies:</strong> Did the change add a package, action, container image or remote service? Check its source, maintenance, permissions and version pinning.</li>
<li><strong>Secrets and data:</strong> Look for credentials in code and logs, unsafe handling of user data, and accidental exposure through debug output.</li>
<li><strong>Failure handling:</strong> What happens when a network call, database query or external dependency times out or returns malformed data?</li>
<li><strong>Operations:</strong> Can the change be monitored, rolled back and understood by the person on call?</li>
<li><strong>Explanation:</strong> Does the author—or the engineer responsible for the change—understand why this approach is appropriate?</li>
</ol>
<p>The checklist is not a substitute for automated tools or a real review. It helps the reviewer ask better questions and gives the engineer a repeatable way to inspect generated changes.</p>
<h2>Watch for “looks right” code</h2>
<p>Generated code can be syntactically clean while relying on a guessed API, an outdated pattern or an assumption that is false in your environment. Run the tests. Inspect the dependency diff. Verify the behavior against the real requirement. If the patch is too large to understand, reduce its scope before merging.</p>
<p>The <a href="https://www.linuxfoundation.org/research/ai-impact-on-cybersecurity-2026">Linux Foundation’s 2026 software security research</a> examines the pressure AI-assisted development puts on review and security practices. The practical takeaway for a team is simple: faster authoring still needs proportionate verification.</p>
<h2>Keep the human accountable</h2>
<p>A useful pull request should make it easy to answer: what changed, why, how was it checked, what could fail, and how do we recover? AI can help draft those answers, but the person approving the change owns the decision.</p>
<p>For a small team, start with one repository and one low-risk use case. Compare review corrections and escaped defects over time. Expand only when the process remains understandable and safe.</p>
<p>I write about delivery systems, Linux/DevOps, AI workflows and technical project management. More about my work is at <a href="https://umer-amin.vercel.app/">umer-amin.vercel.app</a>.</p>
<p><strong>What is the one thing you always check in a pull request, even when every test passes?</strong></p>
<h2>Further reading</h2>
<ul>
<li><a href="https://www.linuxfoundation.org/research/ai-impact-on-cybersecurity-2026">Linux Foundation: State of AI Impact on Software Security and Cybersecurity 2026</a></li>
</ul>
<p>#DevOps #AICoding #CodeReview #DevSecOps</p>
]]></content:encoded></item><item><title><![CDATA[AI Agents in DevOps: A Safer Path from Pull Request to Production]]></title><description><![CDATA[A practical guide to AI agents in DevOps: least privilege, human review, CI/CD checks, audit trails and tested rollback before production changes.]]></description><link>https://umeramindurrani.hashnode.dev/ai-agents-in-devops-a-safer-path-from-pull-request-to-production</link><guid isPermaLink="true">https://umeramindurrani.hashnode.dev/ai-agents-in-devops-a-safer-path-from-pull-request-to-production</guid><category><![CDATA[Devops]]></category><category><![CDATA[ai agents]]></category><category><![CDATA[DevSecOps]]></category><dc:creator><![CDATA[Umer Amin Durrani]]></dc:creator><pubDate>Sat, 07 Nov 2026 09:48:43 GMT</pubDate><content:encoded><![CDATA[<p>An AI agent can generate a deployment plan in seconds. That does not mean it should have production credentials.</p>
<p>The hard question for DevOps teams is no longer only <strong>“Can the agent do the task?”</strong> It is <strong>“What evidence, permissions and recovery path must exist before it can act?”</strong></p>
<p>That distinction matters as AI-generated code and automation spread through delivery pipelines. The Linux Foundation’s <a href="https://www.linuxfoundation.org/research/ai-impact-on-cybersecurity-2026">2026 research on AI and software security</a> highlights the tension: teams are moving faster, while security review and human expertise still need to keep pace.</p>
<p>Here is a practical way to think about an AI-enabled delivery workflow—without giving an agent the keys to production on day one.</p>
<h2>Start with a job, not an agent</h2>
<p>“Let’s add an AI agent to DevOps” is not a useful requirement. Pick one bounded, repetitive job first:</p>
<ul>
<li>Summarise a failed CI run and link to the relevant logs.</li>
<li>Draft a change request from an approved template.</li>
<li>Flag infrastructure drift for a human to review.</li>
<li>Prepare a rollback checklist from known deployment metadata.</li>
</ul>
<p>Define what success looks like before choosing a model or framework. For example: does the output point to the right evidence, avoid inventing causes, and save an engineer time without hiding uncertainty?</p>
<h2>Give it an authority ladder</h2>
<p>A safe workflow should increase authority in deliberate steps:</p>
<ol>
<li><strong>Observe:</strong> Read approved logs, metrics and repository files.</li>
<li><strong>Explain:</strong> Summarise what it found, with links to evidence and uncertainty clearly stated.</li>
<li><strong>Propose:</strong> Draft an issue, pull request or runbook change—never silently merge it.</li>
<li><strong>Prove:</strong> Run tests, policy checks, dependency scans and infrastructure validation in an isolated environment.</li>
<li><strong>Approve:</strong> Require a named human to review changes that affect shared or production systems.</li>
<li><strong>Act:</strong> Allow only a narrowly scoped, auditable action after the required checks pass.</li>
<li><strong>Verify:</strong> Check the service after the change and make the rollback path visible.</li>
</ol>
<p>The agent’s access should match the current step. A log summariser does not need write access. A PR drafter does not need a production token. If a task needs elevated access, make that a separate, time-limited approval—not a permission inherited by every agent run.</p>
<h2>Make the pipeline do the trusting</h2>
<p>A useful mental model is:</p>
<p>define task → collect evidence → draft change → validate → approve → deploy → verify</p>
<p>Each arrow should have a clear owner and a record. Keep agent identity separate from human identity, use short-lived credentials, restrict tools and repositories, and log the inputs, proposed actions, approvals and results. Run generated changes through the same tests and security checks as human-written changes.</p>
<p>For infrastructure changes, validate plans before applying them. For application changes, use a branch and pull request. For production operations, prefer reversible actions and small blast radiuses. “The model said it was safe” is not a control.</p>
<h2>Design for the bad day</h2>
<p>AI output can be plausible and still be wrong. The runbook should say what happens when the agent is unsure, sees conflicting signals, hits a permission boundary or fails a check:</p>
<ul>
<li>Stop and explain what is missing.</li>
<li>Escalate to a named human owner.</li>
<li>Preserve the evidence needed to investigate.</li>
<li>Do not retry a risky action blindly.</li>
<li>Keep a tested rollback or recovery procedure available.</li>
</ul>
<p>Measure quality with operational signals, not just how quickly the agent produced text: accepted versus rejected suggestions, escaped defects, policy violations, time to detect, recovery time and human overrides. Start in read-only or draft mode; expand only when the workflow performs reliably against real cases.</p>
<h2>The point is better operations, not more automation</h2>
<p>The most useful AI-enabled DevOps system may be the one that says, <strong>“I found three likely causes; here is the evidence; I’m not changing production until you approve.”</strong> That is not a weak agent. It is a system designed to keep accountability clear.</p>
<p>I work at the intersection of technical project management, Linux/DevOps, security-minded delivery and AI workflow design. My focus is turning ambitious ideas into systems with clear scope, ownership, controls and a practical handover.</p>
<p>Explore more of my work and thinking at <a href="https://umer-amin.vercel.app/">umer-amin.vercel.app</a>.</p>
<p><strong>A question for platform and DevOps teams:</strong> which task would you trust an AI agent to <em>prepare</em> today—and what evidence would it need before you let it <em>execute</em>?</p>
<h3>Further reading</h3>
<ul>
<li><a href="https://www.linuxfoundation.org/research/ai-impact-on-cybersecurity-2026">Linux Foundation: State of AI Impact on Software Security and Cybersecurity 2026</a></li>
<li><a href="https://www.cncf.io/blog/2026/07/21/platform-engineering-for-the-agentic-enterprise-managing-applications-resources-and-ai-agents/">CNCF: Platform engineering for the agentic enterprise</a></li>
</ul>
<p>#DevOps #AIAgents #PlatformEngineering #DevSecOps #SRE</p>
]]></content:encoded></item></channel></rss>