<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel>
  <title>Engineering Journal - S M Alif Ahmmed</title>
  <link>https://smalifahmmed.com/blog</link>
  <atom:link href="https://smalifahmmed.com/rss.xml" rel="self" type="application/rss+xml" />
  <language>en-us</language>
  <description>Backend engineering notes on Laravel, APIs, databases, performance, security, and production operations.</description>
  <item>
    <title><![CDATA[Laravel Best Practices That Survive Production]]></title>
    <link>https://smalifahmmed.com/blog/laravel-best-practices-that-survive-production</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/laravel-best-practices-that-survive-production</guid>
    <category>Laravel</category>
    <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[A practical set of conventions I apply to every Laravel codebase: where business logic belongs, how to keep controllers thin without inventing a framework on top of the framework, and which shortcuts stop paying off once a team grows past two developers.]]></description>
  </item>
  <item>
    <title><![CDATA[Designing REST APIs That Clients Can Live With]]></title>
    <link>https://smalifahmmed.com/blog/designing-rest-apis-that-clients-can-live-with</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/designing-rest-apis-that-clients-can-live-with</guid>
    <category>REST APIs</category>
    <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[Resource modelling, pagination, filtering, and error semantics for APIs that serve a web client, a mobile app, and third-party integrators at the same time — including the conventions I document before writing the first endpoint.]]></description>
  </item>
  <item>
    <title><![CDATA[Laravel Authentication: Choosing the Right Guard]]></title>
    <link>https://smalifahmmed.com/blog/laravel-authentication-choosing-the-right-guard</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/laravel-authentication-choosing-the-right-guard</guid>
    <category>Authentication</category>
    <pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[Session guards, token guards, and the decision I make first on every project: is this a first-party client sharing a domain, or a third-party consumer that needs credentials it can rotate independently?]]></description>
  </item>
  <item>
    <title><![CDATA[Laravel Sanctum in Multi-Client Systems]]></title>
    <link>https://smalifahmmed.com/blog/laravel-sanctum-in-multi-client-systems</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/laravel-sanctum-in-multi-client-systems</guid>
    <category>Authentication</category>
    <pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[Running a cookie-authenticated SPA and a token-authenticated mobile client against the same Laravel API — stateful domains, token abilities, revocation, and the CORS configuration that trips most teams up once.]]></description>
  </item>
  <item>
    <title><![CDATA[Payment Gateway Integration: Idempotency First]]></title>
    <link>https://smalifahmmed.com/blog/payment-gateway-integration-idempotency-first</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/payment-gateway-integration-idempotency-first</guid>
    <category>Payment Gateway</category>
    <pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[Money makes retries dangerous. This is the integration skeleton I reuse for every gateway: an idempotency key per attempt, a local payment intent record, webhook-driven state transitions, and a reconciliation job that assumes the network lied.]]></description>
  </item>
  <item>
    <title><![CDATA[Stripe Integration: A Backend Checklist]]></title>
    <link>https://smalifahmmed.com/blog/stripe-integration-a-backend-checklist</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/stripe-integration-a-backend-checklist</guid>
    <category>Payment Gateway</category>
    <pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[The server-side details that matter when integrating Stripe: minor units, webhook event selection, customer mapping, refunds and partial refunds, and keeping test and live keys from ever meeting in the same environment.]]></description>
  </item>
  <item>
    <title><![CDATA[PayPal Integration: Notes From Production]]></title>
    <link>https://smalifahmmed.com/blog/paypal-integration-notes-from-production</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/paypal-integration-notes-from-production</guid>
    <category>Payment Gateway</category>
    <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[Order capture, deferred settlement, and the operational differences between PayPal and card-first gateways — plus how to keep a single internal payment model when two providers disagree about the shape of a transaction.]]></description>
  </item>
  <item>
    <title><![CDATA[Database Optimization: Start With the Plan]]></title>
    <link>https://smalifahmmed.com/blog/database-optimization-start-with-the-plan</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/database-optimization-start-with-the-plan</guid>
    <category>Database</category>
    <pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[How I approach a slow query: read the execution plan before touching indexes, understand the access path, and change one thing at a time. Includes the index patterns that fix most real-world Laravel queries.]]></description>
  </item>
  <item>
    <title><![CDATA[MySQL Performance Tuning for Application Engineers]]></title>
    <link>https://smalifahmmed.com/blog/mysql-performance-tuning-for-application-engineers</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/mysql-performance-tuning-for-application-engineers</guid>
    <category>Database</category>
    <pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[The subset of MySQL configuration and behaviour that application engineers can act on: buffer pool sizing, connection limits, slow query logging, and understanding locking well enough to avoid deadlocks in transactional code.]]></description>
  </item>
  <item>
    <title><![CDATA[Laravel Performance: Where the Time Actually Goes]]></title>
    <link>https://smalifahmmed.com/blog/laravel-performance-where-the-time-actually-goes</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/laravel-performance-where-the-time-actually-goes</guid>
    <category>Performance</category>
    <pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[A profiling-first approach to Laravel performance: measuring boot cost, database time, and external calls separately, then applying caching only where the numbers justify it.]]></description>
  </item>
  <item>
    <title><![CDATA[Queue Jobs: Designing for Retries]]></title>
    <link>https://smalifahmmed.com/blog/queue-jobs-designing-for-retries</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/queue-jobs-designing-for-retries</guid>
    <category>Laravel</category>
    <pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[Jobs will run twice. This article covers idempotent job design, backoff strategy, unique jobs, batching, and the monitoring you need before you can safely move critical work off the request cycle.]]></description>
  </item>
  <item>
    <title><![CDATA[Caching Strategies Without Stale Data Surprises]]></title>
    <link>https://smalifahmmed.com/blog/caching-strategies-without-stale-data-surprises</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/caching-strategies-without-stale-data-surprises</guid>
    <category>Performance</category>
    <pubDate>Thu, 29 Jan 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[Cache-aside, write-through, and tagged invalidation in Laravel — how to choose per use case, and how to make staleness a deliberate product decision rather than an accident discovered in support tickets.]]></description>
  </item>
  <item>
    <title><![CDATA[The Repository Pattern: When It Earns Its Keep]]></title>
    <link>https://smalifahmmed.com/blog/repository-pattern-when-it-earns-its-keep</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/repository-pattern-when-it-earns-its-keep</guid>
    <category>Architecture</category>
    <pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[An honest assessment of repositories in Laravel — the cases where they add real value, the cases where they duplicate Eloquent for no benefit, and a middle path that keeps query logic testable without a parallel ORM.]]></description>
  </item>
  <item>
    <title><![CDATA[Service Container and Dependency Injection in Practice]]></title>
    <link>https://smalifahmmed.com/blog/service-container-and-dependency-injection-in-practice</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/service-container-and-dependency-injection-in-practice</guid>
    <category>Laravel</category>
    <pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate>
    <description><![CDATA[How Laravel's container resolves dependencies, when to bind interfaces, contextual binding for multi-provider integrations, and why constructor injection makes tests shorter than facade mocking.]]></description>
  </item>
  <item>
    <title><![CDATA[API Versioning Strategies That Do Not Fork Your Codebase]]></title>
    <link>https://smalifahmmed.com/blog/api-versioning-strategies-that-do-not-fork-your-codebase</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/api-versioning-strategies-that-do-not-fork-your-codebase</guid>
    <category>REST APIs</category>
    <pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[URI versioning, header negotiation, and additive evolution — with a deprecation process that gives integrators a timeline instead of a surprise, and a rule for what actually counts as a breaking change.]]></description>
  </item>
  <item>
    <title><![CDATA[Error Handling That Helps the Person On Call]]></title>
    <link>https://smalifahmmed.com/blog/error-handling-that-helps-the-person-on-call</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/error-handling-that-helps-the-person-on-call</guid>
    <category>Laravel</category>
    <pubDate>Thu, 04 Dec 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Exception design, structured logging, correlation ids, and the difference between an error a user can act on and an error an engineer must. Written from the perspective of debugging someone else's incident at 2am.]]></description>
  </item>
  <item>
    <title><![CDATA[Validation Beyond required and string]]></title>
    <link>https://smalifahmmed.com/blog/validation-beyond-required-and-string</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/validation-beyond-required-and-string</guid>
    <category>Laravel</category>
    <pubDate>Thu, 20 Nov 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Business-rule validation, cross-field constraints, custom rule objects, and validating at the right layer so invariants cannot be bypassed by a queue job or an admin script.]]></description>
  </item>
  <item>
    <title><![CDATA[Testing Laravel With PHPUnit: A Pragmatic Pyramid]]></title>
    <link>https://smalifahmmed.com/blog/testing-laravel-with-phpunit-a-pragmatic-pyramid</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/testing-laravel-with-phpunit-a-pragmatic-pyramid</guid>
    <category>PHP</category>
    <pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[What to unit test, what to cover with feature tests, and how to keep a suite fast enough that engineers run it before pushing. Includes factory design and database strategy for realistic tests.]]></description>
  </item>
  <item>
    <title><![CDATA[Testing With Pest: Readable Suites at Scale]]></title>
    <link>https://smalifahmmed.com/blog/testing-with-pest-readable-suites</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/testing-with-pest-readable-suites</guid>
    <category>PHP</category>
    <pubDate>Thu, 23 Oct 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Migrating a PHPUnit suite to Pest incrementally, using datasets for edge-case coverage, and writing expectations that a reviewer can read without opening the implementation.]]></description>
  </item>
  <item>
    <title><![CDATA[Docker for Laravel: Development and Parity]]></title>
    <link>https://smalifahmmed.com/blog/docker-for-laravel-development-and-parity</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/docker-for-laravel-development-and-parity</guid>
    <category>DevOps</category>
    <pubDate>Thu, 09 Oct 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[A container setup that mirrors production closely enough to catch environment bugs before deployment: PHP-FPM, a web server, MySQL, Redis, a queue worker, and the volume choices that keep it fast on every platform.]]></description>
  </item>
  <item>
    <title><![CDATA[Linux Deployment for Laravel Applications]]></title>
    <link>https://smalifahmmed.com/blog/linux-deployment-for-laravel-applications</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/linux-deployment-for-laravel-applications</guid>
    <category>Linux</category>
    <pubDate>Thu, 25 Sep 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Preparing a VPS to run a Laravel application responsibly: users and permissions, PHP-FPM pool sizing, process supervision for queue workers, log rotation, and the deployment sequence that avoids serving a half-updated application.]]></description>
  </item>
  <item>
    <title><![CDATA[CloudPanel: Managing PHP Applications Without the Control-Panel Tax]]></title>
    <link>https://smalifahmmed.com/blog/cloudpanel-managing-php-applications-without-a-control-panel-tax</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/cloudpanel-managing-php-applications-without-a-control-panel-tax</guid>
    <category>DevOps</category>
    <pubDate>Thu, 11 Sep 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Using a lightweight control panel for site provisioning, PHP settings, and certificates while keeping deployments scripted and reproducible — plus what I still manage by hand and why.]]></description>
  </item>
  <item>
    <title><![CDATA[Apache vs Nginx for PHP Workloads]]></title>
    <link>https://smalifahmmed.com/blog/apache-vs-nginx-for-php-workloads</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/apache-vs-nginx-for-php-workloads</guid>
    <category>Linux</category>
    <pubDate>Thu, 28 Aug 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[A practical comparison for PHP-FPM deployments: request handling models, configuration ergonomics, static asset serving, and when the choice genuinely affects throughput versus when it is preference.]]></description>
  </item>
  <item>
    <title><![CDATA[VPS Deployment: The Checklist Before You Go Live]]></title>
    <link>https://smalifahmmed.com/blog/vps-deployment-checklist-before-you-go-live</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/vps-deployment-checklist-before-you-go-live</guid>
    <category>DevOps</category>
    <pubDate>Thu, 14 Aug 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[The hardening, monitoring, and recovery steps I complete before pointing a domain at a new server — written as a checklist because launch day is exactly when steps get skipped.]]></description>
  </item>
  <item>
    <title><![CDATA[System Design for Backend Engineers: A Working Method]]></title>
    <link>https://smalifahmmed.com/blog/system-design-for-backend-engineers-a-working-method</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/system-design-for-backend-engineers-a-working-method</guid>
    <category>System Design</category>
    <pubDate>Thu, 31 Jul 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[How I approach a design question: clarify constraints, estimate load, choose the storage model, define the failure behaviour, then draw the diagram. The diagram is the output, not the starting point.]]></description>
  </item>
  <item>
    <title><![CDATA[Microservices: What You Actually Buy]]></title>
    <link>https://smalifahmmed.com/blog/microservices-what-you-actually-buy</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/microservices-what-you-actually-buy</guid>
    <category>System Design</category>
    <pubDate>Thu, 17 Jul 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[The organisational and operational costs of service decomposition, the failure modes it introduces, and the checklist I use to decide whether a modular monolith solves the same problem for a fraction of the price.]]></description>
  </item>
  <item>
    <title><![CDATA[Open Source Development: Shipping Software Others Depend On]]></title>
    <link>https://smalifahmmed.com/blog/open-source-development-shipping-software-others-depend-on</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/open-source-development-shipping-software-others-depend-on</guid>
    <category>Open Source</category>
    <pubDate>Thu, 03 Jul 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[What changes when strangers depend on your code: semantic versioning discipline, deprecation policy, issue triage, and documentation that answers the question a reader actually arrived with.]]></description>
  </item>
  <item>
    <title><![CDATA[Laravel Package Development: From Idea to Packagist]]></title>
    <link>https://smalifahmmed.com/blog/laravel-package-development-from-idea-to-packagist</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/laravel-package-development-from-idea-to-packagist</guid>
    <category>Open Source</category>
    <pubDate>Thu, 19 Jun 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Structuring a reusable Laravel package: service providers, publishable configuration, migrations, testing against multiple framework versions, and keeping the public API small enough to support.]]></description>
  </item>
  <item>
    <title><![CDATA[Filament: Building Admin Panels That Scale]]></title>
    <link>https://smalifahmmed.com/blog/filament-building-admin-panels-that-scale</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/filament-building-admin-panels-that-scale</guid>
    <category>Laravel</category>
    <pubDate>Thu, 05 Jun 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Resource design, custom pages, and authorization in Filament — plus keeping the admin panel fast when tables grow past a comfortable size and policies get genuinely complex.]]></description>
  </item>
  <item>
    <title><![CDATA[React and Laravel: Designing the Contract]]></title>
    <link>https://smalifahmmed.com/blog/react-and-laravel-designing-the-contract</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/react-and-laravel-designing-the-contract</guid>
    <category>React</category>
    <pubDate>Thu, 22 May 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Where responsibilities belong when a React client talks to a Laravel API: server-side pagination and filtering, cache invalidation on mutations, optimistic updates, and error handling that respects the API's error codes.]]></description>
  </item>
  <item>
    <title><![CDATA[TypeScript for Backend Engineers]]></title>
    <link>https://smalifahmmed.com/blog/typescript-for-backend-engineers</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/typescript-for-backend-engineers</guid>
    <category>TypeScript</category>
    <pubDate>Thu, 08 May 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Using the type system to encode API contracts: discriminated unions for response states, branded types for identifiers, and generated types that fail the build when the backend changes shape.]]></description>
  </item>
  <item>
    <title><![CDATA[AI-Assisted Development Without Losing Judgement]]></title>
    <link>https://smalifahmmed.com/blog/ai-assisted-development-without-losing-judgement</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/ai-assisted-development-without-losing-judgement</guid>
    <category>AI Development</category>
    <pubDate>Thu, 24 Apr 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Where AI tooling genuinely speeds up backend work, where it produces confident but wrong code, and the review discipline that keeps generated code from becoming unreviewed code in production.]]></description>
  </item>
  <item>
    <title><![CDATA[Prompt Engineering for Engineering Tasks]]></title>
    <link>https://smalifahmmed.com/blog/prompt-engineering-for-engineering-tasks</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/prompt-engineering-for-engineering-tasks</guid>
    <category>AI Development</category>
    <pubDate>Thu, 10 Apr 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Structuring prompts for code work: supplying the constraints that matter, requesting explicit trade-offs, and iterating on the specification rather than the output.]]></description>
  </item>
  <item>
    <title><![CDATA[Git Workflow for Small Backend Teams]]></title>
    <link>https://smalifahmmed.com/blog/git-workflow-for-small-backend-teams</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/git-workflow-for-small-backend-teams</guid>
    <category>Career</category>
    <pubDate>Thu, 27 Mar 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[A branching and review model that fits teams of three to eight: short-lived branches, reviewable commits, migration coordination, and release tagging that makes rollbacks unambiguous.]]></description>
  </item>
  <item>
    <title><![CDATA[Debugging Production Applications Methodically]]></title>
    <link>https://smalifahmmed.com/blog/debugging-production-applications-methodically</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/debugging-production-applications-methodically</guid>
    <category>Linux</category>
    <pubDate>Thu, 13 Mar 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[A repeatable method for production incidents: establish the timeline, narrow the blast radius, form one hypothesis at a time, and use logs, metrics, and database state as evidence rather than intuition.]]></description>
  </item>
  <item>
    <title><![CDATA[Security Best Practices for Laravel Applications]]></title>
    <link>https://smalifahmmed.com/blog/security-best-practices-for-laravel-applications</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/security-best-practices-for-laravel-applications</guid>
    <category>Security</category>
    <pubDate>Thu, 27 Feb 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Authorization boundaries, mass assignment, file upload handling, secrets management, and dependency hygiene — the practical controls that prevent the vulnerabilities I most often find in code review.]]></description>
  </item>
  <item>
    <title><![CDATA[Career Growth: From Feature Work to System Ownership]]></title>
    <link>https://smalifahmmed.com/blog/career-growth-from-feature-work-to-system-ownership</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/career-growth-from-feature-work-to-system-ownership</guid>
    <category>Career</category>
    <pubDate>Thu, 13 Feb 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[The shift from completing tickets to owning outcomes — how estimation, communication, and understanding business constraints change what senior actually means in backend engineering.]]></description>
  </item>
  <item>
    <title><![CDATA[Leading a Backend Team: Standards and Review Culture]]></title>
    <link>https://smalifahmmed.com/blog/leading-a-backend-team-standards-and-review-culture</link>
    <guid isPermaLink="true">https://smalifahmmed.com/blog/leading-a-backend-team-standards-and-review-culture</guid>
    <category>Engineering Leadership</category>
    <pubDate>Thu, 30 Jan 2025 00:00:00 GMT</pubDate>
    <description><![CDATA[Establishing code review norms, onboarding that produces contributors in days rather than weeks, and technical standards a team adopts because they reduce work rather than because they were mandated.]]></description>
  </item>
</channel></rss>