2024 in review # Wow - I just noticed that I did not write any review blog posts for the last 3 years! I actually really like these review blog posts, as they allow me to reflect on all the things that happened throughout the year, so here it goes. Laracon EU # I think it's safe to say that the overall "motto" of 2024 for me work-wise was Laravel Herd . Laravel Herd was released at Laracon US 2023…
As I am currently writing documentation for Invoker , I noticed something that was lacking on our Beyond Code website . All documentation pages were missing a search option. Now I could've chosen Algolia for this, or possibly even try and implement a fulltext search on MySQL myself. But instead I decided to go with MeiliSearch . A "Lightning Fast, Ultra Relevant, and Typo-Tolerant Search Engine".…
Just like last year , I want to write a recap blog post about all the things that happened for me in 2020. I mean there has been the obvious one, which is Corona - but on a personal note, my family and I luckily stayed healthy throughout the year, which I'm very thankful for. I haven't really touched my Macbook for the last couple of days, which is quite unusual for me, as my biggest hobbie is…
Dynamically generate open graph images # At Beyond Code , we have a lot of open source packages . To make our documentation pages look nicer, when being shared on Twitter, Slack or Facebook, I manually create open graph images, like this one: Or this one: And this is quite a time consuming task having to do this manually every time. As every good developer is lazy, I looked around to see how I…
PHP 8 - try out all new features # PHP 8 is already in it's release candidate stage, with RC 3 being released on October 29th, and the general availability release targeted for November 26th. So it is time to take a look at all the new and upcoming features of PHP 8. You can take a look at PHP 8's release schedule here . UPDATE: Free video course If you're more of a visual learner, check out my…
Announcing Forge CLI # Today I'm happy to tag version 1.0 of Forge CLI - our latest open source package. Now you might wonder: Forge CLI? Isn't that one of the many , many available Laravel Forge CLI tools? Why do we need another one? So, yeah - Forge CLI is a CLI tool to interact with your Laravel Forge provisioned server and site. But it works different compared with all the other available…
Almost exactly one year ago I was sitting down with Sebastian to have lunch, where we discussed new Beyond Code product ideas. Up until that point we have already launched two successful video course: Build A Chatbot - a video course about how to create your own PHP based chatbots PHP Package Development - a video course about how to write and structure your PHP applications in packages Scratch…
Introducing Laravel Playground # I'm super excited to finally reveal a project that I have been working on for a couple of months already. The overall development was pretty time consuming and it involves a lot of interesting challenges to make this work - but I feel like it's finally in a state that I feel good about sharing with others. Say hello to Laravel Playground : What is Laravel…
Introducing Expose – an easy to use tunneling service implemented in pure PHP # Expose is a PHP package that you can use to share your locally accessible websites with a publicly accessible web-server. Expose comes with a free-to-use server out of the box, but you are free to host your own server and use your own custom domain. Think of it as a completely open-source alternative to services such…
Last week I announced that we at Beyond Code have been working on a pretty cool new app called HELO. It's a desktop application for Windows, Mac and Linux that will make it super easy to test and debug your application mails during development. Here's a screenshot of how it will look like: The feedback from beta testers already is great! You can learn all about HELO's features at usehelo.com ! We…
🎨 Create and share beautiful images of your source code. I'm a huge fan of Carbon - an open source project and website that lets you easily create and download great looking code snippets, like this one here: I constantly use Carbon to create these shareable images for Twitter. Now for some reason, I would rather have a native application on my mac for this. I don't have to remember the URL, and…
I'm super excited to announce that we are giving away 5 PHP Package Development Pro video courses ! More than 2,000 developers have already taken my course and learned how to build reusable PHP packages. The video course contains more than 30 lessons and covers all topics required for you to start writing your own PHP package. It not only focuses on generic PHP packages but also contains a lot of…
I just tagged version 1.0.0 of my latest package, called laravel-server-timing . The package provides a light-weight approach to adding Server Timing headers to your application. What are Server Timing headers? # The Server Timing header got introduced ... and provides an easy way of sending timing information from the server to the browser. You are probably used to the Timing and Performance tab…
A lot of other people, like my friends Freek , Dries and Nuno have already posted their 2019 recap posts and I'm a bit late to the party, so here goes mine. I've been enjoying the christmas holidays and haven't touched my Macbook for the last 10 days, which was super relaxing for me, as I tend to become quite a "workaholic". So being calm enough to just relax over the last couple of days has been…
Laravel form requests are one of the most underrated features, maybe even a bit "hidden" inside the Laravel framework. Don't just take my word for granted - here's what Taylor Otwell thinks about it: Truth 👌 https://t.co/dug8Gxi1u6 — Taylor Otwell 🏝 (@taylorotwell) October 7, 2019 Let me show you what form requests can do for you - and how you can make use of them to write beautiful,…
Before I start going into any details in this blog post, I want us to have the same definition of the meaning of "simplicity" and "simple" that I am referring to in this article. I have created many online video courses over the last couple of years, have given on-site trainings for our clients and gave a workshop at a conference. For all these occasions, I try to have my code samples as "simple"…
Last Friday, my friend Freek Van der Herten and I announced two big projects that we've been working on for the last 8 months. Flare - an error tracker built specifically for Laravel. You can find out all about it in our extensive blogpost and get on the early access list on the Flare homepage . And Ignition a beautiful error page for your Laravel applications. It becomes the default error page in…
While working on a client project over the last couple of weeks, one of the requested features was the ability to fetch incoming emails in the Laravel application. Using services such as Mailgun or Sendgrid, this is perfectly possible, since they offer support for webhooks where they send you either the raw email content, or a parsed version of it so that you can process the message. With this…
While preparing content for my upcoming PHP Package Development video course I discovered that over the last couple of years I spend more and more time polishing my code before shipping it. And I believe that this is something that is just as important as the actual coding itself. Let me talk you through some of the adjustments that I try to make, while working on my codebase and how this can…
While recording the videos for my upcoming PHP Package Development videos, I know that I wanted to cover semantic versioning and explain it in-depth. So rather than only having a video available, once the course is available in the next couple months, I also wanted to provide an extensive write-up on the topic. Why you should care # When you develop a package - no matter what language it has - you…
As a lot of other people have started to post their write-ups on how 2018 went for them, I want to join them and tell you a little about what happened to me throughout the last 12 months. I think this is also a great way for me to recap what I have achieved over the last year. So here we go. Conference Speaking # I was fortunate enough to speak at 4 PHP conferences in 4 differenct countries in…
Using Laravel's Eloquent Active-Record, it becomes incredibly easy to define relations between your models. But with all this ease of use, developers might not notice that their application could be suffering in terms of performance, because of underlying database calls. To give you a better understanding of what I mean, let's take a simple example. Let's take this simple ER Diagram (built using…
Laravel Dusk Dashboard is a Laravel package that gives you a beautiful Dashboard for your Dusk test suites. It completely visualizes the individual steps that are involved when your Dusk tests are running, as well as DOM snapshots for each individual step. This makes it super useful when trying to debug your browser tests and to figure out what they are doing in the background. You can also make…
Over the 7 years I have writte a lot of open- and closed-source packages in various programming languages. Most of them were written in PHP, but I've also spent a couple of years writing Objective-C and Java packages. But the days that I've written Objective-C or Java are long gone, so this post will focus on PHP. But most of the techniques and design principles can also be applied to any other…
Today Laravel announced that Laravel Nova can now be installed via composer. This works by providing your nova.laravel.com username and password as credentials for composer, as well as adding a custom Laravel Nova composer repository to your composer.json file: "repositories": [ { "type": "composer", "url": "https://nova.laravel.com" } ], This is great news, as this does not only simplify updating…
I'm not sure how you feel, but I consider myself a backend developer. Sure - I know my way around Vue.JS and really enjoy working with it, but writing CSS has never been my strong point. At one of our companies recent projects, we are working together with another development team, which is mostly taking care of frontend development. So we build controllers, repositories, services, etc. and hand…
Today I published the latest open source package under the Beyond Code Github account and it's called laravel-credentials . The package allows you to store all your production-related credentials in an encrypted file and put that file into version control instead of having to add multiple credentials into your .env file on your production system. This process has a couple benefits compared to the…
Yesterday Telegram announced a Login Widget , which allows you to add a "Login with Telegram" button on your website. By clicking on this login button, the user needs to input there phone number and instantly receive a confirmation message from Telegram. Upon confirming the login, you - as a website owner - retrieve the following information from the Telegram Bot: The user's Telegram ID The first…
Let me show you, how you can create your own Amazon Alexa skill to have a voice powered deployment system for Laravel Forge . What You Need # In order to get started, you first need to create an account at https://developer.amazon.com . Once you have that, we'll start by creating a new BotMan project - this will power our chatbot and drastically simplifies the code that we're going to write.…
It's this time of the year again - the end of the year is coming up fast, so why not step back and take a look at what we, as a PHP community, have achieved this year? For these statistics, I used the free GitHub Archive data in combination with Google BigQuery, which lets you process 1TB of data per month free of charge. So let's take a look at some numbers Most starred PHP repositories in 2017 #…
I am currently in the middle of working on a new BotMan feature - a frontend widget that you can embed into your website to make it easier to connect your website visitors with your own self-hosted chatbot solution. The backend / PHP side is already working and leverages the BotMan web driver , which is basically just an API that you can use to interact with your chatbot. As the widget solution…
This guide will show you how to configure Slack and get started with writing your first Laravel-based Slack bot using my PHP Slack Bot API . Set up Slack # Start by creating a new Slack app for your team. Visit https://api.slack.com/apps?new_app=1 and give your app a fancy name, as well as selecting the Slack Team you want to have this bot connected to. Click "Create App" and take note of your…
When working with Laravel, we have multiple ways of implementing real time messages / event broadcasting to our application, thanks to the Redis or Pusher integration in the framework. But what if we want to persist the realtime data in some kind of database? If you, for example, want to build a chat with pusher, you will notice that the messages don't get stored and will be gone after reloading…
Here's a quick tipp, if you happen to use the Laravel Baum package and you have large nested structures. In my case, we have a hierarchy of over 1000 entries that we need to display as a JSON / Array structure. The whole API call used to take nearly 7 seconds - so I began some detective work and fired up Blackfire to find the bottle neck. Take a look at the following call stack: Holy shit! That's…
Testing a Laravel application really is an easy task - the "Integrated" package from Jeffrey Way, that later got merged into the core framework is fantastic and helps you with the otherwise cumbersome task of testing and interacting with your application. But still - are you actually using tests? A lot of times people really love the idea of tests, but simply don't get their asses up to start…
If you're building a product, for example a SaaS as a side project, you might come to a point where you need more than the basic Authentication handling from Laravel. For me, this happened when working on FileHero . We decided that we need "Teams" - like Bitbucket or Slack. Users can be assigned to multiple teams, team owners can invite more team members, delete other members and maybe have access…