<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>drupal</title><description/><link>https://kevinquillen.com</link><language>en</language><item><title>Migrating from Drupal to Astro on Cloudflare Pages</title><link>https://kevinquillen.com/migrating-from-drupal-to-astro-on-cloudflare-pages</link><guid isPermaLink="true">https://kevinquillen.com/migrating-from-drupal-to-astro-on-cloudflare-pages</guid><description>&lt;p&gt;I recently moved my personal site from Drupal to Astro on Cloudflare Pages. The decision was not driven by a technical problem or limitation with Drupal. It came down to how I want to spend my limited time and budget.&lt;/p&gt;</description><pubDate>Thu, 01 Oct 2026 12:53:18 GMT</pubDate><dc:creator>Kevin</dc:creator></item><item><title>Testing htaccess rules in VS Code or JetBrains IDEs</title><link>https://kevinquillen.com/testing-htaccess-rules-vs-code-or-jetbrains-ides</link><guid isPermaLink="false">402 at https://kevinquillen.com</guid><description>
&lt;span property=&quot;schema:name&quot;&gt;Testing htaccess rules in VS Code or JetBrains IDEs&lt;/span&gt;

            &lt;div property=&quot;schema:text&quot; class=&quot;text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item&quot;&gt;&lt;p&gt;In my last post I alluded to some software projects I was working on, and in the nick of time I have two ready to share before we enter 2026.&lt;/p&gt;&lt;p&gt;I have published and released plugins for VS Code and JetBrains (PHPStorm, WebStorm, Intellij etc) that help in testing htaccess rules so you don&apos;t have to wait until its in the cloud to see the result. The plugins were inspired by the &lt;a href=&quot;https://htaccess.madewithlove.com/&quot;&gt;htaccess madewithlove&lt;/a&gt; website that I have literally used for years and always wished existed within my editors - now it is possible.&lt;/p&gt;&lt;/div&gt;
      
&lt;span rel=&quot;schema:author&quot;&gt;&lt;span lang about=&quot;https://kevinquillen.com/user/1&quot; typeof=&quot;schema:Person&quot; property=&quot;schema:name&quot; datatype&gt;Kevin&lt;/span&gt;&lt;/span&gt;

&lt;span property=&quot;schema:dateCreated&quot; content=&quot;2025-12-31T13:56:40+00:00&quot;&gt;&lt;time datetime=&quot;2025-12-31T08:56:40-05:00&quot; title=&quot;Wednesday, December 31, 2025 - 08:56&quot;&gt;December 31st, 2025&lt;/time&gt;
&lt;/span&gt;
</description><pubDate>Wed, 31 Dec 2025 13:56:40 GMT</pubDate><dc:creator>Kevin</dc:creator></item><item><title>Three years of automated Drupal core updates</title><link>https://kevinquillen.com/three-years-automated-drupal-core-updates</link><guid isPermaLink="false">389 at https://kevinquillen.com</guid><description>
&lt;span property=&quot;schema:name&quot;&gt;Three years of automated Drupal core updates&lt;/span&gt;

            &lt;div property=&quot;schema:text&quot; class=&quot;text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item&quot;&gt;&lt;p&gt;We&apos;re coming up on almost three years of automated Drupal core updates for my personal site.&amp;nbsp;&lt;/p&gt;&lt;/div&gt;
      
&lt;span rel=&quot;schema:author&quot;&gt;&lt;span lang about=&quot;https://kevinquillen.com/user/1&quot; typeof=&quot;schema:Person&quot; property=&quot;schema:name&quot; datatype&gt;Kevin&lt;/span&gt;&lt;/span&gt;

&lt;span property=&quot;schema:dateCreated&quot; content=&quot;2025-03-01T16:00:19+00:00&quot;&gt;&lt;time datetime=&quot;2025-03-01T11:00:19-05:00&quot; title=&quot;Saturday, March 1, 2025 - 11:00&quot;&gt;March 1st, 2025&lt;/time&gt;
&lt;/span&gt;
</description><pubDate>Sat, 01 Mar 2025 16:00:19 GMT</pubDate><dc:creator>Kevin</dc:creator></item><item><title>2023 Year in Review</title><link>https://kevinquillen.com/2023-year-review</link><guid isPermaLink="false">379 at https://kevinquillen.com</guid><description>
&lt;span property=&quot;schema:name&quot;&gt;2023 Year in Review&lt;/span&gt;

            &lt;div property=&quot;schema:text&quot; class=&quot;text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item&quot;&gt;&lt;p&gt;2023 was a white hot, fun, successful and non stop year for me. Perhaps one of the best in my life both personally and professionally. Hoping for (and working toward) that trend to continue into 2024 and beyond.&lt;/p&gt;&lt;/div&gt;
      
&lt;span rel=&quot;schema:author&quot;&gt;&lt;span lang about=&quot;https://kevinquillen.com/user/1&quot; typeof=&quot;schema:Person&quot; property=&quot;schema:name&quot; datatype&gt;Kevin&lt;/span&gt;&lt;/span&gt;

&lt;span property=&quot;schema:dateCreated&quot; content=&quot;2024-01-01T22:55:19+00:00&quot;&gt;&lt;time datetime=&quot;2024-01-01T17:55:19-05:00&quot; title=&quot;Monday, January 1, 2024 - 17:55&quot;&gt;January 1st, 2024&lt;/time&gt;
&lt;/span&gt;
</description><pubDate>Mon, 01 Jan 2024 22:55:19 GMT</pubDate><dc:creator>Kevin</dc:creator></item><item><title>Access Apache Solr admin over HTTPS in DDEV</title><link>https://kevinquillen.com/access-apache-solr-admin-over-https-ddev</link><guid isPermaLink="false">377 at https://kevinquillen.com</guid><description>
&lt;span property=&quot;schema:name&quot;&gt;Access Apache Solr admin over HTTPS in DDEV&lt;/span&gt;

            &lt;div property=&quot;schema:text&quot; class=&quot;text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item&quot;&gt;&lt;p&gt;I have seen some chatter lately about folks asking how to access the Solr admin interface over HTTPS instead of HTTP connection in DDEV. Enabling this is a simple change to the &lt;code&gt;docker-compose.solr.yaml&lt;/code&gt; file in the &lt;code&gt;.ddev&lt;/code&gt; directory.&lt;/p&gt;&lt;p&gt;In the file, make the following changes under the &lt;code&gt;environment&lt;/code&gt; section:&lt;/p&gt;&lt;/div&gt;
      
&lt;span rel=&quot;schema:author&quot;&gt;&lt;span lang about=&quot;https://kevinquillen.com/user/1&quot; typeof=&quot;schema:Person&quot; property=&quot;schema:name&quot; datatype&gt;Kevin&lt;/span&gt;&lt;/span&gt;

&lt;span property=&quot;schema:dateCreated&quot; content=&quot;2023-11-29T17:07:15+00:00&quot;&gt;&lt;time datetime=&quot;2023-11-29T12:07:15-05:00&quot; title=&quot;Wednesday, November 29, 2023 - 12:07&quot;&gt;November 29th, 2023&lt;/time&gt;
&lt;/span&gt;
</description><pubDate>Wed, 29 Nov 2023 17:07:15 GMT</pubDate><dc:creator>Kevin</dc:creator></item><item><title>Upcasting Custom Route Parameters in Drupal</title><link>https://kevinquillen.com/upcasting-custom-route-parameters-drupal</link><guid isPermaLink="false">376 at https://kevinquillen.com</guid><description>
&lt;span property=&quot;schema:name&quot;&gt;Upcasting Custom Route Parameters in Drupal&lt;/span&gt;

            &lt;div property=&quot;schema:text&quot; class=&quot;text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item&quot;&gt;&lt;p&gt;Thanks to &lt;a href=&quot;https://symfony.com/&quot;&gt;Symfony&lt;/a&gt;, Drupal has an incredibly robust routing system. What once used to be a chore in Drupal versions prior to 8 is now a breeze. Creating routes is super simple and parameter upcasting is usually automatic for known entities, like nodes, users, and taxonomy terms.&lt;/p&gt;&lt;p&gt;For example, take this route definition:&lt;/p&gt;&lt;/div&gt;
      
&lt;span rel=&quot;schema:author&quot;&gt;&lt;span lang about=&quot;https://kevinquillen.com/user/1&quot; typeof=&quot;schema:Person&quot; property=&quot;schema:name&quot; datatype&gt;Kevin&lt;/span&gt;&lt;/span&gt;

&lt;span property=&quot;schema:dateCreated&quot; content=&quot;2023-11-21T00:21:35+00:00&quot;&gt;&lt;time datetime=&quot;2023-11-20T19:21:35-05:00&quot; title=&quot;Monday, November 20, 2023 - 19:21&quot;&gt;November 20th, 2023&lt;/time&gt;
&lt;/span&gt;
</description><pubDate>Tue, 21 Nov 2023 00:21:35 GMT</pubDate><dc:creator>Kevin</dc:creator></item><item><title>Keep Secrets secure outside of configuration in Drupal with the Key module</title><link>https://kevinquillen.com/keep-secrets-secure-outside-configuration-drupal-key-module</link><guid isPermaLink="false">375 at https://kevinquillen.com</guid><description>
&lt;span property=&quot;schema:name&quot;&gt;Keep Secrets secure outside of configuration in Drupal with the Key module&lt;/span&gt;

            &lt;div property=&quot;schema:text&quot; class=&quot;text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item&quot;&gt;&lt;p&gt;Security is a paramount feature of any modern CMS. Drupal has a well defined authentication and &lt;a href=&quot;https://en.wikipedia.org/wiki/Role-based_access_control&quot;&gt;RBAC (role based access control)&lt;/a&gt; system limiting the scope of what users can or cannot do. Soon we will even have &lt;a href=&quot;https://www.drupal.org/project/drupal/issues/3371246&quot;&gt;PBAC (policy based access control)&lt;/a&gt; in Drupal core. But what about securing other things, like API tokens, SSL certificates or secrets that are used to authenticate with external services that enable features that require authorization?&lt;/p&gt;&lt;/div&gt;
      
&lt;span rel=&quot;schema:author&quot;&gt;&lt;span lang about=&quot;https://kevinquillen.com/user/1&quot; typeof=&quot;schema:Person&quot; property=&quot;schema:name&quot; datatype&gt;Kevin&lt;/span&gt;&lt;/span&gt;

&lt;span property=&quot;schema:dateCreated&quot; content=&quot;2023-11-09T18:29:47+00:00&quot;&gt;&lt;time datetime=&quot;2023-11-09T13:29:47-05:00&quot; title=&quot;Thursday, November 9, 2023 - 13:29&quot;&gt;November 9th, 2023&lt;/time&gt;
&lt;/span&gt;
</description><pubDate>Thu, 09 Nov 2023 18:29:47 GMT</pubDate><dc:creator>Kevin</dc:creator></item><item><title>DDEV being considered as the &quot;official&quot; Drupal development environment</title><link>https://kevinquillen.com/ddev-being-considered-official-drupal-development-environment</link><guid isPermaLink="false">374 at https://kevinquillen.com</guid><description>
&lt;span property=&quot;schema:name&quot;&gt;DDEV being considered as the &quot;official&quot; Drupal development environment&lt;/span&gt;

            &lt;div property=&quot;schema:text&quot; class=&quot;text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item&quot;&gt;&lt;p&gt;It&apos;s exciting to see some recent momentum into adopting &lt;a href=&quot;https://ddev.com/&quot;&gt;DDEV&lt;/a&gt; as the official local development environment for Drupal, supported by core and contrib community leaders.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.drupal.org/project/ideas/issues/2965681#comment-15278862&quot;&gt;https://www.drupal.org/project/ideas/issues/2965681#comment-15278862&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
      
&lt;span rel=&quot;schema:author&quot;&gt;&lt;span lang about=&quot;https://kevinquillen.com/user/1&quot; typeof=&quot;schema:Person&quot; property=&quot;schema:name&quot; datatype&gt;Kevin&lt;/span&gt;&lt;/span&gt;

&lt;span property=&quot;schema:dateCreated&quot; content=&quot;2023-10-29T15:27:50+00:00&quot;&gt;&lt;time datetime=&quot;2023-10-29T11:27:50-04:00&quot; title=&quot;Sunday, October 29, 2023 - 11:27&quot;&gt;October 29th, 2023&lt;/time&gt;
&lt;/span&gt;
</description><pubDate>Sun, 29 Oct 2023 15:27:50 GMT</pubDate><dc:creator>Kevin</dc:creator></item><item><title>Why We Merged Our Drupal Development Stack with DDEV</title><link>https://kevinquillen.com/why-we-merged-our-drupal-development-stack-ddev</link><guid isPermaLink="false">373 at https://kevinquillen.com</guid><description>
&lt;span property=&quot;schema:name&quot;&gt;Why We Merged Our Drupal Development Stack with DDEV&lt;/span&gt;

            &lt;div property=&quot;schema:text&quot; class=&quot;text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item&quot;&gt;&lt;p&gt;We recently spent a few days at Velir overhauling our local Docker development stack for Drupal merging our tool and workflow with DDEV for better project outcomes. DDEV is an amazing fit for modern Drupal development.&lt;/p&gt;&lt;p&gt;You can read more about it here:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.velir.com/ideas/2023/10/20/why-we-merged-our-drupal-development-stack-with-ddev&quot;&gt;https://www.velir.com/ideas/2023/10/20/why-we-merged-our-drupal-development-stack-with-ddev&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;
      
&lt;span rel=&quot;schema:author&quot;&gt;&lt;span lang about=&quot;https://kevinquillen.com/user/1&quot; typeof=&quot;schema:Person&quot; property=&quot;schema:name&quot; datatype&gt;Kevin&lt;/span&gt;&lt;/span&gt;

&lt;span property=&quot;schema:dateCreated&quot; content=&quot;2023-10-23T13:36:24+00:00&quot;&gt;&lt;time datetime=&quot;2023-10-23T09:36:24-04:00&quot; title=&quot;Monday, October 23, 2023 - 09:36&quot;&gt;October 23rd, 2023&lt;/time&gt;
&lt;/span&gt;
</description><pubDate>Mon, 23 Oct 2023 13:36:24 GMT</pubDate><dc:creator>Kevin</dc:creator></item><item><title>Using pre-commit and post-commit Git hooks in Drupal</title><link>https://kevinquillen.com/using-pre-commit-and-post-commit-git-hooks-drupal</link><guid isPermaLink="false">370 at https://kevinquillen.com</guid><description>
&lt;span property=&quot;schema:name&quot;&gt;Using pre-commit and post-commit Git hooks in Drupal&lt;/span&gt;

            &lt;div property=&quot;schema:text&quot; class=&quot;text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item&quot;&gt;&lt;p&gt;A few months back (sorry, its been a minute!) I detailed how you could &lt;a href=&quot;https://kevinquillen.com/setting-phpdocumentor-3-drupal-9-10&quot;&gt;set up PHPDocumentor&lt;/a&gt; to automatically generate documentation for your custom code and modules for Drupal. Another step you can take is automating this process for everyone in your projects by taking advantage of &lt;a href=&quot;https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks&quot;&gt;git hooks&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
      
&lt;span rel=&quot;schema:author&quot;&gt;&lt;span lang about=&quot;https://kevinquillen.com/user/1&quot; typeof=&quot;schema:Person&quot; property=&quot;schema:name&quot; datatype&gt;Kevin&lt;/span&gt;&lt;/span&gt;

&lt;span property=&quot;schema:dateCreated&quot; content=&quot;2023-10-15T15:00:00+00:00&quot;&gt;&lt;time datetime=&quot;2023-10-15T11:00:00-04:00&quot; title=&quot;Sunday, October 15, 2023 - 11:00&quot;&gt;October 15th, 2023&lt;/time&gt;
&lt;/span&gt;
</description><pubDate>Sun, 15 Oct 2023 15:00:00 GMT</pubDate><dc:creator>Kevin</dc:creator></item></channel></rss>