Merge existing codebases into a monorepo
Do you have multiple repositories that you want to merge into one, without losing the Git history?
5 min readHow to set up a useful README file for your Github project
Learn how to create an effective README file for your GitHub project with tips on structure and content
7 min readCase Study: Accessible and reliable tech for Schoolwijzer
Crafting accessible, high-performing websites: see our approach in action with Schoolwijzer.
8 min readPermission problem with embedding featured media via the WordPress REST API
How to solve the rest_forbidden error.
6 min readHow to use map, filter, and reduce in JavaScript
A tutorial about the three most important functions in JavaScript.
13 min readGet notified when lock files change
Let Git tell you when you need to install dependencies.
5 min readBlurring the lines between front-end and back-end development
An end-of-year reflection on our development team.
8 min readHow to import big spreadsheets
Tips for importing big spreadsheets into a MySQL database.
8 min readEmbracing accessibility as a team effort
Let's shift to the left.
8 min readUsing new pseudo-class selectors in 2023
Some thoughts on the :is() :has() and :where() pseudo-class selectors
7 min readTransform WordPress into a headless CMS
Follow our advice to ensure a smooth headless experience with WordPress
10 min readAutomatically sort import statements with Prettier
Reduce even more repetitive tasks in your workflow.
7 min readOpenIDConnect provider's HTTPS certificate doesn't match configured thumbprint
A solution for this error
4 min readTips to make your codebase future developer friendly
After frustrating experiences with codebases, I created this list to, hopefully, prevent that frustration in the future.
8 min readHow to use Proxy objects in TypeScript
What are Proxy objects and how can you use them with TypeScript?
9 min readContainer Queries make the most important lesson I've ever learned, a reality
“Build each component so that it can be re-used everywhere”
6 min read5 accessibility mistakes you might not think about
Learning about accessibility is something we continue to do each day. Let's take a deep dive and explore 5 lesser known issues.
8 min readDomain redirects for CloudFront
How to redirect domains with CloudFront Functions.
5 min readUsing the Next.js out folder in Netlify causes an error from today on
Here's how to fix it.
3 min readReduce static page size with smart Next.js components
Improve performance by trimming your Next.js payload.
8 min readSlack messages from GitHub workflow
How to send a message to Slack without dependencies.
7 min readMelkweg.nl - Serving over 30,000 web pages blazingly fast.
An insight into how we made the new website for the Melkweg fast and snappy.
8 min readChange cache driver for Laravel Task Scheduler onOneServer
With onOneServer you can prevent jobs from executing on multiple workers. But how to use another cache driver?
3 min readHow to manage staging and production environments in Netlify
Organise your environments like a pro.
7 min readevent.preventDefault does not always prevent what you might expect
The weird world of event.preventDefault and React checkboxes
6 min readThe smallest PHP version switcher
A really quick PHP version switcher built with Homebrew
4 min readDeploying your PHP application to an Amazon Auto Scaling Group with Deployer
This article tells you how to deploy your PHP application to an Amazon ASG, using Deployer.
9 min readHow GRRR uses GitHub Actions
GRRR moved to GitHub Actions, and we happily shed light on how we arrange workflows.
8 min readDutch PHP Conference
Conference report: our notes and takeaways from the Dutch PHP Conference.
6 min readCSS DAY — day 2
Conference report: our notes and takeaways from our visit to CSS day.
20 min readCSS DAY — day 1
Conference report: our notes and takeaways from our visit to CSS day.
13 min readStatically analyze your Laravel 9 application with PHPStan
This article shows how to enrich your Laravel application with type hints so you can reap the benefits of static analysis.
12 min readHow to set CORS headers on your S3 bucket
CORS rules can be finicky. This post is a quick reminder of how to open up your bucket using CORS.
5 min readWhy use refs in React
You can use the querySelector in React but it's better to use refs. Why is this?
7 min readHow to rename your "master" branch to "main"
In the spirit of inclusive language, we happily follow the trend of moving towards the name "main" instead of "master" for our default Git branches.
6 min readUsing media queries to improve accessibility
Sometimes you're faced with designs that are not optimal in terms of accessibility. Media queries to the rescue!
5 min readGitHub Actions and no AWS credentials
GitHub Actions recently made OpenID support available. This article explains how to use it.
6 min readMaking TypeScript's Partial type work for nested objects
The Partial type is a great idea, but doesn't work for nested objects. This article will show you how to fix that.
8 min read4 reasons to not use a carousel
Why do we think carousels are bad? Let's go over some serious considerations to be aware of when adding a carousel to your website.
8 min readPerforming A/B tests on static websites using Cloudfront and Lambda@Edge
How do you perform A/B experiments when your site is static?
9 min readHow to use OpenVPN in GitHub Action workflows?
We love GitHub Actions and a client requires a VPN connection to deploy. Let's dive in!
7 min readHow to ensure only a single model has a certain value in Laravel?
What if only a single record in your database is allowed to have a certain value for a given property?
6 min readValidating a multi-column unique key in Laravel Nova
How do you incorporate the rules for a unique key consisting of multiple columns in Laravel Nova?
6 min readEmbedding content through an iframe
What are the risks when you embed content through an iframe.
6 min readHow to create a WhatsApp button?
An overview of WhatsApp button implementations.
4 min readWe're hiring!
GRRR is looking for a front-end developer.
3 min readProgrammatically switch dark mode in MacOS
An epic weapon in the epic battle between light and dark!
6 min readAdd locales to your Alpine Linux Docker image
Alpine doesn't support locales out of the box, with musl-locales it's possible to add locales.
5 min readHow to add Dark Mode styling to your website
Add Dark Mode styling with a new CSS feature.
5 min readSimply Static Deploy: static site generator and deploy plugin for WordPress
Generate a static version of your WordPress site and deploy it to an AWS S3 bucket.
8 min readCase Study: Serverless architecture for The Ocean Cleanup
Migrating from a dynamic monolithic CMS approach to a statically hosted WordPress site with microservices.
10 min readGuidelines for Dutch governmental websites
Make your governmental website comply with the Dutch guidelines.
10 min readOur WordPress Pro setup
A WordPress boilerplate, including dependency management, multi-environment deployment strategies and front-end tooling.
9 min readRedirect www to non-www using CloudFront and Lambda@Edge
Redirect your static site to a canonical hostname using Lambda@Edge.
8 min readHow to use JavaScript getters and setters
A quick primer on JavaScript getters and setters.
6 min readSpeedup Travis CI for PHP apps
Speed is vital when using CI. These are some tips to make Travis CI not the bottleneck.
4 min readTrap keyboard focus in an accessible element
A small function to trap keyboard tab focus with JavaScript when building accessible modals or dialogs.
5 min readCreate a DOM node from an HTML string
A comparison of different methods, including security risks, HTML restrictions and a performance benchmark.
6 min readIntroducing Hansel, runner of handlers and enhancers
Hansel packages the way we bind behavior to a page.
6 min readA Sass snippet for handling same-color block margins
A simple solution for handling margins for content blocks with the same background color.
5 min readWhy you shouldn't open links in new tabs
Why using target="_blank" can cause accessibility issues.
5 min readNpx is cool... but why not use a relative $PATH?
Use a flexible $PATH to resolve executables in any language.
5 min readChallenges with doing recursion in PHP
Struggles and successes.
9 min readThe current state of <details>
What is and isn't working in which browser, and how you can fix it.
5 min readAuto-deploy with Travis CI
An auto-deploy strategy using Travis CI and Git tags.
6 min readInstalling Homebrew PHP extensions with PECL
A guide to help you install PHP extensions using Homebrew PHP versions from homebrew/core.
7 min readCoding for accessibility: an introduction
7 Easy ways to make your website more accessible.
7 min readGit feature branches
The way we work with git feature branches.
10 min read