Thoughts on the web, software and everything in between.

2026

4 articles

Add fields to the Drupal Canvas Page entity

Been going deep on a handful of projects this summer, wanted to take a moment to contribute a Drupal module that solved a problem for us called Canvas Fields - the ability to assign standard fields to Canvas Page entities. Text fields, reference fields, list fields. Why?

2025

14 articles

2025 Wrapped

Welcome to my Spotify 2025 Wrapped! I don't have Spotify, so this is my year end wrap from my point of view. Like previous years, I didn't get to write as much as I wanted to, but I've also been juggling a lot more than before.

Using computed fields in Drupal 11 and Views

Every so often I run into something in Drupal that reminds me why I still enjoy working with it after all these years. Recently, while working with the Group module, I needed to display a few pieces of dynamic information: the number of members in each group and a handful of user thumbnails.

Life happened

Whoever gave the 60 day prognosis was right on the mark, unfortunately. It's always a shock, followed by a sense of relief that someone is no longer suffering the hardships of one of the worst kinds of cancer.We're seeing it happen with someone else too, sadly.

Putting Hoi to use

In my last post I mentioned releasing a small project in Rust called Hoi, a task runner meant for collaboration or personal use. Since then I was able to add a few more features, nearing a point which I consider 'feature complete':

Hoi, a command line task runner built with Rust

During covid lockdowns I had several projects in my spare time to keep me busy. One of them was teaching myself to learn how to read sheet music. Another was building an LCD screen marquee of data powered by a Raspberry Pi 3.

Connecting to a Fortinet VPN on Fedora 41, 42, 43, 44, or 45

Forticlient seems to have a lot of issues working correctly on Fedora and/or SAML required setups (where you complete the auth in an external browser). The best I can get from the error logs is that the connection was terminated. Fortinets support of Linux is not the best.

2024

9 articles

Things no one tells you when buying a home

It has been perhaps the 3 busiest months of my life between bidding on homes, closing, and moving. Despite my best efforts and planning, there was a lot more work and logistics than I had anticipated.

Will be back after Labor Day!

I'm on the move again!After months of searching, we've finally found our dream home. I will have a lot to do between now and the closing date, right after which I need to begin work on the "Drupal 11 Development Cookbook" with Matt.

Carpe Diem

Eat at a local restaurant tonight. Get the cream sauce. Have a cold pint at 4 o’clock in a mostly empty bar. Go somewhere you’ve never been. Listen to someone you think may have nothing in common with you. Order the steak rare. Eat an oyster. Have a negroni. Have two.

2024 Goals

It feels like the post I made for 2023 goals was done only a little while ago - but here we are again at the start of a new year. I'll keep it short this year, things like reading and exercise are table stakes. Those are 'must do' things that are not really goals anymore - I just do it.

2023 Year in Review

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.

2023

15 articles

Drupalcon Pittsburgh 2023 Recap

It was quite a week spent in Pittsburgh earlier this month for Drupalcon! We are beginning to rollout our thoughts and experiences from members of the team who attended, what we saw, and things that piqued our interest!

2023 Goals

2022 went by in a complete flash. I had a never ending flurry of activity in work and life that kept things moving pretty fast for me. I launched several new projects, developed many custom integrations and solutions, took on new clients who's vendors gave up on them.

2022

9 articles

Craft

In line with the previous post, I have been thinking a lot about my career trajectory and how it is still ever rising. I've been doing what I do now for nearly 25 years.

Turning 40

I've been hitting several milestones these last few years. Next week I hit another one, I will turn 40.

2022 Goals

It seems like the time flies anymore these days - now it's 2022. As is personal tradition, I start the year off by making a goal list.

2021

17 articles

Top Five Articles

I've been quiet for a while. Not because I am short on ideas or have nothing to say, I've been moving several initiatives at work and home forward. Spinning many plates, making sure none fall.

Linux: Five Months In

Its been roughly five months since I decided to make the leap from Mac OS to Linux. I am happy to report I have only had to go back to the Mac a couple of times to retrieve some files.

I've Quit Social Media

This will be a pretty short post - I've quit social media. I actually quit a majority of them many years ago. Last spring I locked my Twitter and never looked back. That was something I said I was going to do for a while, and then finally did. I've had enough.

2020

12 articles

2020 Reading List

This year has afforded me a lot of time to pick up another old habit: reading. In previous years with a much busier city lifestyle, my level of reading took a backseat to most things, just like running.

Drupal 9 Upgrade!

My site is now running on Drupal 9! The upgrade was pretty straightforward with only a few things to correct in some custom modules so they could be read and registered in Drupal 9. On deck are a half dozen client projects to bring from 8.6+ to Drupal 9.

Creating a Custom Token in Drupal 8

Tokens represent an inline replacement when evaluating or rendering text. In Drupal, the Token module goes all the way back to Drupal 4.x and still exists today for Drupal 8 (and soon, Drupal 9).

2019

10 articles

Thoughtfully Updating Legacy Code

Earlier this month, a round of updates were made to a client site and deployed to production. A critical bug came in saying that donut charts in visualizations were now showing the wrong numbers and that this was a top priority since it was visible to the public.

No Comment.

Upon the relaunch of my site, I decided to go with no comments. It is not a mistake that they are not here.

2018

4 articles

First Steps with Erlang

I have done a lot of research this year on what I believe will be some of the next great generation of tools and languages. I strongly believe PHP is on a fantastic road with 7.x, but there is another language that has been on my radar for quite some time, Elixir.

Adding Tests to Legacy Drupal 7 Sites

Most developers at some point or another will inevitably need to add custom code to a site. In Drupal, this could be anything from extending core functionality, altering forms, or creating entirely new functionality.

2017

18 articles

Make Seemingly Difficult Tasks Trivial

Earlier today there was a ping in Slack for assistance. A coworker needed to update 140 XML files with a new element, and the element value will be populated from an existing element in the node.

Dependency Inject PHP Classes into Drupal

In my latest adventures in Drupal 8, I had to build out a multisite search with Solr. While I will touch on that later, I wanted to call out something I learned today, which is how to inject dependencies to your Drupal class with non-native Drupal code. What do I mean by that?

Mass Updating Drupal Fields with MySQL Stored Procedure

I was doing an onsite with a client earlier this week, assisting in a demo of the Drupal 8 solution we were building for their team. During the meeting, it was expressed that they wanted all instances of a text editor to have the same buttons and capabilities.

Quick Drupal 8 Theming Tips

If you are theming an entity (in this case, node) and you want to display the created or changed date in a different format, you can use the following to do just that.

New Year

I tend to do these things at the start of every year. Every year that I make them, they tend to get larger. Sometimes you make small goals, which is okay, but are you really challenging yourself by going after low hanging fruit? I don’t think so.

2016

6 articles

Tmux, Vim, Zsh, oh my (zsh)!

I decided to give myself a little challenge at the end of this year. After Thanksgiving I decided I wanted to try something different for a change and start getting better acquainted with the shell, throw my hat in the air and start learning Vim.

Adding Composer Packages to Drupal 8

Adding Composer packages to Drupal 8 is pretty easy. There is a module called Composer Manager that can be used to add packages that modules require, but there are instances where you just need a package (and no need to create a module).

2015

4 articles

Fixing a Segfault in Drupal

If you use Gulp or Grunt in your projects, there is a chance you can may inadvertently trigger a segmentation fault on the server. This is a very unusual error to see in Drupal, and it can be hard to track back what actually caused it.

Why I Quit My Job

There comes a point in every programmers career where they must make the decision to change up their career or face burnout, skill rot, boredom, and fatigue. I call them the four horsemen of programming, and I faced them all.

Using Drush Automatically with Grunt

Ever find yourself working on a Drupal theme and unable to figure out why templates aren’t recognized, CSS isn’t changing, or JS is still acting funky only to realize you haven’t done something as simple as clear cache? We all have. Fortunately, we can do this automatically via Grunt.

Setting up PHPDocumentor in PHPStorm 8

PHPStorm is a fantastic IDE for PHP. I’ve been a fan of JetBrains’ products for quite some time. Whether it’s RubyMine, WebStorm, PHPStorm, or PyCharm, their IDEs are one of the most developer friendly tools I have ever come across.

2014

11 articles

Media Migration Tip in Drupal

If you’re doing a migration of media files, you most likely will be working with a list of URLs. Other times, you will have a local file system from which to pull in media. When working with just a list of URLs though, you’re somewhat working with a ‘blind’ import.

Using Maps in Sass 3.3

Lately I have been exploring whats coming down the pipe for new versions of SASS. Version 3.3.x brings in a lot of new or improved features that, as a programmer, are very cool. I’ve enjoyed using SASS as a means of styling for quite some time now.

Web scraping magic with Ruby and Nokogiri

Every now and then you’re going to have one of those projects that will need to be migrated from one platform to another. If you’re lucky, it’s a system like Drupal that has an excellent Migration framework.

Internet Explorer console.log Woes

There really aren’t many platforms or technologies out there that a developer dreads more than Internet Explorer. Nothing out there has caused more wasted hours on a project than possibly reddit or an aging Windows installation.