{"id":"https:\/\/freek.dev\/feed","link":{"@attributes":{"href":"https:\/\/freek.dev\/feed","rel":"self"}},"title":{},"subtitle":"All blogposts on freek.dev","updated":"2026-06-08T14:26:26+02:00","entry":[{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3132-evals-in-laravel-how-to-prove-your-ai-output-is-actually-good"}},"id":"https:\/\/freek.dev\/3132","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-06-08T14:26:26+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3122-flare-livewire"}},"id":"https:\/\/freek.dev\/3122","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-06-06T14:30:04+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3130-svelte-support-for-flare-is-here"}},"id":"https:\/\/freek.dev\/3130","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-06-05T14:30:05+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3129-new-webpack-and-nextjs-plugins-for-flare"}},"id":"https:\/\/freek.dev\/3129","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-06-04T14:30:04+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3127-the-reason-i-love-tempest-for-apis"}},"id":"https:\/\/freek.dev\/3127","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-06-03T14:30:27+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3126-forgot-to-update-livewire-got-hacked"}},"id":"https:\/\/freek.dev\/3126","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-06-02T14:30:29+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3125-using-property-hooks-in-php"}},"id":"https:\/\/freek.dev\/3125","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-06-01T14:30:31+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3124-validating-distinct-data-in-requests"}},"id":"https:\/\/freek.dev\/3124","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-31T14:30:37+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3123-compound-engineering-how-every-codes-with-agents"}},"id":"https:\/\/freek.dev\/3123","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-30T10:15:04+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3133-the-stack-behind-there-there"}},"id":"https:\/\/freek.dev\/3133","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-30T10:13:56+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3131-automate-your-php-security-updates"}},"id":"https:\/\/freek.dev\/3131","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-29T14:30:30+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3121-claude-talk-small-code-still-big"}},"id":"https:\/\/freek.dev\/3121","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-28T14:30:05+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3128-an-update-on-composer-packagist-supply-chain-security"}},"id":"https:\/\/freek.dev\/3128","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-27T21:09:01+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3120-locally-great-globally-drifting"}},"id":"https:\/\/freek.dev\/3120","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-27T14:30:05+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3119-reading-code-with-ai-not-generating-it"}},"id":"https:\/\/freek.dev\/3119","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-26T14:30:05+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3115-the-robots-are-replacing-the-packages"}},"id":"https:\/\/freek.dev\/3115","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-25T14:41:04+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3116-the-elephant-in-the-room"}},"id":"https:\/\/freek.dev\/3116","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-22T14:30:05+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3084-hard-truths-about-building-in-the-ai-era"}},"id":"https:\/\/freek.dev\/3084","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-21T14:30:29+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3110-notes-on-software-quality"}},"id":"https:\/\/freek.dev\/3110","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-20T14:30:30+02:00"},{"title":{},"link":{"@attributes":{"rel":"alternate","href":"https:\/\/freek.dev\/3109-details-that-make-interfaces-feel-better"}},"id":"https:\/\/freek.dev\/3109","author":{"name":{},"email":{}},"summary":{"@attributes":{"type":"html"}},"updated":"2026-05-19T14:30:32+02:00"}]}