{
    "version": "https://jsonfeed.org/version/1.1",
    "title": "AlexVanderbist.be",
    "description": "Hi, I'm Alex. I'm a web-developer and tech-enthusiast writing about the same two topics. Currently living in Antwerp, Belgium and working at Spatie.",
    "home_page_url": "https://alexvanderbist.com",
    "feed_url": "https://alexvanderbist.com/feed.json",
    "language": "en-BE",
    "authors": [{
            "name": "Alex Vanderbist"
        }
    ],
    "items": [{
            "id": "https://alexvanderbist.com/2024/converting-html-to-pdf-using-php",
            "title": "Converting HTML to PDF using PHP",
            "url": "https://alexvanderbist.com/2024/converting-html-to-pdf-using-php",
            "content_html": "If you spend enough time building web applications, it's likely that you will eventually need a solution for generating PDF documents. Consider scenarios like invoice PDFs, printable tickets, gift vouchers in email attachments or printable shipping labels. Let's look at four options to accomplish this in a PHP application.",
            "summary": "If you spend enough time building web applications, it's likely that you will eventually need a solution for generating PDF documents. Consider scenarios like invoice PDFs, printable tickets, gift vouchers in email attachments or printable shipping labels. Let's look at four options to accomplish this in a PHP application.",
            "date_published": "2024-03-18T00:00:00+00:00",
            "date_modified": "2024-03-18T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2021/measuring-caffeine-intake-at-spatie",
            "title": "Measuring caffeine intake at Spatie",
            "url": "https://alexvanderbist.com/2021/measuring-caffeine-intake-at-spatie",
            "content_html": "For a while now, we've had some empty space on our office dashboard. One of the more interesting ideas that we came up with, is a tile that can count the number of coffees brewed at the office based on a Raspberry Pi listening to the coffee machine.",
            "summary": "For a while now, we've had some empty space on our office dashboard. One of the more interesting ideas that we came up with, is a tile that can count the number of coffees brewed at the office based on a Raspberry Pi listening to the coffee machine.",
            "date_published": "2021-11-04T00:00:00+00:00",
            "date_modified": "2021-11-04T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2021/private-satis-authentication-backed-by-laravel",
            "title": "Private Satis authentication backed by Laravel",
            "url": "https://alexvanderbist.com/2021/private-satis-authentication-backed-by-laravel",
            "content_html": "In part one of this two-part series we looked at setting up a Satis repository for our private GitHub packages. Now that we've got a basic Satis server running, let's look at the options to secure this server.",
            "summary": "In part one of this two-part series we looked at setting up a Satis repository for our private GitHub packages. Now that we've got a basic Satis server running, let's look at the options to secure this server.",
            "date_published": "2021-06-16T00:00:00+00:00",
            "date_modified": "2021-06-16T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2021/setting-up-and-securing-a-private-composer-repository",
            "title": "Setting up and securing a private Composer repository",
            "url": "https://alexvanderbist.com/2021/setting-up-and-securing-a-private-composer-repository",
            "content_html": "At Spatie, we host several packages on a private composer packagist server using Satis. In the first of this two-part blog series we'll take a look at how we're distributing these packages by hosting our own private Composer repository using Satis and how you can do that too.",
            "summary": "At Spatie, we host several packages on a private composer packagist server using Satis. In the first of this two-part blog series we'll take a look at how we're distributing these packages by hosting our own private Composer repository using Satis and how you can do that too.",
            "date_published": "2021-06-15T00:00:00+00:00",
            "date_modified": "2021-06-15T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2021/comparing-dns-records-on-two-nameservers",
            "title": "Comparing DNS records on two nameservers",
            "url": "https://alexvanderbist.com/2021/comparing-dns-records-on-two-nameservers",
            "content_html": "We've all been there: you've just manually copied 30+ DNS records from one server to another and you're about to press the metaphorical red button by updating the domain's nameservers. If only there was a way to make sure you've copied everything correctly...",
            "summary": "We've all been there: you've just manually copied 30+ DNS records from one server to another and you're about to press the metaphorical red button by updating the domain's nameservers. If only there was a way to make sure you've copied everything correctly...",
            "date_published": "2021-01-25T00:00:00+00:00",
            "date_modified": "2021-01-25T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2021/slow-queues-and-redis-over-tls",
            "title": "Some notes on slow queues and Redis over TLS",
            "url": "https://alexvanderbist.com/2021/slow-queues-and-redis-over-tls",
            "content_html": "When playing around with a load testing tool and Laravel queues I started noticing a weird pattern: every 22 dispatched jobs, there would be a 5 second delay on all queues before dispatching the next set off jobs. This only seemed to be the case using a DigitalOcean Droplet and their managed Redis servers.",
            "summary": "When playing around with a load testing tool and Laravel queues I started noticing a weird pattern: every 22 dispatched jobs, there would be a 5 second delay on all queues before dispatching the next set off jobs. This only seemed to be the case using a DigitalOcean Droplet and their managed Redis servers.",
            "date_published": "2021-01-04T00:00:00+00:00",
            "date_modified": "2021-01-04T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2020/tinker-app",
            "title": "Open\u2011sourcing Tinker.app",
            "url": "https://alexvanderbist.com/2020/tinker-app",
            "content_html": "Back in 2017 I started working on Tinker.app: a hosted, in-browser version of Laravel's Tinker tool. It allows you to run and debug PHP code straight from a browser window. As an added bonus, package creators would be able to sandbox and demo their Laravel packages using embedded Tinker.app sessions.",
            "summary": "Back in 2017 I started working on Tinker.app: a hosted, in-browser version of Laravel's Tinker tool. It allows you to run and debug PHP code straight from a browser window. As an added bonus, package creators would be able to sandbox and demo their Laravel packages using embedded Tinker.app sessions.",
            "date_published": "2020-07-27T00:00:00+00:00",
            "date_modified": "2020-07-27T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2020/enable-early-access-metal-support-for-jetbrains-ides",
            "title": "Enable early access Metal support for JetBrains IDEs",
            "url": "https://alexvanderbist.com/2020/enable-early-access-metal-support-for-jetbrains-ides",
            "content_html": "JetBrains probably has some of the best IDEs out there. However, if you've ever used one for more than two minutes, you'll know it's not their speed that puts them on the leaderboards. Project Lanai looks to (partially) solve this by using Apple's Metal API to render the application. Let's look at how we can enable an early access build with Metal support on any JetBrains IDE.",
            "summary": "JetBrains probably has some of the best IDEs out there. However, if you've ever used one for more than two minutes, you'll know it's not their speed that puts them on the leaderboards. Project Lanai looks to (partially) solve this by using Apple's Metal API to render the application. Let's look at how we can enable an early access build with Metal support on any JetBrains IDE.",
            "date_published": "2020-06-23T00:00:00+00:00",
            "date_modified": "2020-06-23T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2020/advanced-laravel-migrations-using-temporary-tables",
            "title": "Advanced Laravel migrations using temporary tables",
            "url": "https://alexvanderbist.com/2020/advanced-laravel-migrations-using-temporary-tables",
            "content_html": "If you've ever ran a big migration in Laravel before you might know there are a lot of things that can go wrong. Processes go out of memory, migrations crashing half way through leaving some data unmigrated, rollbacks going wrong, etc... Let's see how we can avoid all of the above when creating a somewhat more advanced migration.",
            "summary": "If you've ever ran a big migration in Laravel before you might know there are a lot of things that can go wrong. Processes go out of memory, migrations crashing half way through leaving some data unmigrated, rollbacks going wrong, etc... Let's see how we can avoid all of the above when creating a somewhat more advanced migration.",
            "date_published": "2020-05-19T00:00:00+00:00",
            "date_modified": "2020-05-19T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2020/teamspeak-voice-notifications-for-discord",
            "title": "Bringing TeamSpeak voice notifications to Discord",
            "url": "https://alexvanderbist.com/2020/teamspeak-voice-notifications-for-discord",
            "content_html": "In the past few weeks my friends and I spent quite literally day and night on Discord's voice chat. This inevitably brought back some good memories from the Summer nights we spent playing games and chatting away on TeamSpeak. And even though Discord is pretty great, there's one TeamSpeak feature missing to complete the nostalgia trip: the obnoxious voice notifications. Let's bring them back. _User joined your channel_",
            "summary": "In the past few weeks my friends and I spent quite literally day and night on Discord's voice chat. This inevitably brought back some good memories from the Summer nights we spent playing games and chatting away on TeamSpeak. And even though Discord is pretty great, there's one TeamSpeak feature missing to complete the nostalgia trip: the obnoxious voice notifications. Let's bring them back. _User joined your channel_",
            "date_published": "2020-04-06T00:00:00+00:00",
            "date_modified": "2020-04-06T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2019/running-laravel-scheduler-without-setting-up-cron",
            "title": "Running Laravel's scheduler without setting up CRON jobs",
            "url": "https://alexvanderbist.com/2019/running-laravel-scheduler-without-setting-up-cron",
            "content_html": "Scheduler is a tiny shell script to run Laravel's scheduler every 60 seconds, without having to configure any CRON jobs.",
            "summary": "Scheduler is a tiny shell script to run Laravel's scheduler every 60 seconds, without having to configure any CRON jobs.",
            "date_published": "2019-06-10T00:00:00+00:00",
            "date_modified": "2019-06-10T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2019/how-migrations-might-be-slowing-down-your-laravel-tests",
            "title": "How migrations might be slowing down your Laravel tests",
            "url": "https://alexvanderbist.com/2019/how-migrations-might-be-slowing-down-your-laravel-tests",
            "content_html": "Over the years I've read a lot of interesting posts about speeding up PHPUnit. The last one being a pretty good summary by Laravel News (link in article). Remarkably, there's one trick that wasn't mentioned in any of these articles. I swear this is not clickbait.",
            "summary": "Over the years I've read a lot of interesting posts about speeding up PHPUnit. The last one being a pretty good summary by Laravel News (link in article). Remarkably, there's one trick that wasn't mentioned in any of these articles. I swear this is not clickbait.",
            "date_published": "2019-01-04T00:00:00+00:00",
            "date_modified": "2019-01-04T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2018/fixing-imagick-error-unauthorized",
            "title": "Fixing Imagick's \u201cnot authorized\u201d exception",
            "url": "https://alexvanderbist.com/2018/fixing-imagick-error-unauthorized",
            "content_html": "Over the last few days we've had a couple of issues with Imagick and processing PDFs on our servers. As it turns out, these issues are caused by automatic security updates. Let's look into the issue and its solution.",
            "summary": "Over the last few days we've had a couple of issues with Imagick and processing PDFs on our servers. As it turns out, these issues are caused by automatic security updates. Let's look into the issue and its solution.",
            "date_published": "2018-10-26T00:00:00+00:00",
            "date_modified": "2018-10-26T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2018/quickly-set-up-exisiting-laravel-projects-using-linstall",
            "title": "Quickly set up existing Laravel projects",
            "url": "https://alexvanderbist.com/2018/quickly-set-up-exisiting-laravel-projects-using-linstall",
            "content_html": "Lately, a lot of cool shell aliases and functions have been posted on Twitter. I've decided to join in on the fun and create a shell function for something I do about 5 times per day: setting up an existing Laravel project.",
            "summary": "Lately, a lot of cool shell aliases and functions have been posted on Twitter. I've decided to join in on the fun and create a shell function for something I do about 5 times per day: setting up an existing Laravel project.",
            "date_published": "2018-08-23T00:00:00+00:00",
            "date_modified": "2018-08-23T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2018/how-to-hack-and-win-the-may-mayhem-blog-contest",
            "title": "How to \u2018hack\u2019 and win the May Mayhem blog contest",
            "url": "https://alexvanderbist.com/2018/how-to-hack-and-win-the-may-mayhem-blog-contest",
            "content_html": "I feel like programmers are often as good at breaking things as they are at fixing things. Part of the thought process of programming anything new is figuring out its flaws, weaknesses and possible exploitations. As a web developer, I often find myself applying the same thought process to everything I see and read about online. Including Laravel's May Mayhem blog contest.",
            "summary": "I feel like programmers are often as good at breaking things as they are at fixing things. Part of the thought process of programming anything new is figuring out its flaws, weaknesses and possible exploitations. As a web developer, I often find myself applying the same thought process to everything I see and read about online. Including Laravel's May Mayhem blog contest.",
            "date_published": "2018-05-27T00:00:00+00:00",
            "date_modified": "2018-05-27T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        },
        {
            "id": "https://alexvanderbist.com/2018/builder-apis-with-laravel-query-builder",
            "title": "Building APIs with Laravel Query Builder",
            "url": "https://alexvanderbist.com/2018/builder-apis-with-laravel-query-builder",
            "content_html": "If you've ever worked on any medium sized API I'm sure you quickly discovered a lot of frequently occurring patterns. Parsing the query string, retrieving necessary models, filtering, sorting, adding pagination and finally encoding the data as JSON. Creating a new endpoint quickly becomes an exhausting chore of making the same decisions repeatedly. To make some of these decisions for us, we built our latest package: laravel-query-builder.",
            "summary": "If you've ever worked on any medium sized API I'm sure you quickly discovered a lot of frequently occurring patterns. Parsing the query string, retrieving necessary models, filtering, sorting, adding pagination and finally encoding the data as JSON. Creating a new endpoint quickly becomes an exhausting chore of making the same decisions repeatedly. To make some of these decisions for us, we built our latest package: laravel-query-builder.",
            "date_published": "2018-02-10T00:00:00+00:00",
            "date_modified": "2018-02-10T00:00:00+00:00",
            "authors": [{ "name": "Alex Vanderbist" }],
            "tags": [  ]
        }        
    ]
}
