Welcome to the 5th Round Up of 2022! This month, we have a new version of Tinkerwell released, a lot of new article released, some guest posts, and a new project built to help encourage open source contributions in the Laravel community.
If you haven't read last month's issue, you can read Round Up: April 2022.
Keep on building awesome stuff! 🚀
Tinkerwell 3 Released
During this month, Tinkerwell 3 was released with some cool new features. If you haven't already heard about Tinkerwell, it's a great tool that you can use for tinkering with PHP code. It's perfect for using in your Laravel projects, especially for trying out new ideas and experimenting with snippets of code.
According to the release notes provided by Tinkerwell, version 3 includes "autocompletion, magic comments, automatic code coverage, new output modes, first-party support for Docker within WSL, custom SSH agent (like 1Password) support, a brand-new user interface and a lot of other bug fixes and usability improvements.". If you'd like to read more about the changes that have been made, you can check out the full releases note here.
If you haven't used it before, it's something that I'd definitely recommend checking out. I use it on a daily basis and pretty much always have it open in the background ready for me to drop some experimental code into.
This Month's Articles
This month, I released several new articles on my blog:
20 Useful Laravel Tips
This article includes 20 useful tips that you can use in your Laravel projects. The tips have been curated using my best-performing tweets on Twitter and cover databases, standards, testing, Artisan commands, and much more.
How to Get Website's Favicons in Laravel
This article shows you how you can use my new Laravel package "Favicon Fetcher" to fetch favicon's from other websites. This is something that I built to help out with my Mango Two side-project.
This is a particularly exciting article for me because it was also my very first guest post on Laravel News!
Top Laravel Twitter Accounts to Follow
This article has a list of Twitter accounts that I think every Laravel developer should be following. It's by no means an exhaustive list and I'm open to suggestions to add more accounts to it if you have any suggestions. At the point of writing this article, there are 59 accounts on the list that I think provide value to the Laravel community.
How to Validate Your Laravel App's Config
This article shows you how you can use my Laravel package "Laravel Config Validator" to validate your Laravel app's config. This is also another exciting article for me because this was also crossposted to Laravel News!
A Complete Guide to Managing User Permissions in Laravel Apps
This article shows you how you can use the "spatie/laravel-permission" package to add roles and permissions to your Laravel applications. This is also an exciting article for me because it was originally posted on Honeybadger's blog!
This month has been a particularly busy month for me. I've been writing articles, making open source contributions, starting a new project, and I've also started writing me new e-book Battle Ready Laravel!
Battle Ready Laravel
Let's start with talking about my new e-book that I'm writing: Battle Ready Laravel. Since I released my last e-book, The Clean Coder's Guide to Laravel, it's had just over 5000 downloads. So, for a while, I'd been thinking about writing a newer, bigger book to give you all even more tips, tricks and tutorials. So, this month, I forced myself to make a start and put up a landing page for it.
In fact, if you head on over to the Battle Ready Laravel landing page, you can actually join the waiting list for the book and you'll get a 25% discount when it's released!
The book will be taking you through the same steps that I use to audit, test, fix, and improve Laravel projects. I've only started writing it recently, but I estimate that it's going to be over 200 pages and will hopefully help to make you a more confident developer for only $39 (or $29.15 if you join the waiting list).
Laravel News Guest Posts
One of the most exciting that's happened to me this month is that I've had my very first guest posts published on Laravel News! For anyone who knows me, they'll know that this is like a dream come true for me!
I'm hoping to carry on writing guest posts for Laravel News in the future!
Open Source Contributions
During May, I've not made a lot of open source contributions to other people's projects. However, I did make a few small pull requests to the Laravel framework and documentation repositories:
- Added docs for the "--only-vendor" option (#42549)
The additions that I made to the Laravel framework were only small, but I think they could be particularly useful. One change added an
--only-vendor option to the
php artisan route:list command. By using this option, the command will only output a list of the routes that are registered via a package.
The other change added a count at the bottom of the
php artisan route:list command output that shows how many routes are being listed. I thought these changes would be handy to make because they give you a quick (and easy to understand) overview of the routes that are registered by your installed packages that you might not have noticed.
Here's an example of what the output might look like when using these new changes together:
Laravel News Mentions
During the month, Jake Bennett and Michael Dyrynda released three new enjoyable episodes of the Laravel News podcast again: "Tinkering well, bouncing users, and validating configs", "Logs, viewing logs, and faking logs", and "Redirection, Excel templates, and modern monoliths". I was extremely lucky and managed to get a mention in both of the episodes!
In this episode, Michael and Jake talked about my "How to Validate Your Laravel App's Config" guest post and Battle Ready Laravel:
In this episode, my "How to Get Website's Favicons in Laravel" guest post and "20 Useful Laravel Tips" article were both mentioned:
In this episdode, Michael and Jake mentioned my contribution that was included in Laravel 9.9 and gave a shout out for my blog (which you're reading this article on now):
Lastly, during the month, I created a new side-project (yes, I know, another one!) called "Find a PR". You can find it at "findapr.io". It's an open source platform that curates a list of open issues from PHP and Laravel projects to help developers find places to make open source contributions.
The reasoning behind me making it is to try and tackle some of the common problems that developers have when trying to contribute to open source. After doing some reading and some investigations on Twitter, I found that there are some common blockers that stop developers wanting to contribute to projects:
- They don't know where to contribute
- They don't know what to contribute
- They're scared of submitting something and it being rejected
So, my intention with building "Find a PR" is to try and tackle some of these issues within the Laravel community. I love the fulfilling feeling that I get when I see a pull request get merged, and want others to experience the same thing.
By making the project open source, it gives other developers a chance to help shape how the platform works. I don't have any plans set in stone in how I want it to grow; I'll let the community decide that as they use it. But, it should hopefully give developers a bit more confidence when making pull requests because they'll know that they're contributing something that the project maintainer's are looking for.
The platform is very much in its early days and has a lot of room for improvement. So, if you'd like to contribute to it, feel free to head on over to the repository.
If you're interested in checking out the entire changelog for each of the releases, I recommend checking out the release notes for each one on GitHub. Here are the main additions that were added in the releases:
- Added Illuminate/Collections/Arr::join() (#42197)
- Added has and missing methods to ValidatedInput (#42184)
- Added deprecation stack trace config option (#42235)
- Added closure based exceptions testing (#42155)
- Allow forcing requests made via the Http client to be faked (#42230)
- Added 'throwIf' method to PendingRequest (#42260)
- Allow passing key/value arrays to getArguments and getOptions (#42268)
- Add whereNotMorphedTo, orWhereNotMorphedTo (#42264)
- Add method to extend localeArray generation (#42275)
- Added ability to set delay per channel based on notifiable instance (#42239)
- Added Illuminate/Pagination/CursorPaginator::onLastPage() (#42301)
- Added findOr method to Query/Builder (#42290)
- Added Illuminate/Collections/Traits/EnumeratesValues::value() (#42257)
- Added new TestResponse helper: assertJsonMissingPath (#42361)
- Added Illuminate/Support/Testing/Fakes/NotificationFake::assertCount() (#42366)
- Added new DetectLostConnections (#42377, #42382)
- Added Illuminate/Testing/TestResponse::collect() (#42384)
- Added full callable support to schedule:list (#42400)
- Added Illuminate/Collections/Arr::map() (#42398)