grrr.tech Open in urlscan Pro
3.160.150.45  Public Scan

Submitted URL: http://grrr.tech/
Effective URL: https://grrr.tech/
Submission: On May 20 via api from US — Scanned from CH

Form analysis 0 forms found in the DOM

Text Content

GRRR text logo
 * Articles
 * Inspiration
 * About us
 * Open Source
 * Jobs

Light Dark Toggle dark mode


GRRR'S TECH BLOG

Hey! We're GRRR, a Creative Digital Agency based in Amsterdam. Welcome to our
tech blog, where we share our thoughts and experiments.


FILTER BY CATEGORY:

 * All
 * Accessibility
 * Back-end
 * CSS
 * DevOps
 * Front-end
 * React
 * Tooling
 * UX

 * April 29, 2024
   
   
   CASE STUDY: ACCESSIBLE AND RELIABLE TECH FOR SCHOOLWIJZER
   
   Crafting accessible, high-performing websites: see our approach in action
   with Schoolwijzer.
   
   8 min read
 * March 27, 2024
   
   
   PERMISSION PROBLEM WITH EMBEDDING FEATURED MEDIA VIA THE WORDPRESS REST API
   
   How to solve the rest_forbidden error.
   
   6 min read
 * February 26, 2024
   
   
   HOW TO USE MAP, FILTER, AND REDUCE IN JAVASCRIPT
   
   A tutorial about the three most important functions in JavaScript.
   
   13 min read
 * January 30, 2024
   
   
   GET NOTIFIED WHEN LOCK FILES CHANGE
   
   Let Git tell you when you need to install dependencies.
   
   5 min read
 * December 18, 2023
   
   
   BLURRING THE LINES BETWEEN FRONT-END AND BACK-END DEVELOPMENT
   
   An end-of-year reflection on our development team.
   
   8 min read
 * November 30, 2023
   
   
   HOW TO IMPORT BIG SPREADSHEETS
   
   Tips for importing big spreadsheets into a MySQL database.
   
   8 min read
 * October 11, 2023
   
   
   EMBRACING ACCESSIBILITY AS A TEAM EFFORT
   
   Let's shift to the left.
   
   8 min read
 * September 27, 2023
   
   
   USING NEW PSEUDO-CLASS SELECTORS IN 2023
   
   Some thoughts on the :is() :has() and :where() pseudo-class selectors
   
   7 min read
 * August 28, 2023
   
   
   TRANSFORM WORDPRESS INTO A HEADLESS CMS
   
   Follow our advice to ensure a smooth headless experience with WordPress
   
   10 min read
 * July 31, 2023
   
   
   AUTOMATICALLY SORT IMPORT STATEMENTS WITH PRETTIER
   
   Reduce even more repetitive tasks in your workflow.
   
   7 min read
 * July 10, 2023
   
   
   OPENIDCONNECT PROVIDER'S HTTPS CERTIFICATE DOESN'T MATCH CONFIGURED
   THUMBPRINT
   
   A solution for this error
   
   4 min read
 * June 15, 2023
   
   
   TIPS 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 read
 * May 23, 2023
   
   
   HOW TO USE PROXY OBJECTS IN TYPESCRIPT
   
   What are Proxy objects and how can you use them with TypeScript?
   
   9 min read
 * April 25, 2023
   
   
   CONTAINER 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 read
 * March 30, 2023
   
   
   5 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 read
 * February 23, 2023
   
   
   DOMAIN REDIRECTS FOR CLOUDFRONT
   
   How to redirect domains with CloudFront Functions.
   
   5 min read
 * February 7, 2023
   
   
   USING THE NEXT.JS OUT FOLDER IN NETLIFY CAUSES AN ERROR FROM TODAY ON
   
   Here's how to fix it.
   
   3 min read
 * January 31, 2023
   
   
   REDUCE STATIC PAGE SIZE WITH SMART NEXT.JS COMPONENTS
   
   Improve performance by trimming your Next.js payload.
   
   8 min read
 * December 20, 2022
   
   
   SLACK MESSAGES FROM GITHUB WORKFLOW
   
   How to send a message to Slack without dependencies.
   
   7 min read
 * November 30, 2022
   
   
   MELKWEG.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 read
 * November 6, 2022
   
   
   CHANGE 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 read
 * October 20, 2022
   
   
   HOW TO MANAGE STAGING AND PRODUCTION ENVIRONMENTS IN NETLIFY
   
   Organise your environments like a pro.
   
   7 min read
 * September 26, 2022
   
   
   EVENT.PREVENTDEFAULT DOES NOT ALWAYS PREVENT WHAT YOU MIGHT EXPECT
   
   The weird world of event.preventDefault and React checkboxes
   
   6 min read
 * August 24, 2022
   
   
   THE SMALLEST PHP VERSION SWITCHER
   
   A really quick PHP version switcher built with Homebrew
   
   4 min read
 * August 9, 2022
   
   
   DEPLOYING 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.
   
   8 min read
 * July 25, 2022
   
   
   HOW GRRR USES GITHUB ACTIONS
   
   GRRR moved to GitHub Actions, and we happily shed light on how we arrange
   workflows.
   
   8 min read
 * June 24, 2022
   
   
   DUTCH PHP CONFERENCE
   
   Conference report: our notes and takeaways from the Dutch PHP Conference.
   
   6 min read
 * June 10, 2022
   
   
   CSS DAY — DAY 2
   
   Conference report: our notes and takeaways from our visit to CSS day.
   
   20 min read
 * June 9, 2022
   
   
   CSS DAY — DAY 1
   
   Conference report: our notes and takeaways from our visit to CSS day.
   
   13 min read
 * May 2, 2022
   
   
   STATICALLY 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 read
 * April 25, 2022
   
   
   HOW 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 read
 * March 31, 2022
   
   
   WHY USE REFS IN REACT
   
   You can use the querySelector in React but it's better to use refs. Why is
   this?
   
   7 min read
 * February 27, 2022
   
   
   HOW 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 read
 * January 19, 2022
   
   
   USING 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 read
 * December 7, 2021
   
   
   GITHUB ACTIONS AND NO AWS CREDENTIALS
   
   GitHub Actions recently made OpenID support available. This article explains
   how to use it.
   
   6 min read
 * November 29, 2021
   
   
   MAKING 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 read
 * November 1, 2021
   
   
   4 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 read
 * October 6, 2021
   
   
   PERFORMING 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 read
 * September 20, 2021
   
   
   HOW 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 read
 * July 30, 2021
   
   
   HOW 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 read
 * February 2, 2021
   
   
   VALIDATING 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 read
 * December 11, 2020
   
   
   EMBEDDING CONTENT THROUGH AN IFRAME
   
   What are the risks when you embed content through an iframe.
   
   6 min read
 * June 5, 2020
   
   
   HOW TO CREATE A WHATSAPP BUTTON?
   
   An overview of WhatsApp button implementations.
   
   4 min read
 * May 20, 2020
   
   
   WE'RE HIRING!
   
   GRRR is looking for a front-end developer.
   
   3 min read
 * March 17, 2020
   
   
   PROGRAMMATICALLY SWITCH DARK MODE IN MACOS
   
   An epic weapon in the epic battle between light and dark!
   
   6 min read
 * February 13, 2020
   
   
   ADD 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 read
 * January 23, 2020
   
   
   HOW TO ADD DARK MODE STYLING TO YOUR WEBSITE
   
   Add Dark Mode styling with a new CSS feature.
   
   5 min read
 * January 8, 2020
   
   
   SIMPLY 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 read
 * December 3, 2019
   
   
   CASE STUDY: SERVERLESS ARCHITECTURE FOR THE OCEAN CLEANUP
   
   Migrating from a dynamic monolithic CMS approach to a statically hosted
   WordPress site with microservices.
   
   10 min read
 * October 10, 2019
   
   
   GUIDELINES FOR DUTCH GOVERNMENTAL WEBSITES
   
   Make your governmental website comply with the Dutch guidelines.
   
   10 min read
 * September 25, 2019
   
   
   OUR WORDPRESS PRO SETUP
   
   A WordPress boilerplate, including dependency management, multi-environment
   deployment strategies and front-end tooling.
   
   9 min read
 * June 17, 2019
   
   
   REDIRECT WWW TO NON-WWW USING CLOUDFRONT AND LAMBDA@EDGE
   
   Redirect your static site to a canonical hostname using Lambda@Edge.
   
   8 min read
 * May 25, 2019
   
   
   HOW TO USE JAVASCRIPT GETTERS AND SETTERS
   
   A quick primer on JavaScript getters and setters.
   
   6 min read
 * May 8, 2019
   
   
   SPEEDUP TRAVIS CI FOR PHP APPS
   
   Speed is vital when using CI. These are some tips to make Travis CI not the
   bottleneck.
   
   4 min read
 * April 17, 2019
   
   
   TRAP KEYBOARD FOCUS IN AN ACCESSIBLE ELEMENT
   
   A small function to trap keyboard tab focus with JavaScript when building
   accessible modals or dialogs.
   
   5 min read
 * March 29, 2019
   
   
   CREATE A DOM NODE FROM AN HTML STRING
   
   A comparison of different methods, including security risks, HTML
   restrictions and a performance benchmark.
   
   6 min read
 * March 13, 2019
   
   
   INTRODUCING HANSEL, RUNNER OF HANDLERS AND ENHANCERS
   
   Hansel packages the way we bind behavior to a page.
   
   6 min read
 * February 22, 2019
   
   
   A SASS SNIPPET FOR HANDLING SAME-COLOR BLOCK MARGINS
   
   A simple solution for handling margins for content blocks with the same
   background color.
   
   5 min read
 * February 18, 2019
   
   
   WHY YOU SHOULDN'T OPEN LINKS IN NEW TABS
   
   Why using target="_blank" can cause accessibility issues.
   
   5 min read
 * November 11, 2018
   
   
   NPX IS COOL... BUT WHY NOT USE A RELATIVE $PATH?
   
   Use a flexible $PATH to resolve executables in any language.
   
   5 min read
 * July 29, 2018
   
   
   CHALLENGES WITH DOING RECURSION IN PHP
   
   Struggles and successes.
   
   9 min read
 * June 5, 2018
   
   
   THE CURRENT STATE OF <DETAILS>
   
   What is and isn't working in which browser, and how you can fix it.
   
   5 min read
 * May 31, 2018
   
   
   AUTO-DEPLOY WITH TRAVIS CI
   
   An auto-deploy strategy using Travis CI and Git tags.
   
   6 min read
 * May 4, 2018
   
   
   INSTALLING HOMEBREW PHP EXTENSIONS WITH PECL
   
   A guide to help you install PHP extensions using Homebrew PHP versions from
   homebrew/core.
   
   7 min read
 * April 30, 2018
   
   
   CODING FOR ACCESSIBILITY: AN INTRODUCTION
   
   7 Easy ways to make your website more accessible.
   
   7 min read
 * July 14, 2017
   
   
   GIT FEATURE BRANCHES
   
   The way we work with git feature branches.
   
   10 min read

Interested in our work? Visit our regular website or check us out on GitHub and
Twitter.