My favourite albums released in 2019
These are my 10 favourite albums which were released in 2019, alphabetically sorted.
Oh Dear is the all-in-one monitoring tool for your entire website. We monitor uptime, SSL certificates, broken links, scheduled tasks and more. You'll get a notifications for us when something's wrong. All that paired with a developer friendly API and kick-ass documentation. O, and you'll also be able to create a public status page under a minute. Start monitoring using our free trial now.
These are my 10 favourite albums which were released in 2019, alphabetically sorted.
On the subscribers screens of the Mailcoach, you can filter out the subscribers that have a certain status, you can search and sort them.
In the video below, which is part of the upcoming Mailcoach video course, I explain how we built these filters, powered by three of our packages: laravel-query-builder, query-string and Blade X.
I write about Laravel, PHP, AI and building better software.
Every two weeks, I share practical tips, tutorials, and behind-the-scenes insights from maintaining 300+ open source packages. Join thousands of developers who read along.
No spam. Unsubscribe anytime. You can also follow me on X.
Laracon EU is an amazing conference I had the pleasure of attending these past years. Last week the videos of the 2019 edition have been released. You can see them all in this handy playlist on YouTube.
At the conference Marcel Pociot and I revealed Ignition and Flare. Relive that here:
Tweet β β twitter.com
TIL that there's a shorthand for the dreaded pluck('id')->toArray() combo in #Laravel:$user->posts->modelKeys() will return all related post IDs that are attached to the user model! π₯https://t.co/imIPlVNjwi
— Alex (@AlexVanderbist) 19 november 2019
S/O to @rubenvanassche for telling me this existed π pic.twitter.com/c3sANn52M8
Link β β stitcher.io
Brent explains what view models are and how you can use them. We use view models in almost every project at Spatie.
In essence, view models are simple classes that take some data, and transform it into something usable for the view. In this chapter I'll show you the basic principles of the pattern, we'll take a look at how they integrate in Laravel projects, and finally I'll show you how we use the pattern in one of our projects.
Read more [stitcher.io]
Tweet β β twitter.com
Here's a little tip: you can use `yield` in phpunit data providers to make them a little more readable pic.twitter.com/rQeKw7jBed
— Brent (@brendt_gd) 12 december 2019
Tweet β β twitter.com
π₯ Like Model::query() to align subsequent calls, here's the world's simplest macro to do something similar in routes. pic.twitter.com/OzWJ7Fcx8F
— Paul Redmond πΊπΈ (@paulredmond) 12 december 2019
Nikita Popov discusses some low level performance optimizations in PHP.
Link β β dev.to
David Khourshid explains how you can use state machines to make your logic more resilient.
Disabling a button is not logic. Rather, it is a sign that logic is fragile and bug-prone. In my opinion, disabling a button should only be a visual cue to the user that clicking the button will have no effect.
Read more [dev.to]
Link β β rubenvanassche.com
My colleague Ruben explores the wonderful world of GitHub actions.
You can write workflows in YAML, which makes them easy to write and read. In the beta version of GitHub Actions you had to use Ocaml, which was quite hard to comprehend, and there was almost no documentation. If you were a bit frightened by the beta version, like me, then rest assured: the YAML version is easier to use, and the documentation is well written.
Read more [rubenvanassche.com]
Link β β jasonmccreary.me
JMac, the creator of Laravel Shift, has a few interesting ideas on how to make the framework better.
Every so often a revolutionary change is required. This provides a chance to revisit goals. One of the primary goals of Laravel is developer experience. And maintainability, freshness, and approachability all improve developer experience. So, with all this in mind here are the top five things I would change in Laravel.
Read more [jasonmccreary.me]
My team and I are currently building Mailcoach, a self-hosted solution to easily send out newsletters and email campaigns. In this video, I live code a new small feature.
This video was created unrehearsed and I didn't make any edits. So you can see every mistake that I made along the way.
A year ago, I wrote a recap of 2018. Now that 2019 is coming to a close, I thought it might be fun to write a similar post on what I did this year.
Tweet β β twitter.com
Not sure if your dependencies are up-to-date? Run `composer outdated` and find out. β‘οΈ pic.twitter.com/6ZShopPapn
— NUNO MADURO β (@enunomaduro) December 3, 2019
Tweet β β twitter.com
Thanks to the improved type variance in PHP 7.4, the `self` return type hint is now safe to use in a class that you expect to be overridden (happens a lot in the packages we create)
— Freek Van der Herten (@freekmurze) December 3, 2019
Demo: https://t.co/7vRTaOwRhD
RFC: https://t.co/1RpnFIjlKC#php pic.twitter.com/SfAaxRDt4m
Link β β stitcher.io
As usual, my colleague Brent wrote a post with clear instructions on how to upgrade. As a bonus he also provides some necessary steps to get PHP 7.4 to work in Valet.
Read more [stitcher.io]
In PHP 7.4, two new features were introduced that I'd like to use in my packages and projects: short closures and typed properties. Even though an IDE can help with converting to the new syntax, I'd don't want to manually hunt down all the places where the new syntax can be used. Lucky there's a tool that can do this work automatically.
Tweet β β twitter.com
?You can mutate request data using @laravelphp 's form requests instead of doing it in the controller. By overwriting the validationData() method, you can mutate data BEFORE validation. Overwrite the validated() method to mutate AFTER validation. #Laravel #php pic.twitter.com/VAVXYAHCFC
— Neil Keena (@neilkeena) November 4, 2019
A while ago, I created an easy to use framework agnostic PHP package to read and write CSV and Excel files called spatie/simple-excel. Behind the scenes, generators are used to ensure low memory usage, even when working with large files. Today I added a method that allows you to stream CSV files to the browser. In this small blog post, I'd like to demonstrate how you can use it.