Blog
Google ZX - The Shell Alternative for Complex Scripts
When it comes to executing complex scripts that require accessing the output of other shell commands or analyzing data structures like arrays, the standard shell scripting language Bash quickly hits its limits. This is where Google ZX comes in, an open-source tool developed under the umbrella of the Google GitHub organization that allows you to write shell commands in JavaScript or TypeScript to perform complex tasks that are typically executed in the shell environment. What is Google ZX? Google ZX is a tool that allows you to write shell commands in JavaScript or TypeScript to perform comple…
Why you should start using VS Code devcontainers and GitHub Codespaces
Visual Studio Code (VS Code) devcontainers and GitHub codespaces are two tools that can greatly improve a developer's workflow by providing a consistent and secure development environment. VS Code devcontainers allow developers to work on a project in a pre-configured, isolated development environment. This means that developers can work on a project without worrying about conflicting dependencies or system configuration issues. Devcontainers are based on Docker containers, which are a lightweight and portable way to package up an application and its dependencies. With devcontainers, develope…
Creating an API integration using the Laravel Saloon package
The Laravel Saloon package is a powerful tool for creating API integrations for Laravel or any other PHP application. In this article, I will show you how to use this package to create a integration consisting of a connector, a request and a custom response type that can handle paginated results from an API using PHP's Generator feature. A Laravel Saloon integration typically consists of the following parts: The Connector: This is the base definition of the API and contains the base URL A Request: This defines a single endpoint of the API as well as the data it does consume A Response: This …
Configuring xDebug with Laravel and VS Code
Why step debugging? When writing software it does not matter how well the code is written or how cautious we are - there will inevitably be some bugs along the way. The proccess of solving a bug in all cases does at least require the following information: What is the error? Where did the error occur? Depending on how familiar we are with the codebase at hand these questions can be answered rather fast, but there are times when we need additional feedback - expicially when we do not exactly know where the execution of our codebase is breaking due to bad error handling or improper capsulatio…
Adding backwards compatibility for 'docker-compose' with Docker Compose V2
Since the release of Docker Compose V2 it has not only been introduced as a core plugin to the new versions of Docker engine but most notably it's command synthax has changed from docker-compose to docker compose - this can lead to a lot of issues when working with projects that yet have to use Docker Compose V1 for some reason. Luckily the plugins provided by the docker engine installation are standalone executables so we are able to run them directly without using the 'docker' command. We can use this knowledge to simply add an symbolic link that points to the Compose V2 plugin to our local…
How to integrate a custom faker provider in Laravel 8 factories
Factories are a conveniant way to easily generate data for our application for either testing or just general development purposes. Being able to quickly populate the database has benefits when developing big solutions too as it does allow to quickly adopt big changes to core data structures. However as the complexity of our application does increase in most cases the generators and data types already included with the faker library are fairly limited - a custom faker provider is required. Usually we now would have to register your custom providers using a service provider, but this solution …
Welcome to my blog
I welcome you to my Blog, here you will find posts covering topics in software development as well as my personal projects.