56,966 blogs · [ { "id": "01a0c50d-d338-73e9-b4d3-bcdfa5610692", "title": "Introducing: Dark mode for Flare", "url": "https://freek.dev/3193-introducing-dark-mode-for-flare", "published_at": "2026-09-21T10:30:31+00:00" }, { "id": "01a0c50d-d338-73e9-b4d3-bcdfa63bf470", "title": "★ Detecting spam and auto-replies with Jev and the Laravel AI SDK", "url": "https://freek.dev/3194-detecting-spam-and-auto-replies-with-jev-and-the-laravel-ai-sdk", "published_at": "2026-09-18T15:39:46+00:00" }, { "id": "01a0b0d0-d0d5-70e3-b159-963107fb906d", "title": "What's New in PHP 8.6", "url": "https://freek.dev/3192-whats-new-in-php-86", "published_at": "2026-09-16T12:30:30+00:00" }, { "id": "01a0959b-ba7c-71ed-9a49-8820e990b7ed", "title": "Logarithmic auto-scaling for Laravel Horizon", "url": "https://freek.dev/3191-logarithmic-auto-scaling-for-laravel-horizon", "published_at": "2026-09-12T12:30:30+00:00" }, { "id": "01a094fc-eede-70a0-b405-5d891d84817d", "title": "Eloquent Performance and Database Design: Evidence Before Eager Loading", "url": "https://freek.dev/3190-eloquent-performance-and-database-design-evidence-before-eager-loading", "published_at": "2026-09-11T12:30:27+00:00" }, { "id": "01a08ca1-034e-7298-8102-eaced8e1184b", "title": "A Series of Unfortunate Jobs", "url": "https://freek.dev/3189-a-series-of-unfortunate-jobs", "published_at": "2026-09-10T12:06:27+00:00" }, { "id": "01a08779-ef74-70d8-bbcf-fea2cd53b563", "title": "Run AI in the Browser: A Practical Guide to Transformers.js", "url": "https://freek.dev/3188-run-ai-in-the-browser-a-practical-guide-to-transformersjs", "published_at": "2026-09-09T14:50:26+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffca99973cf", "title": "Using AI as a deterministic translation tool in Laravel", "url": "https://freek.dev/3186-using-ai-as-a-deterministic-translation-tool-in-laravel", "published_at": "2026-09-07T12:53:24+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffca99f1a63", "title": "Digital Sovereignty Is Written in PHP", "url": "https://freek.dev/3185-digital-sovereignty-is-written-in-php", "published_at": "2026-09-04T12:30:28+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcaa898ade", "title": "Build Your Own AI-Powered Slack Bot with the Laravel AI SDK", "url": "https://freek.dev/3184-build-your-own-ai-powered-slack-bot-with-the-laravel-ai-sdk", "published_at": "2026-08-31T12:59:25+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcab2a59f8", "title": "Is AI going to steal my job as a design engineer?", "url": "https://freek.dev/3183-is-ai-going-to-steal-my-job-as-a-design-engineer", "published_at": "2026-08-25T12:30:28+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcab7fefec", "title": "Modular Monoliths: Creating Real Boundaries Before Reaching for Microservices", "url": "https://freek.dev/3182-modular-monoliths-creating-real-boundaries-before-reaching-for-microservices", "published_at": "2026-08-20T13:48:25+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcac03e26c", "title": "Immutability in PHP Beyond readonly", "url": "https://freek.dev/3181-immutability-in-php-beyond-readonly", "published_at": "2026-08-17T12:12:30+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcace4d3f0", "title": "Flare now uses OAuth for MCP, the CLI, and API", "url": "https://freek.dev/3180-flare-now-uses-oauth-for-mcp-the-cli-and-api", "published_at": "2026-08-15T10:30:29+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcad9d6392", "title": "Can we make default Tailwind a more accessible choice?", "url": "https://freek.dev/3179-can-we-make-default-tailwind-a-more-accessible-choice", "published_at": "2026-08-14T10:30:33+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcae13bf19", "title": "Why we removed AI solutions from Flare", "url": "https://freek.dev/3178-why-we-removed-ai-solutions-from-flare", "published_at": "2026-08-13T10:30:30+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcae1e16a7", "title": "`exit()` may silently break your parallel tests", "url": "https://freek.dev/3177-exit-may-silently-break-your-parallel-tests", "published_at": "2026-08-12T10:30:31+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcaf07e917", "title": "Amped up", "url": "https://freek.dev/3176-amped-up", "published_at": "2026-08-11T10:30:28+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcaf187fa4", "title": "sbx: Sandboxed Claude, complete with PHP and tools", "url": "https://freek.dev/3175-sbx-sandboxed-claude-complete-with-php-and-tools", "published_at": "2026-08-10T10:30:04+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcaf3c9cc6", "title": "What's new in PHP 8.6", "url": "https://freek.dev/3174-whats-new-in-php-86", "published_at": "2026-08-05T12:14:26+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcaf66a605", "title": "Prevent cognitive debt by manually retyping LLM-generated code", "url": "https://freek.dev/3173-prevent-cognitive-debt-by-manually-retyping-llm-generated-code", "published_at": "2026-08-04T12:56:26+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcafd8a294", "title": "We Became Editors-in-Chief, and Nobody Trained Us", "url": "https://freek.dev/3172-we-became-editors-in-chief-and-nobody-trained-us", "published_at": "2026-08-03T14:56:25+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcafd91fc6", "title": "PHP version stats: July, 2026", "url": "https://freek.dev/3171-php-version-stats-july-2026", "published_at": "2026-07-29T15:23:14+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb09768a1", "title": "Building an order fulfilment workflow in Laravel", "url": "https://freek.dev/3170-building-an-order-fulfilment-workflow-in-laravel", "published_at": "2026-07-25T12:30:28+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb09a98b7", "title": "Setting up a remote environment for agentic coding on a VPS", "url": "https://freek.dev/3169-setting-up-a-remote-environment-for-agentic-coding-on-a-vps", "published_at": "2026-07-24T14:00:27+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb0ccdad1", "title": "There's no artisan schema:show, so I built one", "url": "https://freek.dev/3168-theres-no-artisan-schemashow-so-i-built-one", "published_at": "2026-07-24T12:40:27+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb10feda1", "title": "Preventing SSRF in Laravel: Why Blocking Private IPs Fails", "url": "https://freek.dev/3167-preventing-ssrf-in-laravel-why-blocking-private-ips-fails", "published_at": "2026-07-22T13:24:24+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb1c3ba2d", "title": "PHP Attributes: What, Why, How and When", "url": "https://freek.dev/3166-php-attributes-what-why-how-and-when", "published_at": "2026-07-21T12:43:26+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb224043a", "title": "Supercharge your PHP apps with Go-powered PHP extensions", "url": "https://freek.dev/3164-supercharge-your-php-apps-with-go-powered-php-extensions", "published_at": "2026-07-17T12:30:31+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb2fc9ede", "title": "New in PHP 8.6: Faster array_map with first-class callables", "url": "https://freek.dev/3162-new-in-php-86-faster-array-map-with-first-class-callables", "published_at": "2026-07-15T12:30:27+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb3aa8d61", "title": "The Laravel Scheduler Under the Hood", "url": "https://freek.dev/3161-the-laravel-scheduler-under-the-hood", "published_at": "2026-07-14T12:02:25+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb45f1a49", "title": "Everything About the Context Facade", "url": "https://freek.dev/3152-everything-about-the-context-facade", "published_at": "2026-06-29T12:13:28+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb48c9551", "title": "Improving Laravel Architecture With Expressive", "url": "https://freek.dev/3134-improving-laravel-architecture-with-expressive", "published_at": "2026-06-23T12:30:27+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb4dad2ba", "title": "Eloquent Query Classes Pattern", "url": "https://freek.dev/3146-eloquent-query-classes-pattern", "published_at": "2026-06-22T12:30:28+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb5b52bb4", "title": "Building RAG in Laravel: Four Ingestion Bugs That Silently Wreck Retrieval", "url": "https://freek.dev/3144-building-rag-in-laravel-four-ingestion-bugs-that-silently-wreck-retrieval", "published_at": "2026-06-19T12:32:25+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb69e27b0", "title": "How PHP Attributes Changed the Way I Write Livewire", "url": "https://freek.dev/3142-how-php-attributes-changed-the-way-i-write-livewire", "published_at": "2026-06-17T10:30:28+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb7413fd5", "title": "Rust Tutorial For PHP and JavaScript Developers", "url": "https://freek.dev/3141-rust-tutorial-for-php-and-javascript-developers", "published_at": "2026-06-16T12:55:29+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb7d35cc9", "title": "★ Searching multiple columns with one URL parameter in laravel-query-builder", "url": "https://freek.dev/3118-searching-multiple-columns-with-one-url-parameter-in-laravel-query-builder", "published_at": "2026-05-04T08:09:06+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb7e9db22", "title": "★ Announcing laravel-sluggable v4 with self-healing URLs", "url": "https://freek.dev/3112-announcing-laravel-sluggable-v4-with-self-healing-urls", "published_at": "2026-04-29T14:36:36+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb83d4485", "title": "★ Generate Apple and Google Wallet passes from Laravel", "url": "https://freek.dev/3108-generate-apple-and-google-wallet-passes-from-laravel", "published_at": "2026-04-23T14:00:19+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb89be56c", "title": "★ Instant view switches with Inertia v3 prefetching", "url": "https://freek.dev/3087-instant-view-switches-with-inertia-v3-prefetching", "published_at": "2026-04-13T09:57:13+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb8a27b9e", "title": "★ How we use Inertia v3 optimistic updates in There There", "url": "https://freek.dev/3085-how-we-use-inertia-v3-optimistic-updates-in-there-there", "published_at": "2026-04-13T09:24:11+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb96b65d1", "title": "★ Scotty: a beautiful SSH task runner", "url": "https://freek.dev/3064-scotty-a-beautiful-ssh-task-runner", "published_at": "2026-03-30T07:44:16+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb9ae8d09", "title": "★ What's new in laravel-activitylog v5", "url": "https://freek.dev/3058-whats-new-in-laravel-activitylog-v5", "published_at": "2026-03-25T10:39:31+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcb9b7efee", "title": "★ Laravel Query Builder v7: a must-have package for building APIs in Laravel", "url": "https://freek.dev/3052-laravel-query-builder-v7-a-must-have-package-for-building-apis-in-laravel", "published_at": "2026-03-16T13:57:04+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcba05ace6", "title": "★ Laravel Site Search v3 is here: crawl and search your entire site using just your database", "url": "https://freek.dev/3040-laravel-site-search-v3-is-here-crawl-and-search-your-entire-site-using-just-your-database", "published_at": "2026-03-12T12:52:50+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcba903f60", "title": "★ How to easily access private properties and methods in PHP", "url": "https://freek.dev/3048-how-to-easily-access-private-properties-and-methods-in-php", "published_at": "2026-03-12T10:39:39+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcbabb020d", "title": "★ Laravel Backup v10: serializable events, resilient multi-destination backups, and more", "url": "https://freek.dev/3015-laravel-backup-v10-serializable-events-resilient-multi-destination-backups-and-more", "published_at": "2026-03-04T13:19:52+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcbb49b71b", "title": "★ Laravel Sitemap v8 is here: automatic splitting, XSL stylesheets, and crawler v9", "url": "https://freek.dev/3041-laravel-sitemap-v8-is-here-automatic-splitting-xsl-stylesheets-and-crawler-v9", "published_at": "2026-03-03T10:50:27+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcbbc6c95f", "title": "★ A better way to crawl websites with PHP", "url": "https://freek.dev/3039-a-better-way-to-crawl-websites-with-php", "published_at": "2026-03-02T20:56:46+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcbcc0107c", "title": "★ My Claude Code setup", "url": "https://freek.dev/3026-my-claude-code-setup", "published_at": "2026-03-02T13:30:00+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcbd0e3c2b", "title": "★ Generate OG images for your Laravel app", "url": "https://freek.dev/3032-generate-og-images-for-your-laravel-app", "published_at": "2026-02-26T00:01:01+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcbd5bfe47", "title": "★ Building a PHP CLI for humans and AI agents with almost no hand-written code", "url": "https://freek.dev/3035-building-a-php-cli-for-humans-and-ai-agents-with-almost-no-hand-written-code", "published_at": "2026-02-25T11:12:21+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcbe3e858f", "title": "★ Let your AI coding agent fix your errors and review performance", "url": "https://freek.dev/3034-let-your-ai-coding-agent-fix-your-errors-and-review-performance", "published_at": "2026-02-25T11:11:49+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcbee3891a", "title": "★ Introducing the Flare CLI", "url": "https://freek.dev/3033-introducing-the-flare-cli", "published_at": "2026-02-25T11:10:49+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcbf2b74aa", "title": "★ Adding a custom status line to Claude Code", "url": "https://freek.dev/3028-adding-a-custom-status-line-to-claude-code", "published_at": "2026-02-24T19:00:00+00:00" }, { "id": "01a07df3-0642-7209-b938-2ffcbf836030", "title": "★ A clean API for reading PHP attributes", "url": "https://freek.dev/3030-a-clean-api-for-reading-php-attributes", "published_at": "2026-02-23T07:41:50+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c3f444dd2", "title": "Turn any OpenAPI spec into Laravel artisan commands", "url": "https://freek.dev/3024-turn-any-openapi-spec-into-laravel-artisan-commands", "published_at": "2026-02-20T09:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c40405821", "title": "A Laravel package to serve markdown to AI agents", "url": "https://freek.dev/3016-a-laravel-package-to-serve-markdown-to-ai-agents", "published_at": "2026-02-18T11:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c406bcdc1", "title": "How to set up PHP autoformatting in Zed using Pint and PHP CS Fixer", "url": "https://freek.dev/3014-how-to-set-up-php-autoformatting-in-zed-using-pint-and-php-cs-fixer", "published_at": "2026-02-17T13:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c4137aae8", "title": "Laravel Response Cache v8 is here: now offers flexible caching", "url": "https://freek.dev/3012-laravel-response-cache-v8-is-here-now-offers-flexible-caching", "published_at": "2026-02-16T16:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c41dfc1f6", "title": "My current setup for Laravel, PHP and AI assisted development (2026 edition)", "url": "https://freek.dev/3006-my-current-setup-for-laravel-php-and-ai-assisted-development-2026-edition", "published_at": "2026-02-16T13:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c41bfcfc6", "title": "My current setup for Laravel, PHP and AI development (2026 edition)", "url": "https://freek.dev/3006-my-current-setup-for-laravel-php-and-ai-development-2026-edition", "published_at": "2026-02-14T17:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c417f4523", "title": "My current setup (2026 edition)", "url": "https://freek.dev/3006-my-current-setup-2026-edition", "published_at": "2026-02-14T13:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c4245abed", "title": "Another new Spatie package drops: spatie/laravel-screenshot", "url": "https://freek.dev/3002-another-new-spatie-package-drops-spatielaravel-screenshot", "published_at": "2026-02-13T15:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c4285ed41", "title": "Another new Spatie package drops: spatie/laravel-screesnhot", "url": "https://freek.dev/3002-another-new-spatie-package-drops-spatielaravel-screesnhot", "published_at": "2026-02-12T14:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c42bb4c0b", "title": "Laravel Permission v7 has been launched", "url": "https://freek.dev/3001-laravel-permission-v7-has-been-launched", "published_at": "2026-02-12T14:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c43ed723a", "title": "Laravel PDF v2 has been released: adds support for Laravel Cloud and easy queuing", "url": "https://freek.dev/2991-laravel-pdf-v2-has-been-released-adds-support-for-laravel-cloud-and-easy-queuing", "published_at": "2026-02-08T22:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c44b6dd44", "title": "Introducing Ray 3.0", "url": "https://freek.dev/2987-introducing-ray-30", "published_at": "2026-02-05T15:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c45206c8d", "title": "I built a native mobile word game in two weeks", "url": "https://freek.dev/2983-i-built-a-native-mobile-word-game-in-two-weeks", "published_at": "2026-01-31T12:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c459cb1e6", "title": "How to automatically generate a commit message using Claude", "url": "https://freek.dev/2978-how-to-automatically-generate-a-commit-message-using-claude", "published_at": "2026-01-28T09:00:05+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c456ce4f5", "title": "Introducing Spatie Guidelines for Laravel Boost", "url": "https://freek.dev/2980-introducing-spatie-guidelines-for-laravel-boost", "published_at": "2026-01-27T14:00:08+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c490a352d", "title": "Transform your URLs with AI using our new Laravel package", "url": "https://freek.dev/2917-transform-your-urls-with-ai-using-our-new-laravel-package", "published_at": "2025-08-26T23:00:05+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c495bb485", "title": "Why I don't use down migrations", "url": "https://freek.dev/2900-why-i-dont-use-down-migrations", "published_at": "2025-08-01T10:00:05+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c49d22fb8", "title": "How to monitor your Laravel app for critical vulnerabilities", "url": "https://freek.dev/2892-how-to-monitor-your-laravel-app-for-critical-vulnerabilities", "published_at": "2025-07-18T17:00:07+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c4a81ddb3", "title": "Introducing spatie/ping and spatie/simple-tcp-client", "url": "https://freek.dev/2885-introducing-spatieping-and-spatiesimple-tcp-client", "published_at": "2025-07-15T08:00:12+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c4a95c237", "title": "Typehinting Laravel validation rules using PHPStan's type aliases", "url": "https://freek.dev/2874-typehinting-laravel-validation-rules-using-phpstans-type-aliases", "published_at": "2025-06-18T13:00:06+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c4b31ed56", "title": "A package to handle one-time passwords (OTP) in Laravel apps", "url": "https://freek.dev/2864-a-package-to-handle-one-time-passwords-otp-in-laravel-apps", "published_at": "2025-05-22T14:00:06+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c4b7476a3", "title": "A package to handle passkeys in Laravel", "url": "https://freek.dev/2854-a-package-to-handle-passkeys-in-laravel", "published_at": "2025-05-09T09:00:09+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c4e259f59", "title": "Running PHP tests in parallel on GitHub actions", "url": "https://freek.dev/2843-running-php-tests-in-parallel-on-github-actions", "published_at": "2025-04-22T15:00:06+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c4fa4c880", "title": "Implementing Multitenancy in Laravel", "url": "https://freek.dev/2841-implementing-multitenancy-in-laravel", "published_at": "2025-04-07T13:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c6387a423", "title": "How to test all routes in your Laravel app by writing just a single Pest test", "url": "https://freek.dev/2739-how-to-test-all-routes-in-your-laravel-app-by-writing-just-a-single-pest-test", "published_at": "2024-07-19T09:00:05+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c63d28adb", "title": "A package to use Filepond in your Livewire component", "url": "https://freek.dev/2738-a-package-to-use-filepond-in-your-livewire-component", "published_at": "2024-07-16T13:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c66b210ce", "title": "A package to display solutions on the Laravel error page", "url": "https://freek.dev/2736-a-package-to-display-solutions-on-the-laravel-error-page", "published_at": "2024-07-03T14:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c79b0b958", "title": "My keynote at PHPUKConference 2024", "url": "https://freek.dev/2659-my-keynote-at-phpukconference-2024", "published_at": "2024-02-15T23:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c7ca68095", "title": "Generating status badges using PHP", "url": "https://freek.dev/2652-generating-status-badges-using-php", "published_at": "2024-01-27T16:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c7d8f651f", "title": "Making sure Laravel's debug mode is always disabled in production", "url": "https://freek.dev/2643-making-sure-laravels-debug-mode-is-always-disabled-in-production", "published_at": "2024-01-22T09:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c7df8980d", "title": "A mini package to calculate public holidays in a country", "url": "https://freek.dev/2641-a-mini-package-to-calculate-public-holidays-in-a-country", "published_at": "2024-01-17T14:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c7e358e42", "title": "Creating beautiful invoices using Tailwind and Laravel PDF", "url": "https://freek.dev/2639-creating-beautiful-invoices-using-tailwind-and-laravel-pdf", "published_at": "2024-01-16T16:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c7fae9f02", "title": "My interview questions when hiring a front-end / back-end / whatever developer at Spatie", "url": "https://freek.dev/2634-my-interview-questions-when-hiring-a-front-end-back-end-whatever-developer-at-spatie", "published_at": "2024-01-10T17:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c802e6729", "title": "Flare ❤️ GitLab", "url": "https://freek.dev/2617-flare-gitlab", "published_at": "2024-01-10T10:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c8342575e", "title": "How we built our GitLab integration", "url": "https://freek.dev/2618-how-we-built-our-gitlab-integration", "published_at": "2024-01-09T09:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c95793217", "title": "Easily create PDFs in Laravel apps", "url": "https://freek.dev/2625-easily-create-pdfs-in-laravel-apps", "published_at": "2024-01-02T15:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696c973cd97e", "title": "New major versions for spatie/image and Laravel Media Library have been released", "url": "https://freek.dev/2619-new-major-versions-for-spatieimage-and-laravel-media-library-have-been-released", "published_at": "2023-12-18T13:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696ca429d72b", "title": "Spatie's Black Friday Deals", "url": "https://freek.dev/2600-spaties-black-friday-deals", "published_at": "2023-11-17T15:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696cb542633e", "title": "Creating my new album \"Kind\"", "url": "https://freek.dev/2569-creating-my-new-album-kind", "published_at": "2023-09-25T10:00:04+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696cb62d91fa", "title": "Video: the keynotes of Full Stack Europe 2022", "url": "https://freek.dev/2565-video-the-keynotes-of-full-stack-europe-2022", "published_at": "2023-09-19T08:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696cc0062367", "title": "Craft emails that look good in each email client using MJML", "url": "https://freek.dev/2549-craft-emails-that-look-good-in-each-email-client-using-mjml", "published_at": "2023-08-25T08:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696ccaa17de4", "title": "How we created those fancy animations on the Flare homepage", "url": "https://freek.dev/2541-how-we-created-those-fancy-animations-on-the-flare-homepage", "published_at": "2023-08-04T10:00:03+00:00" }, { "id": "01a07df5-5f6a-70ff-876d-696ccedbc287", "title": "Using Postmark Rebound to improve handling of bounced emails", "url": "https://freek.dev/2539-using-postmark-rebound-to-improve-handling-of-bounced-emails", "published_at": "2023-07-27T17:00:03+00:00" } ] posts Claim your blog
Back to Freek Van der Herten
Blog · corpus.blog/blogs/freek.dev/posts

Freek Van der Herten

freek.dev

2026

2025

2024

2023