<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Articles on A blog about web development - Barry van Veen</title>
    <link>https://barryvanveen.nl/articles/</link>
    <description>Recent content in Articles on A blog about web development - Barry van Veen</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 24 May 2024 21:15:00 +0200</lastBuildDate>
    <atom:link href="https://barryvanveen.nl/articles/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How to check the cURL version used in PHP?</title>
      <link>https://barryvanveen.nl/articles/b8d4f63b-how-to-check-the-curl-version-used-in-php/</link>
      <pubDate>Wed, 11 Oct 2023 10:08:54 +0100</pubDate>
      <guid>https://barryvanveen.nl/articles/b8d4f63b-how-to-check-the-curl-version-used-in-php/</guid>
      <description>With a &lt;a href=&#34;https://curl.se/docs/CVE-2023-38545.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;high severity security issue&lt;/a&gt; just announced in curl, you might be wondering which curl version you are using in your PHP script. Here&amp;rsquo;s how to find it.</description>
    </item>
    <item>
      <title>Reinstall global packages after updating node using NVM</title>
      <link>https://barryvanveen.nl/articles/3ebc85ec-reinstall-global-packages-after-updating-node-using-nvm/</link>
      <pubDate>Thu, 21 Sep 2023 10:00:00 +0100</pubDate>
      <guid>https://barryvanveen.nl/articles/3ebc85ec-reinstall-global-packages-after-updating-node-using-nvm/</guid>
      <description>When you use &lt;code&gt;nvm&lt;/code&gt; to update a node version, you lose all globally installed &lt;code&gt;npm&lt;/code&gt; packages. Use these steps to reinstall those packages.</description>
    </item>
    <item>
      <title>My Server Administration Cheat Sheet</title>
      <link>https://barryvanveen.nl/articles/54f0e62c-my-server-administration-cheat-sheet/</link>
      <pubDate>Fri, 30 Dec 2022 15:59:53 +0100</pubDate>
      <guid>https://barryvanveen.nl/articles/54f0e62c-my-server-administration-cheat-sheet/</guid>
      <description>Some of the commands that I use to install and maintain my web server.</description>
    </item>
    <item>
      <title>A quick way to speed up Docker</title>
      <link>https://barryvanveen.nl/articles/db584055-a-quick-way-to-speed-up-docker/</link>
      <pubDate>Sat, 15 Oct 2022 13:19:06 +0100</pubDate>
      <guid>https://barryvanveen.nl/articles/db584055-a-quick-way-to-speed-up-docker/</guid>
      <description>I&amp;rsquo;ve heard many devs working on MacOS that their Docker development environment is slow. Enabling these experimental features can be a quick and easy improvement.</description>
    </item>
    <item>
      <title>Consistency is key</title>
      <link>https://barryvanveen.nl/articles/935d645f-consistency-is-key/</link>
      <pubDate>Fri, 14 Oct 2022 15:30:54 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/935d645f-consistency-is-key/</guid>
      <description>Clean code with consistent formatting is easier to read. Writing code in a consistent way is hard. That is why I&amp;rsquo;m a big fan of tools that automate this process.</description>
    </item>
    <item>
      <title>What I learned building a development environment in Docker</title>
      <link>https://barryvanveen.nl/articles/ac08fa9b-what-i-learned-building-a-development-environment-in-docker/</link>
      <pubDate>Mon, 16 May 2022 21:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/ac08fa9b-what-i-learned-building-a-development-environment-in-docker/</guid>
      <description>This article describes what I&amp;rsquo;ve learned building a new Docker-based development environment for this blog.</description>
    </item>
    <item>
      <title>Measuring performance with Apache Benchmark</title>
      <link>https://barryvanveen.nl/articles/78224837-measuring-performance-with-apache-benchmark/</link>
      <pubDate>Tue, 15 Mar 2022 18:49:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/78224837-measuring-performance-with-apache-benchmark/</guid>
      <description>I made a script to easily take consistent measurements using Apache Benchmark. It includes an easy way to compare multiple measurements in a visual way.</description>
    </item>
    <item>
      <title>A new and improved blog</title>
      <link>https://barryvanveen.nl/articles/57-a-new-and-improved-blog/</link>
      <pubDate>Fri, 14 Jan 2022 16:30:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/57-a-new-and-improved-blog/</guid>
      <description>After almost 2 years of (non)development, this blog finally received a big overhaul. Let&amp;rsquo;s go over the biggest changes in this new version.</description>
    </item>
    <item>
      <title>Reflecting on 2021 and ideas for 2022</title>
      <link>https://barryvanveen.nl/articles/85f63cce-reflecting-on-2021-and-ideas-for-2022/</link>
      <pubDate>Tue, 04 Jan 2022 21:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/85f63cce-reflecting-on-2021-and-ideas-for-2022/</guid>
      <description>Another year has gone by. Time to reflect and look ahead.</description>
    </item>
    <item>
      <title>Configure PurgeCss to not remove certain styles</title>
      <link>https://barryvanveen.nl/articles/68-configure-purgecss-to-not-remove-certain-styles/</link>
      <pubDate>Mon, 26 Apr 2021 17:50:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/68-configure-purgecss-to-not-remove-certain-styles/</guid>
      <description>Today I learned about 2 easy ways to instruct PurgeCSS to &lt;em&gt;not&lt;/em&gt; remove certain styles: safelists and comments.</description>
    </item>
    <item>
      <title>Solving &#34;Malformed UTF-8 characters, possibly incorrectly encoded&#34; error in Laravel</title>
      <link>https://barryvanveen.nl/articles/67-solving-malformed-utf-8-characters-possibly-incorrectly-encoded-error-in-laravel/</link>
      <pubDate>Mon, 28 Sep 2020 23:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/67-solving-malformed-utf-8-characters-possibly-incorrectly-encoded-error-in-laravel/</guid>
      <description>I ran into this error about malformed characters when return a JSON response. The solution is using multi-byte safe string functions.</description>
    </item>
    <item>
      <title>Connect to a remote database using an SSH tunnel in Laravel</title>
      <link>https://barryvanveen.nl/articles/66-connect-to-a-remote-database-using-an-ssh-tunnel-in-laravel/</link>
      <pubDate>Sun, 12 Jul 2020 20:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/66-connect-to-a-remote-database-using-an-ssh-tunnel-in-laravel/</guid>
      <description>If you need to connect to a database over an SSH tunnel, here is how to do that in Laravel. You need a new database connection and command to create the tunnel.</description>
    </item>
    <item>
      <title>My resolutions for 2020</title>
      <link>https://barryvanveen.nl/articles/62-my-resolutions-for-2020/</link>
      <pubDate>Mon, 30 Dec 2019 22:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/62-my-resolutions-for-2020/</guid>
      <description>Now that 2019 comes to an end, it is time to reflect and make plans for the new year.</description>
    </item>
    <item>
      <title>How to fix common Laravel Dusk problems</title>
      <link>https://barryvanveen.nl/articles/61-how-to-fix-common-laravel-dusk-problems/</link>
      <pubDate>Fri, 06 Sep 2019 11:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/61-how-to-fix-common-laravel-dusk-problems/</guid>
      <description>Every time I&amp;rsquo;ve updated Laravel Homestead or started a new environment, I&amp;rsquo;ve had problems running Laravel Dusk. These are solutions for the most common problems.</description>
    </item>
    <item>
      <title>Using a UUID in a Laravel Eloquent model</title>
      <link>https://barryvanveen.nl/articles/60-using-a-uuid-in-a-laravel-eloquent-model/</link>
      <pubDate>Sat, 01 Jun 2019 11:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/60-using-a-uuid-in-a-laravel-eloquent-model/</guid>
      <description>Changing the primary key from an auto-incrementing integer to a UUID is really simple in Laravel Eloquent.</description>
    </item>
    <item>
      <title>Different kinds of service bus: command bus, service bus and query bus.</title>
      <link>https://barryvanveen.nl/articles/59-different-kinds-of-service-bus-command-bus-service-bus-and-query-bus/</link>
      <pubDate>Fri, 01 Mar 2019 16:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/59-different-kinds-of-service-bus-command-bus-service-bus-and-query-bus/</guid>
      <description>Service buses exist in different flavors. This article explains the overall concept of the service bus. Then it shows differences between the command bus, query bus, and event bus.</description>
    </item>
    <item>
      <title>What is a command bus and why should you use it?</title>
      <link>https://barryvanveen.nl/articles/49-what-is-a-command-bus-and-why-should-you-use-it/</link>
      <pubDate>Thu, 14 Feb 2019 15:30:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/49-what-is-a-command-bus-and-why-should-you-use-it/</guid>
      <description>This article explains the basic concepts of the command bus. Why should you use it and how? Pointers are given to advanced use cases and good resources.</description>
    </item>
    <item>
      <title>Migrate Apache .htaccess to NGINX server block</title>
      <link>https://barryvanveen.nl/articles/56-migrate-apache-htaccess-to-nginx-server-block/</link>
      <pubDate>Wed, 06 Feb 2019 19:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/56-migrate-apache-htaccess-to-nginx-server-block/</guid>
      <description>I&amp;rsquo;ve migrated my blog from Apache to NGINX. In the process, the .htaccess file was converted into an NGINX Server Block. This article shows both files and serves as an example for others that want to migrate.</description>
    </item>
    <item>
      <title>Installing a private package with composer</title>
      <link>https://barryvanveen.nl/articles/55-installing-a-private-package-with-composer/</link>
      <pubDate>Mon, 21 Jan 2019 23:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/55-installing-a-private-package-with-composer/</guid>
      <description>This articles explains how to install a private PHP package with Composer. Using SSH keys and a little composer.json magic, in just 3 steps.</description>
    </item>
    <item>
      <title>SSH keys 101</title>
      <link>https://barryvanveen.nl/articles/53-ssh-keys-101/</link>
      <pubDate>Fri, 04 Jan 2019 19:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/53-ssh-keys-101/</guid>
      <description>SSH keys can be used to create secure connections between computers. This article explains the basics of creating and using SSH keys.</description>
    </item>
    <item>
      <title>My resolutions for 2019</title>
      <link>https://barryvanveen.nl/articles/54-my-resolutions-for-2019/</link>
      <pubDate>Sun, 30 Dec 2018 22:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/54-my-resolutions-for-2019/</guid>
      <description>Now that 2018 comes to an end, it is time to reflect and make plans for the new year. The theme for 2019: learn new things and becoming an &amp;ldquo;activist&amp;rdquo; for online privacy.</description>
    </item>
    <item>
      <title>Solving inconsistent line endings within a Git repository</title>
      <link>https://barryvanveen.nl/articles/52-solving-inconsistent-line-endings-within-a-git-repository/</link>
      <pubDate>Wed, 22 Aug 2018 20:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/52-solving-inconsistent-line-endings-within-a-git-repository/</guid>
      <description>If you develop code on both Windows and Linux machines you might have run into inconsistent line endings. This might lead to &amp;ldquo;empty&amp;rdquo; commits, consisting only of changed line endings. This post describes how a .gitattributes file can solve all your (line ending-related) problems.</description>
    </item>
    <item>
      <title>8 resources to learn about SOLID design principles</title>
      <link>https://barryvanveen.nl/articles/51-8-resources-to-learn-about-solid-design-principles/</link>
      <pubDate>Thu, 09 Aug 2018 18:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/51-8-resources-to-learn-about-solid-design-principles/</guid>
      <description>The SOLID design principles are guidelines for building software that is easier to understand and maintain while also being more flexible. These 8 resources explain what SOLID is, and what it isn&amp;rsquo;t.</description>
    </item>
    <item>
      <title>Enforce strict type checking in PHP with PHP Code Sniffer</title>
      <link>https://barryvanveen.nl/articles/50-enforce-strict-type-checking-in-php-with-php-code-sniffer/</link>
      <pubDate>Fri, 03 Aug 2018 18:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/50-enforce-strict-type-checking-in-php-with-php-code-sniffer/</guid>
      <description>PHP 7+ has support for strict type checking. Using PHP Code Sniffer we can enforce the use of &lt;code&gt;declare(strict_types=1);&lt;/code&gt; at the beginning of each file.</description>
    </item>
    <item>
      <title>My favorite talks from Dutch PHP Conference 2018</title>
      <link>https://barryvanveen.nl/articles/48-my-favorite-talks-from-dutch-php-conference-2018/</link>
      <pubDate>Sat, 07 Jul 2018 12:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/48-my-favorite-talks-from-dutch-php-conference-2018/</guid>
      <description>On June 7, 8, and 9, the Dutch PHP Conference 2018 was held. Now that all information has settled down, and most talks are available on YouTube, I want to share the talks I liked the most.</description>
    </item>
    <item>
      <title>How to prevent the use of unsafe-inline in CSP</title>
      <link>https://barryvanveen.nl/articles/47-how-to-prevent-the-use-of-unsafe-inline-in-csp/</link>
      <pubDate>Fri, 18 May 2018 22:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/47-how-to-prevent-the-use-of-unsafe-inline-in-csp/</guid>
      <description>It is best to prevent the usage of &amp;ldquo;unsafe-inline&amp;rdquo; in your Content Security Policy (CSP) header. In this article, I will explain why that is the case and how to transform unsafe assets into safe ones.</description>
    </item>
    <item>
      <title>Improving the performance of spatie/laravel-permission</title>
      <link>https://barryvanveen.nl/articles/46-improving-the-performance-of-spatielaravel-permission/</link>
      <pubDate>Thu, 26 Apr 2018 00:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/46-improving-the-performance-of-spatielaravel-permission/</guid>
      <description>Filtering Laravel Collections can become a performance bottleneck. Using the &lt;code&gt;filter&lt;/code&gt; method is significantly faster then the &lt;code&gt;where&lt;/code&gt; method, if used properly. Read the article for a full comparison and benchmark results.</description>
    </item>
    <item>
      <title>Improve the accuracy of your tests with @covers and @coversNothing annotations</title>
      <link>https://barryvanveen.nl/articles/45-improve-the-accuracy-of-your-tests-with-at-covers-and-at-coversnothing-annotations/</link>
      <pubDate>Mon, 19 Feb 2018 22:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/45-improve-the-accuracy-of-your-tests-with-at-covers-and-at-coversnothing-annotations/</guid>
      <description>Code coverage results can give a false sense of quality. With the &lt;code&gt;@covers&lt;/code&gt; and &lt;code&gt;@coversNothing&lt;/code&gt; annotations, you can better express the intention of your test. This leads to better code coverage results that truly reflect the coverage of your tests.</description>
    </item>
    <item>
      <title>Package development: run a package from a local directory</title>
      <link>https://barryvanveen.nl/articles/44-package-development-run-a-package-from-a-local-directory/</link>
      <pubDate>Fri, 26 Jan 2018 23:30:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/44-package-development-run-a-package-from-a-local-directory/</guid>
      <description>This article explains how you can require a package from a local path into your project with Composer. This way you can run a local copy of a repository and test any changes you make. Because the local repo will be symlinked changes are shared in real-time, there is no need for intermediate committing and updating.</description>
    </item>
    <item>
      <title>How to start a new repository based on a skeleton project</title>
      <link>https://barryvanveen.nl/articles/43-how-to-start-a-new-repository-based-on-a-skeleton-project/</link>
      <pubDate>Fri, 15 Sep 2017 18:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/43-how-to-start-a-new-repository-based-on-a-skeleton-project/</guid>
      <description>When you start a new project it is best to stick the best practices. Skeleton projects provide a good basis. I&amp;rsquo;ll describe how to get up and running fast.</description>
    </item>
    <item>
      <title>Code coverage when running PHPUnit on Laravel Homestead</title>
      <link>https://barryvanveen.nl/articles/42-code-coverage-when-running-phpunit-on-laravel-homestead/</link>
      <pubDate>Mon, 04 Sep 2017 23:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/42-code-coverage-when-running-phpunit-on-laravel-homestead/</guid>
      <description>This is a quick tip on how to get code coverage results when running PHPUnit on Laravel Homestead. This will enable Xdebug first and then run your tests.</description>
    </item>
    <item>
      <title>My second day at Laracon EU 2017</title>
      <link>https://barryvanveen.nl/articles/41-my-second-day-at-laracon-eu-2017/</link>
      <pubDate>Thu, 31 Aug 2017 00:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/41-my-second-day-at-laracon-eu-2017/</guid>
      <description>In this post, I give an overview of my second day at Laracon EU 2017. I&amp;rsquo;ll describe the presentations I&amp;rsquo;ve seen and things that stood out for me.</description>
    </item>
    <item>
      <title>My first day at Laracon EU 2017</title>
      <link>https://barryvanveen.nl/articles/40-my-first-day-at-laracon-eu-2017/</link>
      <pubDate>Wed, 30 Aug 2017 18:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/40-my-first-day-at-laracon-eu-2017/</guid>
      <description>This is a report of my first day at Laracon EU 2017. I&amp;rsquo;ll describe the talks I saw and what stood out for me.</description>
    </item>
    <item>
      <title>Connect to MSSQL database from PHP</title>
      <link>https://barryvanveen.nl/articles/39-connect-to-mssql-database-from-php/</link>
      <pubDate>Mon, 21 Aug 2017 23:30:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/39-connect-to-mssql-database-from-php/</guid>
      <description>Lately, I&amp;rsquo;ve been working on a project that has to read data from an MSSQL database. This is the setup that we used to connect to the database and solve any encoding issues.</description>
    </item>
    <item>
      <title>My first open source package</title>
      <link>https://barryvanveen.nl/articles/38-my-first-open-source-package/</link>
      <pubDate>Sat, 18 Mar 2017 17:30:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/38-my-first-open-source-package/</guid>
      <description>Last week I published my first open source package. This is what I learned while working on it.</description>
    </item>
    <item>
      <title>How to create and configure a custom module in Codeception</title>
      <link>https://barryvanveen.nl/articles/37-how-to-create-and-configure-a-custom-module-in-codeception/</link>
      <pubDate>Fri, 10 Feb 2017 19:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/37-how-to-create-and-configure-a-custom-module-in-codeception/</guid>
      <description>This post explains how you can create and configure a custom module for Codeception. This is the easiest way to extend on Codeception in a reusable way.</description>
    </item>
    <item>
      <title>Environment configuration in Codeception with dotenv</title>
      <link>https://barryvanveen.nl/articles/36-environment-configuration-in-codeception-with-dotenv/</link>
      <pubDate>Sun, 05 Feb 2017 12:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/36-environment-configuration-in-codeception-with-dotenv/</guid>
      <description>Codeception is normally configured using the codeception.yml file. We can also use a dotenv configuration file to store any sensitive data. This posts shows you how.</description>
    </item>
    <item>
      <title>How to configure security headers for Laravel</title>
      <link>https://barryvanveen.nl/articles/35-how-to-configure-security-headers-for-laravel/</link>
      <pubDate>Sun, 18 Dec 2016 17:30:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/35-how-to-configure-security-headers-for-laravel/</guid>
      <description>Any website is potentially vulnerable to different attacks. With proper security headers in place, you can minimize the risks for yourself and your visitors.</description>
    </item>
    <item>
      <title>Laravel service provider examples</title>
      <link>https://barryvanveen.nl/articles/34-laravel-service-provider-examples/</link>
      <pubDate>Sun, 13 Nov 2016 13:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/34-laravel-service-provider-examples/</guid>
      <description>In this post, we&amp;rsquo;ll look at some Laravel service provider examples. Most common use cases are shown using service providers from real open-source Laravel packages.</description>
    </item>
    <item>
      <title>Get notifications about new releases of your dependencies</title>
      <link>https://barryvanveen.nl/articles/33-get-notifications-about-new-releases-of-your-dependencies/</link>
      <pubDate>Sat, 29 Oct 2016 17:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/33-get-notifications-about-new-releases-of-your-dependencies/</guid>
      <description>It&amp;rsquo;s difficult to check if you need to update your dependencies. There are services that can help. This is a review of Gemnasium, VersionEye and Libraries.io, which I&amp;rsquo;ve tested for several weeks.</description>
    </item>
    <item>
      <title>3 tips for good dependency management</title>
      <link>https://barryvanveen.nl/articles/32-3-tips-for-good-dependency-management/</link>
      <pubDate>Sun, 23 Oct 2016 19:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/32-3-tips-for-good-dependency-management/</guid>
      <description>Updating dependencies can be tricky, especially if you let them build up over time. These are my tips to stay on top of any changes and make updating as painless as possible.</description>
    </item>
    <item>
      <title>How to automatically apply the Laravel PHP code style</title>
      <link>https://barryvanveen.nl/articles/31-how-to-automatically-apply-the-laravel-php-code-style/</link>
      <pubDate>Tue, 04 Oct 2016 00:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/31-how-to-automatically-apply-the-laravel-php-code-style/</guid>
      <description>Writing clean and readable code is essential. Having a properly defined code style, and adhering to that, is tedious work. Let&amp;rsquo;s automate it as much as possible.</description>
    </item>
    <item>
      <title>Generate unique data with Fzaninotto/Faker</title>
      <link>https://barryvanveen.nl/articles/30-generate-unique-data-with-fzaninottofaker/</link>
      <pubDate>Tue, 26 Jul 2016 23:30:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/30-generate-unique-data-with-fzaninottofaker/</guid>
      <description>Fzaninotto/Faker is a package for generating all sorts of random data. This tip shows you how you can use it to generate unique data for usage in tests.</description>
    </item>
    <item>
      <title>Pluralization in Laravel translations</title>
      <link>https://barryvanveen.nl/articles/29-pluralization-in-laravel-translations/</link>
      <pubDate>Fri, 15 Jul 2016 12:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/29-pluralization-in-laravel-translations/</guid>
      <description>Laravel translations can depend on the number of subjects: one apple, two apple&lt;strong&gt;s&lt;/strong&gt;. This article will explain more complex pluralizations: no apples, one apple, two apples, tons of apples.</description>
    </item>
    <item>
      <title>Laravel Blade @each directive</title>
      <link>https://barryvanveen.nl/articles/28-laravel-blade-at-each-directive/</link>
      <pubDate>Fri, 08 Jul 2016 13:30:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/28-laravel-blade-at-each-directive/</guid>
      <description>The relatively unknown &lt;code&gt;@each&lt;/code&gt; function in a very powerful way to loop over data in Laravel Blade templates. It is powerful and much more elegant than &lt;code&gt;@foreach&lt;/code&gt;.</description>
    </item>
    <item>
      <title>How to track 404 errors in Google Tag Manager</title>
      <link>https://barryvanveen.nl/articles/27-how-to-track-404-errors-in-google-tag-manager/</link>
      <pubDate>Sun, 03 Jul 2016 22:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/27-how-to-track-404-errors-in-google-tag-manager/</guid>
      <description>Google Tag Manager enables you to track different events by defining variables, triggers, and tags. In this post, I explain how to track 404 errors using the DataLayer.</description>
    </item>
    <item>
      <title>How to bundle and compile ES2015 into JavaScript</title>
      <link>https://barryvanveen.nl/articles/26-how-to-bundle-and-compile-es2015-into-javascript/</link>
      <pubDate>Sat, 25 Jun 2016 20:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/26-how-to-bundle-and-compile-es2015-into-javascript/</guid>
      <description>Not all features of ES2015 are widely supported. That is why it&amp;rsquo;s necessary to bundle modules yourself and compile it into ordinary JavaScript. This blog post describes how to accomplish this.</description>
    </item>
    <item>
      <title>Tracking exceptions with Bugsnag</title>
      <link>https://barryvanveen.nl/articles/25-tracking-exceptions-with-bugsnag/</link>
      <pubDate>Thu, 16 Jun 2016 22:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/25-tracking-exceptions-with-bugsnag/</guid>
      <description>Until today, I kept an eye on any errors on this website by sending them to myself by email. Although this works, I thought it was time to look for a better way of handling exceptions. Enter Bugsnag, a service that lets you track errors and exceptions and view them in a dashboard. These are my first experiences working with Bugsnag.</description>
    </item>
    <item>
      <title>Game of Life Javascript plugin</title>
      <link>https://barryvanveen.nl/articles/24-game-of-life-javascript-plugin/</link>
      <pubDate>Tue, 07 Jun 2016 23:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/24-game-of-life-javascript-plugin/</guid>
      <description>I&amp;rsquo;ve developed a little Javascript plugin with which you can play Conway&amp;rsquo;s Game of Life. Actually, it&amp;rsquo;s not a real game. You can determine the initial state and from there it sort of just evolves. Visit the article to play it yourself.</description>
    </item>
    <item>
      <title>Laravel configuration, the right way</title>
      <link>https://barryvanveen.nl/articles/23-laravel-configuration-the-right-way/</link>
      <pubDate>Fri, 19 Feb 2016 19:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/23-laravel-configuration-the-right-way/</guid>
      <description>In this article I want to show you the best practices of configuring your Laravel application.</description>
    </item>
    <item>
      <title>Use an SSL certificate</title>
      <link>https://barryvanveen.nl/articles/22-use-an-ssl-certificate/</link>
      <pubDate>Fri, 12 Feb 2016 17:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/22-use-an-ssl-certificate/</guid>
      <description>Using an SSL certificate is quickly becoming a best practice, if it isn&amp;rsquo;t already. What do you need to know before choosing a certificate and what do you need to check after installing it?</description>
    </item>
    <item>
      <title>Loading a (Google) webfont asynchronously</title>
      <link>https://barryvanveen.nl/articles/21-loading-a-google-webfont-asynchronously/</link>
      <pubDate>Fri, 05 Feb 2016 17:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/21-loading-a-google-webfont-asynchronously/</guid>
      <description>Just like stylesheets and Javascript files, requesting a webfont can be postponed or done asynchronously. Doing so will make your pages render more quickly, especially on browsers with a slower internet connection.</description>
    </item>
    <item>
      <title>Critical path CSS</title>
      <link>https://barryvanveen.nl/articles/20-critical-path-css/</link>
      <pubDate>Thu, 28 Jan 2016 11:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/20-critical-path-css/</guid>
      <description>Critical path CSS is the minimal amount of CSS that you need to render (part of) your website. By inlining this in the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; of your website you can defer loading the rest of the CSS. This increases page speed and gives users a better experience.</description>
    </item>
    <item>
      <title>Lazyloading Javascript</title>
      <link>https://barryvanveen.nl/articles/19-lazyloading-javascript/</link>
      <pubDate>Sat, 23 Jan 2016 17:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/19-lazyloading-javascript/</guid>
      <description>To improve the speed of your website you can lazyload Javascript, CSS and images. This means that you first load all essential elements of the page and only after that you start loading any extras. Lazyloading Javascript is simple and was the first thing I did.</description>
    </item>
    <item>
      <title>Simple cache busting in Laravel</title>
      <link>https://barryvanveen.nl/articles/18-simple-cache-busting-in-laravel/</link>
      <pubDate>Sat, 16 Jan 2016 18:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/18-simple-cache-busting-in-laravel/</guid>
      <description>It is usually a good idea to cache your CSS and JS files as long as possible. This way you save requests and your website will load faster. But how do you make sure your visitors &lt;em&gt;will&lt;/em&gt; download your new files when you made changes to them? Cache busting solves exactly this problem.</description>
    </item>
    <item>
      <title>Optimizing with PageSpeed</title>
      <link>https://barryvanveen.nl/articles/17-optimizing-with-pagespeed/</link>
      <pubDate>Mon, 11 Jan 2016 22:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/17-optimizing-with-pagespeed/</guid>
      <description>Optimizing the speed of your websites is interesting from multiple viewpoints. First and foremost it&amp;rsquo;s good for your visitors: nobody likes waiting. That&amp;rsquo;s probably why Google has incorporated the speed of a website in its ranking algorithm. And to give developers an extra hand they have developed Google Pagespeed: a tool that shows you how you can improve the performance of your website.</description>
    </item>
    <item>
      <title>Mijn Git cheatsheet</title>
      <link>https://barryvanveen.nl/articles/16-mijn-git-cheatsheet/</link>
      <pubDate>Sun, 06 Dec 2015 16:45:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/16-mijn-git-cheatsheet/</guid>
      <description>Eens in de zoveel tijd loop ik tegen een probleem aan met Git. Gelukkig is dat niet zo vaak, maar dat zorgt er wel voor dat ik elke keer opnieuw op zoek moet naar de oplossing voor een probleem dat ik al eerder heb opgelost. Daarom deze lijst met oplossingen die ik kan hergebruiken.</description>
    </item>
    <item>
      <title>Uitgaande links bijhouden in Google Analytics</title>
      <link>https://barryvanveen.nl/articles/15-uitgaande-links-bijhouden-in-google-analytics/</link>
      <pubDate>Fri, 27 Nov 2015 14:30:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/15-uitgaande-links-bijhouden-in-google-analytics/</guid>
      <description>Je kunt zelf events registreren bij Google Analytics. Dit stelt je in staat om bijvoorbeeld te meten op welke uitgaande links je bezoekers klikken. In dit artikel leg ik uit hoe dat werkt.</description>
    </item>
    <item>
      <title>Een goede workflow voor Git</title>
      <link>https://barryvanveen.nl/articles/14-een-goede-workflow-voor-git/</link>
      <pubDate>Sat, 21 Nov 2015 15:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/14-een-goede-workflow-voor-git/</guid>
      <description>Ik werk nu ongeveer een jaar met Git en het is me hartstikke goed bevallen. Het geeft veel meer mogelijkheden om samen aan software te bouwen dan bijvoorbeeld SVN, wat ik daarvoor gebruikte. Maar die vrijheid vraagt ook weer om een bepaalde structuur. En dat is waar Gitflow het leven heel veel makkelijker maakt.</description>
    </item>
    <item>
      <title>Best Practices van PHPUnit</title>
      <link>https://barryvanveen.nl/articles/13-best-practices-van-phpunit/</link>
      <pubDate>Fri, 13 Nov 2015 18:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/13-best-practices-van-phpunit/</guid>
      <description>Ik ben aan het proberen mijn code helemaal automatisch te testen met PHPUnit. Daarbij heb ik wat handige dingen geleerd en die wil ik graag met jullie delen.</description>
    </item>
    <item>
      <title>Nog makkelijker testen met Laravel</title>
      <link>https://barryvanveen.nl/articles/12-nog-makkelijker-testen-met-laravel/</link>
      <pubDate>Sat, 07 Nov 2015 23:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/12-nog-makkelijker-testen-met-laravel/</guid>
      <description>In Laravel is het makkelijker dan ooit om geautomatiseerde tests te schrijven. Zo wordt PHPUnit standaard meegeleverd en is de meeste configuratie alvast ingesteld. Toch zijn er nog een aantal dingen die je moet verbeteren voordat je echt makkelijk je tests kunt draaien.</description>
    </item>
    <item>
      <title>Zoekmachineoptimalisatie deel 3: microdata</title>
      <link>https://barryvanveen.nl/articles/11-zoekmachineoptimalisatie-deel-3-microdata/</link>
      <pubDate>Sat, 19 Sep 2015 19:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/11-zoekmachineoptimalisatie-deel-3-microdata/</guid>
      <description>&lt;a href=&#34;https://en.wikipedia.org/wiki/Microdata_%28HTML%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Microdata&lt;/a&gt; is een manier om de inhoud van je pagina nog duidelijker te maken voor zoekmachines. Met &lt;a href=&#34;https://barryvanveen.nl/articles/10-zoekmachineoptimalisatie-deel-2-semantische-html&#34; &gt;semantische html&lt;/a&gt; kun je al aangeven wat de belangrijkste content van een pagina en welke content bij elkaar hoort. Met microdata kun je aangeven wat voor data je content beschrijft. Zo kun je dus aangeven dat een artikel een nieuwsbericht is, of een recept, of één van de duizenden andere mogelijkheden.</description>
    </item>
    <item>
      <title>Zoekmachineoptimalisatie deel 2: semantische html</title>
      <link>https://barryvanveen.nl/articles/10-zoekmachineoptimalisatie-deel-2-semantische-html/</link>
      <pubDate>Sat, 25 Jul 2015 19:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/10-zoekmachineoptimalisatie-deel-2-semantische-html/</guid>
      <description>Vorige week schreef ik over het &lt;a href=&#34;https://barryvanveen.nl/articles/9-zoekmachineoptimalisatie-deel-1-hoe-genereer-je-een-sitemap-xml&#34; &gt;maken van een sitemap&lt;/a&gt;. Deze week wil ik het hebben over een andere aanpak waardoor zoekmachines je website beter kunnen indexeren, namelijk door gebruik te maken van semantische (beschrijvende) HTML. Met HTML5 tags zoals &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; en &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; kun je heel goed aangeven wat de belangrijkste inhoud van een pagina is.</description>
    </item>
    <item>
      <title>Zoekmachineoptimalisatie deel 1: Hoe genereer je een sitemap.xml?</title>
      <link>https://barryvanveen.nl/articles/9-zoekmachineoptimalisatie-deel-1-hoe-genereer-je-een-sitemapxml/</link>
      <pubDate>Sun, 19 Jul 2015 17:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/9-zoekmachineoptimalisatie-deel-1-hoe-genereer-je-een-sitemapxml/</guid>
      <description>Een sitemap is een overzicht van alle bereikbare pagina&amp;rsquo;s van je website. Het is een hulpmiddel dat door zoekmachines wordt gebruikt om alle pagina&amp;rsquo;s te indexeren. Het bouwen van een sitemap is daarmee één van de eerste stappen die je kunt zetten om je website beter vindbaar te maken in Google en andere zoekmachines.</description>
    </item>
    <item>
      <title>Updaten naar Laravel 5.1</title>
      <link>https://barryvanveen.nl/articles/8-updaten-naar-laravel-51/</link>
      <pubDate>Mon, 13 Jul 2015 00:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/8-updaten-naar-laravel-51/</guid>
      <description>Op 9 juli is &lt;a href=&#34;http://laravel.com/docs/5.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Laravel 5.1&lt;/a&gt; uitgekomen, een belangrijke nieuwe release. Dit is de eerste Long Term Support (LTS) versie van Laravel, wat betekent dat er 3 jaar ondersteuning zal zijn in de vorm van beveiligingsupdates. Niet alleen dat, versie 5 biedt veel nieuwe functies ten opzichte van versie 4.2 waar deze blog nog op draaide. Tijd dus om te updaten, maar dat blijkt een flinke klus&amp;hellip;</description>
    </item>
    <item>
      <title>Bestanden uit Dropbox benaderen met Flysystem</title>
      <link>https://barryvanveen.nl/articles/7-bestanden-uit-dropbox-benaderen-met-flysystem/</link>
      <pubDate>Fri, 19 Jun 2015 22:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/7-bestanden-uit-dropbox-benaderen-met-flysystem/</guid>
      <description>De afbeeldingen die je op deze blog ziet worden direct uit mijn eigen Dropbox-map gehaald. Superhandig want zo kan ik een bestand &amp;ldquo;uploaden&amp;rdquo; naar mijn webserver door het op mijn eigen computer naar een mapje te slepen.</description>
    </item>
    <item>
      <title>Data schrapen met Guzzle en DomCrawler</title>
      <link>https://barryvanveen.nl/articles/6-data-schrapen-met-guzzle-en-domcrawler/</link>
      <pubDate>Mon, 15 Jun 2015 23:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/6-data-schrapen-met-guzzle-en-domcrawler/</guid>
      <description>Omdat ik tegenwoordig al mijn blogjes in &lt;a href=&#34;https://www.feedly.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Feedly&lt;/a&gt; lees wil ik graag voor alles een RSS feed hebben. Helaas heeft LuckyTV nog geen eigen RSS feed dus heb ik besloten die dan maar zelf in elkaar te knutselen. Dat gaat gelukkig heel makkelijk met &lt;a href=&#34;https://github.com/guzzle/guzzle&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Guzzle&lt;/a&gt; en de &lt;a href=&#34;http://symfony.com/doc/current/components/dom_crawler.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;DomCrawler&lt;/a&gt; van Symfony.</description>
    </item>
    <item>
      <title>Hoe filter je referral spam uit Google Analytics?</title>
      <link>https://barryvanveen.nl/articles/4-hoe-filter-je-referral-spam-uit-google-analytics/</link>
      <pubDate>Sat, 06 Jun 2015 20:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/4-hoe-filter-je-referral-spam-uit-google-analytics/</guid>
      <description>Bij het runnen van een website hoort ook dat je wat statistieken verzamelt. Helaas worden de statistieken van Google Analytics de laatste tijd vervuild door spammers die hopen dat je naar hun website doorklikt. Om mijn statistieken weer overzichtelijk te maken heb ik uitgezocht hoe je de spam-bezoekers weg kunt filteren.</description>
    </item>
    <item>
      <title>RSS feed toegevoegd</title>
      <link>https://barryvanveen.nl/articles/5-rss-feed-toegevoegd/</link>
      <pubDate>Sat, 30 May 2015 17:54:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/5-rss-feed-toegevoegd/</guid>
      <description>Vanaf nu is het mogelijk om je te abonneren op de RSS feed van deze blog. Makkelijk als je het gewend bent om je blogjes lezen met bijvoorbeeld Feedly. Klik rechtsboven op het RSS-icoon om de feed te openen of abonneer je op de url &lt;a href=&#34;https://barryvanveen.nl/rss&#34; &gt;barryvanveen.nl/rss&lt;/a&gt;.</description>
    </item>
    <item>
      <title>Je Laravel website deployen met 1 commando</title>
      <link>https://barryvanveen.nl/articles/3-je-laravel-website-deployen-met-1-commando/</link>
      <pubDate>Sat, 23 May 2015 16:30:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/3-je-laravel-website-deployen-met-1-commando/</guid>
      <description>Voor deze nieuwe blog wilde ik een script maken dat in 1 keer de nieuwste versie van mijn code uploadt naar mijn webserver. Dit heb ik gedaan door een nieuw commando aan Artisan &amp;ndash; de command-line interface van Laravel Framework &amp;ndash; toe te voegen.</description>
    </item>
    <item>
      <title>Automatisch inloggen bij Github en Bitbucket</title>
      <link>https://barryvanveen.nl/articles/2-automatisch-inloggen-bij-github-en-bitbucket/</link>
      <pubDate>Sat, 16 May 2015 12:00:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/2-automatisch-inloggen-bij-github-en-bitbucket/</guid>
      <description>Als je met de command-line van Git werkt dan moet je vaak je wachtwoord invoeren. Dat is op zich wel zo veilig, maar niet heel makkelijk. Gelukkig is er een oplossing: het instellen van SSH keys.</description>
    </item>
    <item>
      <title>Waarom deze blog?</title>
      <link>https://barryvanveen.nl/articles/1-waarom-deze-blog/</link>
      <pubDate>Sat, 09 May 2015 17:19:00 +0200</pubDate>
      <guid>https://barryvanveen.nl/articles/1-waarom-deze-blog/</guid>
      <description>Dit is mijn allereerste blogpost ooit. Ik wil dan ook beginnen met het beantwoorden van een paar vragen, zoals waarom ik begin aan een blog en waarover ik wil schrijven.</description>
    </item>
  </channel>
</rss>
