Ryan’s Tech Blog

Hi, I’m Ryan. I’ve been working in technology for over 10 years, especially within websites, Microsoft 365, and CRM systems. On this site I try to document some of the kinds of work I’ve done, whether within a full-time job, freelance work, or as a personal side project.

PHP: XDebug in VS Code

XDebug is a helpful tool when debugging code. XDebug is a step debugging tools that helps you inspect functionality of PHP code in a cleaner way than regularly writing dump/log statements.

I will not get into details here about setting up XDebug on a server, but you can find that with some Internet searching. Instead, this post is about how to use XDebug within .

Continue Reading PHP: XDebug in VS Code

Free as in Cats

I once heard the phrase that most open source projects (the context was specifically Drupal) was not free as in beer but was free as in cats.

Cat in the office chair
Cats are cute, if sometimes disruptive of work
Continue Reading Free as in Cats

GitHub and GitLab: Diagrams in Markdown

recently announced a great new feature that allows for generating diagrams within markdown. I tested this out and it also works in .

If you’re writing a lot of documentation in markdown, as you probably are if you’re using GitHub or GitLab, this can be really nice when you need diagrams, like mapping out your CI/CD system or server maps. You can build diagrams much faster than putting something together in Photoshop or some other diagramming tool that exports an image which you then need to upload.

Continue Reading GitHub and GitLab: Diagrams in Markdown

Drupal: Ckeditor Abbreviation

One of the tags that many are not aware of is the tag. This is a useful tag to help provide explanations of abbreviations within the body of the text. If you’re reading along and see an abbreviation for WP and you know what it is, you can keep reading. If you’re reading along and see an abbreviation and don’t know what it is, you can hover over it and it will show you an explanation. It’s a win-win, providing an explanation for those that need it without needing to add more text in the main body which may come across as over-explaining for those that don’t need it.

Continue Reading Drupal: Ckeditor Abbreviation

Microsoft Teams: Guest Notifications

Microsoft Teams has the great ability to invite users who are in other organizations to join your Teams in order to collaborate, assuming your IT admin has not turned that feature off. Guests in the Team can’t do everything that an internal member can do, but it’s pretty close, so it’s a strong environment for connecting with partners.

But there is one pretty significant catch to be aware of: notifications.

Continue Reading Microsoft Teams: Guest Notifications

Drupal: Sync Configuration

Having a workflow that keeps your code in sync across development, staging, and production servers – like in the series of GitLab DevOps posts I’ve been sharing recently – is important. But that doesn’t synchronize the database, which contains two major subcategories: configuration and content. It also doesn’t synchronize user-uploaded files, but that’s a subject for a different post.

Fortunately, Drupal 8 introduced a new system for syncing configuration across copies of the site.

Continue Reading Drupal: Sync Configuration

Drupal: Fluid UI

In doing research on tools that could be incorporated into a Drupal site, a co-worker recommended Fluid UI. This is not the same Fluid Framework used by Microsoft as the backbone of the new Microsoft Loop tool, or the Fluent UI Microsoft design language. There’s lots of use of Fluid and Fluent out there.

This one is an open source group out of Toronto focused on web accessibility, and they offer their tools in a few different formats. One is as a convenient Drupal module. I installed it on a dev site and took a look at what it offered.

Continue Reading Drupal: Fluid UI

GitLab DevOps: GitLab Runner

This relates to the GitLab DevOps process. can automate deployment to a server, meaning that you do not have to log in to that server separately to pull the changes and carry out any other needed steps for the installation.

But there’s a catch: if your server is not publicly-accessible, such as behind a VPN, which is pretty common for development and staging servers, you’ll need to install a runner. This is because GitLab cannot initialize a connection to a hidden server, so the server will have to start the connection instead.

Continue Reading GitLab DevOps: GitLab Runner

GitLab DevOps: PHP Lint

Here’s another piece in a GitLab DevOps setting: when code is committed to , I want to run a linter on the custom code folders of Drupal (modules and themes) to make sure there aren’t any glaring syntax bugs that snuck through. My personal favourite error is when a “:wq” gets inserted into a file trying to exit vim, after doing all the testing.

Continue Reading GitLab DevOps: PHP Lint