41554 blogs ยท [ { "id": "01a07df0-ea65-7369-9629-65a71d22ca03", "title": "Fixing PHPStan Issues in Livewire Components with Larastan-Livewire", "url": "https://ashallendesign.co.uk/blog/larastan-livewire", "published_at": "2026-09-03T00:00:00+00:00" }, { "id": "01a07df0-ea65-7369-9629-65a71dfeb615", "title": "The `clamp` Function in PHP 8.6", "url": "https://ashallendesign.co.uk/blog/php-86-clamp", "published_at": "2026-07-28T00:00:00+00:00" }, { "id": "01a07df0-ea65-7369-9629-65a71e85c5c9", "title": "Measuring Performance with the \"Benchmark\" Class in Laravel", "url": "https://ashallendesign.co.uk/blog/laravel-benchmark-class", "published_at": "2026-01-22T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397351061a3", "title": "Reduce Duplicate Cache Queries in Laravel with \"Cache::memo()\"", "url": "https://ashallendesign.co.uk/blog/laravel-cache-memo", "published_at": "2026-01-21T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397358ae091", "title": "How to Send Telegram Messages in Laravel", "url": "https://ashallendesign.co.uk/blog/laravel-telegram-messages", "published_at": "2026-01-20T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139735c14bea", "title": "Memoisation in Laravel Using the \"once\" Helper", "url": "https://ashallendesign.co.uk/blog/laravel-memoisation-once-helper", "published_at": "2026-01-19T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139736858837", "title": "Using AI to Build a Laravel Feature with Junie in PhpStorm", "url": "https://ashallendesign.co.uk/blog/phpstorm-junie-laravel", "published_at": "2026-01-16T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973731f1da", "title": "How AI Will Impact My Job as a Freelance Web Developer in 2026", "url": "https://ashallendesign.co.uk/blog/web-development-ai-2026", "published_at": "2026-01-13T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397377f47b4", "title": "Formatting PHP Code with PHP CS Fixer", "url": "https://ashallendesign.co.uk/blog/php-cs-fixer", "published_at": "2025-12-18T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139737d9a280", "title": "The Difference Between ?: and ?? in PHP", "url": "https://ashallendesign.co.uk/blog/php-ternary-operator-and-null-coalescing-operators", "published_at": "2025-11-20T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139738c4b920", "title": "Black Friday 2025 - Up to 50% off!", "url": "https://ashallendesign.co.uk/blog/black-friday-2025", "published_at": "2025-11-18T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973910bd41", "title": "Immutable and Mutable Dates in PHP", "url": "https://ashallendesign.co.uk/blog/php-dates", "published_at": "2025-11-17T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397391f2c81", "title": "Saloon vs Guzzle vs SDK vs Http Facade for Laravel API Integrations", "url": "https://ashallendesign.co.uk/blog/saloon-guzzle-or-http-facade", "published_at": "2025-11-13T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139739b1daed", "title": "Email Utilities for Laravel v1.0 Released! ๐ŸŽ‰", "url": "https://ashallendesign.co.uk/blog/email-utilities-for-laravel", "published_at": "2025-11-10T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973aac34e1", "title": "Why I Deleted Social Media From My Phone", "url": "https://ashallendesign.co.uk/blog/deleted-social-media", "published_at": "2025-11-07T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973b88fd94", "title": "Returning HTTP 404 Responses Instead of 403 for Unauthorised Access", "url": "https://ashallendesign.co.uk/blog/unauthorised-access-404", "published_at": "2025-10-31T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973c4d89b1", "title": "Run PHPUnit and Pest Tests Without Vite Assets in Laravel", "url": "https://ashallendesign.co.uk/blog/laravel-tests-without-vite", "published_at": "2025-10-29T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973ccc9d92", "title": "The Dangers of Dynamic Method Calls in PHP", "url": "https://ashallendesign.co.uk/blog/php-dynamic-method-call-dangers", "published_at": "2025-09-30T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973ce261fa", "title": "The `match` Expression in PHP", "url": "https://ashallendesign.co.uk/blog/php-match-expression", "published_at": "2025-09-18T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973da03466", "title": "Check If a String is Valid JSON in PHP", "url": "https://ashallendesign.co.uk/blog/php-json-validate", "published_at": "2025-09-16T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973e78afb1", "title": "A Guide to Serialization in PHP", "url": "https://ashallendesign.co.uk/blog/php-serialization", "published_at": "2025-09-11T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973ee7efeb", "title": "Redactable Models v1.0 is Now Available!", "url": "https://ashallendesign.co.uk/blog/redactable-models-v1", "published_at": "2025-09-09T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973fdba20e", "title": "Fetching Favicons using the DuckDuckGo Icons API in Laravel", "url": "https://ashallendesign.co.uk/blog/favicon-fetcher-duck-duck-go", "published_at": "2025-09-03T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13973ff3b328", "title": "Create AI Agents in Laravel โ€” The Simple Way", "url": "https://ashallendesign.co.uk/blog/laragent", "published_at": "2025-08-07T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139740931869", "title": "The \"never\" Type in PHP", "url": "https://ashallendesign.co.uk/blog/php-never-type", "published_at": "2025-06-20T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139740eb4259", "title": "Check if a Signed URL is Valid in Laravel Tests", "url": "https://ashallendesign.co.uk/blog/check-if-a-signed-url-is-valid-in-laravel-tests", "published_at": "2025-06-18T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139740f63d37", "title": "Pass a Query Builder to \"whereIn\" to Reduce Your DB Queries", "url": "https://ashallendesign.co.uk/blog/laravel-wherein-reduce-queries", "published_at": "2025-06-16T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397414c13bd", "title": "Asymmetric Property Visibility in PHP", "url": "https://ashallendesign.co.uk/blog/php-asymmetric-property-visibility", "published_at": "2025-06-13T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139741eae197", "title": "Formatting Monetary Values in JavaScript", "url": "https://ashallendesign.co.uk/blog/formatting-monetary-values-in-javascript", "published_at": "2025-06-11T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974249626e", "title": "Check Every Key Exists in a PHP Array with Arr::hasAll()", "url": "https://ashallendesign.co.uk/blog/arr-has-all-php-array", "published_at": "2025-06-09T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139742729ad9", "title": "Cast Laravel Model Fields to \"Illuminate\\Support\\Uri\" with \"AsUri\"", "url": "https://ashallendesign.co.uk/blog/laravel-as-uri-model-cast", "published_at": "2025-06-07T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974331f17e", "title": "A Guide to Custom Model Casts in Laravel", "url": "https://ashallendesign.co.uk/blog/custom-laravel-casts", "published_at": "2025-04-14T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139743e5b24e", "title": "Covariance and Contravariance in PHP", "url": "https://ashallendesign.co.uk/blog/covariance-and-contravariance-in-php", "published_at": "2025-04-03T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397441dfd6d", "title": "Human-Readable File Sizes in Laravel (KB, MB, GB)", "url": "https://ashallendesign.co.uk/blog/laravel-human-readable-file-sizes", "published_at": "2025-04-02T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139744e3ea72", "title": "Microservices in Laravel", "url": "https://ashallendesign.co.uk/blog/laravel-microservices", "published_at": "2025-03-31T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974500e3ee", "title": "Formatting and Spelling Ordinal Numbers in PHP and Laravel", "url": "https://ashallendesign.co.uk/blog/ordinal-numbers-in-php-and-laravel", "published_at": "2025-03-28T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397452de0f0", "title": "How to Filter Profanity in Laravel with Squeaky", "url": "https://ashallendesign.co.uk/blog/squeaky-laravel-profanity-filter", "published_at": "2025-03-04T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397460c9c20", "title": "Preventing Destructive Commands from Running in Laravel", "url": "https://ashallendesign.co.uk/blog/laravel-prevent-destructive-commands", "published_at": "2025-02-17T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139746a76e1d", "title": "The Web Dev's Guide to Freelancing is Now Available! ๐ŸŽ‰", "url": "https://ashallendesign.co.uk/blog/the-web-devs-guide-to-freelancing", "published_at": "2025-01-14T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397478c4ad0", "title": "Access Route Model-Bound Models in Laravel Form Requests with \"#[RouteParameter]\"", "url": "https://ashallendesign.co.uk/blog/laravel-route-parameter-attribute", "published_at": "2024-12-09T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139747ae06c7", "title": "Working with Images in Laravel Using Intervention Image", "url": "https://ashallendesign.co.uk/blog/using-intervention-image-in-laravel", "published_at": "2024-11-25T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139747bc8001", "title": "Building Livewire Components with Volt", "url": "https://ashallendesign.co.uk/blog/laravel-volt", "published_at": "2024-10-28T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397484e7ec4", "title": "How to Set Up Your Mac for Web Design", "url": "https://ashallendesign.co.uk/blog/how-to-set-up-your-mac-for-web-design", "published_at": "2024-10-23T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139748ebc1b7", "title": "A Guide to Laravel Pipelines", "url": "https://ashallendesign.co.uk/blog/laravel-pipeline", "published_at": "2024-09-30T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397499cada2", "title": "Freelance Web Dev Hub: Free Community for Web Developers", "url": "https://ashallendesign.co.uk/blog/freelance-web-dev-hub", "published_at": "2024-09-17T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139749e15dc2", "title": "Review: Advanced Inertia", "url": "https://ashallendesign.co.uk/blog/advanced-inertia", "published_at": "2024-09-12T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139749f93900", "title": "Free Tool: Freelance Rate Calculator", "url": "https://ashallendesign.co.uk/blog/freelance-rate-calculator", "published_at": "2024-09-09T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974a3891e2", "title": "Limit Eager Loaded Relationships on Laravel Models", "url": "https://ashallendesign.co.uk/blog/limit-eager-loaded-relationships", "published_at": "2024-09-08T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974b26067a", "title": "The Web Dev's Guide to Freelancing (Pre-Order Now)", "url": "https://ashallendesign.co.uk/blog/the-web-devs-guide-to-freelancing-pre-orders", "published_at": "2024-09-02T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974b6508c8", "title": "Transform Your Business Strategy with a Powerful SWOT Analysis", "url": "https://ashallendesign.co.uk/blog/transform-business-strategy-powerful-swot-analysis", "published_at": "2024-08-29T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974c3365ea", "title": "Glimpse: Preview Your Laravel Pull Requests", "url": "https://ashallendesign.co.uk/blog/glimpse", "published_at": "2024-08-20T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974d0bb950", "title": "New Array Functions in PHP 8.4", "url": "https://ashallendesign.co.uk/blog/php-84-array-functions", "published_at": "2024-08-18T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974dc179ff", "title": "Find Outdated Composer Dependencies Using \"composer outdated\"", "url": "https://ashallendesign.co.uk/blog/composer-outdated", "published_at": "2024-08-18T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974dfa3126", "title": "PHP 8.4 Property Hooks", "url": "https://ashallendesign.co.uk/blog/php-84-property-hooks", "published_at": "2024-08-18T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974dfb1423", "title": "Ensuring Environment Variables Are Set in Laravel", "url": "https://ashallendesign.co.uk/blog/env-get-or-fail", "published_at": "2024-08-12T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974e9f7747", "title": "Profanify: Prevent Profanity in Your PHP Codebase", "url": "https://ashallendesign.co.uk/blog/profanify", "published_at": "2024-08-05T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974f1f2c1a", "title": "Redact Model Fields in Laravel", "url": "https://ashallendesign.co.uk/blog/redact-model-fields-in-laravel", "published_at": "2024-07-28T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974fa1d7fc", "title": "Building a CLI with Laravel Prompts", "url": "https://ashallendesign.co.uk/blog/laravel-prompts-api-client", "published_at": "2024-07-23T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974fc1467d", "title": "Named Arguments in PHP", "url": "https://ashallendesign.co.uk/blog/php-named-arguments", "published_at": "2024-07-21T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13974ffd5ca0", "title": "Testing Saloon API Integrations in Laravel", "url": "https://ashallendesign.co.uk/blog/testing-saloon-api-integrations", "published_at": "2024-07-21T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139750bec1cb", "title": "Magic Constants in PHP", "url": "https://ashallendesign.co.uk/blog/php-magic-constants", "published_at": "2024-07-08T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975149a18d", "title": "The #[Override] Attribute in PHP", "url": "https://ashallendesign.co.uk/blog/php-attribute-override", "published_at": "2024-07-05T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397514eaf23", "title": "Lawman: Pest Architecture Testing for Saloon API Integrations", "url": "https://ashallendesign.co.uk/blog/saloon-lawman-architecture-testing", "published_at": "2024-07-03T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139751ca1459", "title": "Specify Allowed URL Schemes in Short URL", "url": "https://ashallendesign.co.uk/blog/short-url-allowed-schemes", "published_at": "2024-07-03T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397523e43d1", "title": "A Guide to PHP Attributes", "url": "https://ashallendesign.co.uk/blog/php-attributes", "published_at": "2024-07-02T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397527dcc2c", "title": "Validating Square Image Uploads in Laravel", "url": "https://ashallendesign.co.uk/blog/uploaded-square-image-laravel", "published_at": "2024-06-10T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397533ba5b1", "title": "Sending Email in Laravel with Mailgun", "url": "https://ashallendesign.co.uk/blog/sending-email-in-laravel-with-mailgun", "published_at": "2024-05-31T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397536f262f", "title": "Create Your Own Directory Project with Larafast", "url": "https://ashallendesign.co.uk/blog/create-your-own-directory-project-with-larafast", "published_at": "2024-05-15T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139753cd4d87", "title": "Architecture Testing in Laravel with Pest", "url": "https://ashallendesign.co.uk/blog/architecture-testing-in-laravel-with-pest", "published_at": "2024-05-14T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397541d5451", "title": "Why Are My Tests Failing?", "url": "https://ashallendesign.co.uk/blog/why-are-my-tests-failing", "published_at": "2024-05-09T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139754cb9b7e", "title": "Encrypting Queued Jobs, Notifications, Mail, and Listeners in Laravel", "url": "https://ashallendesign.co.uk/blog/encrypting-queued-classes-in-laravel", "published_at": "2024-05-06T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139755884521", "title": "Find Open-Source Laravel/PHP Projects to Contribute to", "url": "https://ashallendesign.co.uk/blog/find-a-pr", "published_at": "2024-04-22T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397567a9dc4", "title": "Using the \"Conditionable\" Trait In Laravel", "url": "https://ashallendesign.co.uk/blog/laravel-conditionable-trait", "published_at": "2024-04-17T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139757167f83", "title": "Working with DynamoDB in Laravel", "url": "https://ashallendesign.co.uk/blog/dynamodb-laravel", "published_at": "2024-04-13T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397579656a8", "title": "Readonly Classes and Properties in PHP", "url": "https://ashallendesign.co.uk/blog/readonly-classes-and-properties-in-php", "published_at": "2024-03-19T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139757e46ae6", "title": "Redacting Sensitive Parameters in PHP", "url": "https://ashallendesign.co.uk/blog/redacting-sensitive-parameters-in-php", "published_at": "2024-03-19T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397580b52b9", "title": "Data Transfer Objects (DTOs) in PHP", "url": "https://ashallendesign.co.uk/blog/data-transfer-objects-dtos-in-php", "published_at": "2024-03-19T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139758cd32d4", "title": "Larafast: Launch Your Startup Fast with Laravel", "url": "https://ashallendesign.co.uk/blog/larafast", "published_at": "2024-03-13T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139759aad3f4", "title": "Using `Collection::times()` in Laravel", "url": "https://ashallendesign.co.uk/blog/using-collection-times-in-laravel", "published_at": "2024-03-06T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975a2aa556", "title": "Validate Data Types in Laravel Collections Using the `ensure()` Method", "url": "https://ashallendesign.co.uk/blog/laravel-collection-ensure", "published_at": "2024-03-03T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975a46b789", "title": "Identifying Performance Issues in Laravel with Inspector", "url": "https://ashallendesign.co.uk/blog/identifying-performance-issues-in-laravel-with-inspector", "published_at": "2024-02-26T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975ab351ef", "title": "Processes and Artisan Commands in Laravel", "url": "https://ashallendesign.co.uk/blog/processes-and-artisan-commands-in-laravel", "published_at": "2024-02-06T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975aff64b5", "title": "Display Desktop Notifications in PHP CLI Applications", "url": "https://ashallendesign.co.uk/blog/display-desktop-notifications-in-php-cli-applications", "published_at": "2024-01-30T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975bbc727c", "title": "Automatically Hash Laravel Model Values Using the \"Hashed\" Cast", "url": "https://ashallendesign.co.uk/blog/automatically-hash-laravel-model-values-using-the-hashed-cast", "published_at": "2024-01-23T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975c838580", "title": "How to Check If a Laravel Collection Is Empty", "url": "https://ashallendesign.co.uk/blog/how-to-check-if-a-laravel-collection-is-empty", "published_at": "2024-01-08T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975d486557", "title": "How to Check If an Array Is Empty in PHP", "url": "https://ashallendesign.co.uk/blog/how-to-check-if-an-array-is-empty-in-php", "published_at": "2024-01-08T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975e3fa5d6", "title": "How to Check If an Array Is Empty in JavaScript", "url": "https://ashallendesign.co.uk/blog/how-to-check-if-an-array-is-empty-in-javascript", "published_at": "2024-01-08T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975e415f51", "title": "Securing Laravel forms using Cloudflare's Turnstile CAPTCHA", "url": "https://ashallendesign.co.uk/blog/laravel-cloudflare-turnstile", "published_at": "2023-12-11T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975ecaa0c0", "title": "Auditing Laravel Apps: Getting Into the Right Mindset", "url": "https://ashallendesign.co.uk/blog/auditing-laravel-apps-mindset", "published_at": "2023-11-23T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13975f84be5d", "title": "Black Friday 2023: Get 30% Off!", "url": "https://ashallendesign.co.uk/blog/black-friday-2023", "published_at": "2023-11-21T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13976070d3e6", "title": "A Guide to Feature Flags in Laravel Using Laravel Pennant", "url": "https://ashallendesign.co.uk/blog/feature-flags-using-laravel-pennant", "published_at": "2023-10-16T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139760796fa0", "title": "Saloon SDK Generator", "url": "https://ashallendesign.co.uk/blog/saloon-sdk-generator", "published_at": "2023-10-04T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397607b49b1", "title": "Consuming APIs In Laravel is Now Available! ๐ŸŽ‰", "url": "https://ashallendesign.co.uk/blog/consuming-apis-in-laravel", "published_at": "2023-10-03T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397614b941d", "title": "A Guide to Soft Deletes in Laravel", "url": "https://ashallendesign.co.uk/blog/a-guide-to-soft-deletes-in-laravel", "published_at": "2023-09-21T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-1397622facb6", "title": "Unlock Your Full Potential with \"The Battle Ready Programmer\" Bundle", "url": "https://ashallendesign.co.uk/blog/the-battle-ready-programmer", "published_at": "2023-08-30T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139762c62017", "title": "A Guide to Encryption and Hashing in Laravel", "url": "https://ashallendesign.co.uk/blog/a-guide-to-encryption-and-hashing-in-laravel", "published_at": "2023-08-07T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139762e9c419", "title": "Behind the Dev: Diana Scharf", "url": "https://ashallendesign.co.uk/blog/behind-the-dev-diana-scharf", "published_at": "2023-07-27T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-13976319c026", "title": "Behind the Dev: Stephen Rees-Carter", "url": "https://ashallendesign.co.uk/blog/behind-the-dev-stephen-rees-carter", "published_at": "2023-07-20T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139763faa67a", "title": "Hyvor Blogs: A blogging platform for Laravel & Symfony Applications", "url": "https://ashallendesign.co.uk/blog/hyvor-blogs", "published_at": "2023-06-23T00:00:00+00:00" }, { "id": "01a07df0-ea66-7364-ab7b-139764de46de", "title": "A Guide to Using Websockets in Laravel", "url": "https://ashallendesign.co.uk/blog/a-guide-to-using-websockets-in-laravel", "published_at": "2023-06-12T00:00:00+00:00" } ] posts Claim your blog
Back to Ash Allen
Blog ยท corpus.blog/blogs/ashallendesign.co.uk/posts

Ash Allen

ashallendesign.co.uk

2026

2025

2024

2023