Making of a Christmas Card, 2022

I really had no idea what I was going to do about a Christmas card this year, or even if I wanted to do one. I have less free time this year, and I wasn’t really feeling it. There is a big part of me that wanted to do a jump cut to February.

Still, a tradition is a tradition, and so, at the beginning of the month, I was wracking my brain trying to come up with an idea. I didn’t get as frantic as I did in 2013 — I have more confidence in myself now that I’ll figure out something — but I was definitely feeling bereft of ideas.

And then, one day, I was looking at pictures with Mum, and for some reason, I decided to look at my iPhone pictures. And there is was, a picture I’d taken with the iPhone last year:

Ornament on Christmas tree
Ornament on tree, taken with my iPhone 12 Pro

Looking at it, it was nearly perfect. The only thing that bothered me was that you can see my hands holding the phone taking the picture. So I took it into Photoshop, and cut the hands and phone out of the picture, using Content Aware Fill, in several steps. I also bumped up the contrast a bit because printing on card stock tends to flatten the contrast a bit:

Christmas ornament, with the reflection retouched away
After retouching my reflected hands out of the red ball

Content Aware Fill is an amazing thing. It took me maybe two minutes to take care of it; I remember when it would have taken me hours.

Then it was time to lay out the card. Once again, I used two-up card stock, using Apple Pages to lay it out. Vertical cards are actually laid out sideways on the template, so I just grabbed one of my older cards, replaced the images in them, updated the date on the back, and then had to decide on typography.

This year, I decided on white Bodoni 75 with a thin outline and drop shadow for better separation, placed directly on top of the picture. I removed the borders on the text box this year. I’m pleased with the way it came out — the type fits well with the picture, and it looks almost like a book cover.

The hard part this year was what to say inside. This has not been a good year for me or the family, because of Mum’s situation. Do I use the space to send a Mum update? But I send cards to a variety of people, and it wouldn’t be appropriate for everyone I send cards to. And a single message isn’t appropriate for everyone. In the end, for the pre-printed part, I went with the classic “Merry Christmas & Best Wishes for a Happy New Year”.

And here’s the finished card:

Finished 2022 Card Cover - Picture of a Christmas tree ornament with Merry Christmas laid over it.
Finished 2022 cover

Merry Christmas, everyone.


Ten year ago, in “Season of Lights” , I wrote:

Personally, at least for now, I prefer the old-fashioned incandescent types. They seem warmer, with a better distribution of color. The reds and oranges are brighter, the blues less prominent. The newer LED lights seem to be too heavy on the blues. Their blue lamps are quite bright, and  their oranges and reds less bright in comparison. I suspect that this is something that will get fixed in time–the manufacturers need to make light strings where the warmer colors are brighter.

I think the manufacturers are finally starting to get it. I have a couple of strings on my tree that seem a little more well-balanced, and I’m noticing as I drive around town that there are more lights that have the characteristic LED deeply saturated blues, but also have decently bright reds and ambers. And for the first time, it feels to me like old fashioned incandescent lights seem reddish.

I’m also noticing that there are warmer “white” LEDs — the trees in front of the police station are covered with them, though they still seem just a touch greenish.

A few months back I took a ride on the new Green Line extension to Union Square. The new branch to Medford/Tufts opened last week, and I took a ride late Sunday afternoon. Like the Union Square branch, it starts off elevated headed out of Lechmere, then runs at ground level. Unlike the Union Square branch, it goes quite a distance. It’s sort of like the Riverside Line in that it’s fully grade separated with decent spacing between stops; unlike the Riverside Line, there are sound barriers along most of it, which kind of feels like you’re riding in a canyon. And boy, have the walls already been heavily tagged. There seemed a fairly decent ridership for late afternoon on a Sunday.

A Few Subtle Changes

“Upgrade to the latest version of PHP [the language that runs WordPress, the software that runs this site]”, the email from my hosting provider said. “Better performance” it said. “The version of PHP your site is running on is no longer supported, and won’t be getting security patches” it said. So, I figured, “Why not?” This site runs on WordPress, and I figured WordPress would be well tested on the latest PHP. So I clicked the button to upgrade the site… and the site died.

I followed the instructions for troubleshooting WordPress. I renamed the plugins folder, and the site came back partially– the page shell was visible, but not the content. Clearly, there was at least one plug-in that was incompatible. When I switched the site back to one of the stock themes, the text became visible again, and I knew there was a problem with the child theme.

A little trial and error located the errant plugins — there were two of them. One was the plug in that allowed me to reverse the normal order of posts within the Bonaire categories — I want the posts in those categories to be in chronological order. Fortunately, I found a different plugin to handle that.

The second one was the plugin that I used to display my tweets on the page. I’m less concerned about that now since Twitter has become such a shit-show. I removed that plug in entirely, and enabled the rest. The site continued to run.

Now it was time to find the problem with the child theme. I knew there was a file called “functions.php” that contained overrides to the stock theme. Looking at it, the most likely culprit was the “posted_on” function, that displays the date of the post. I’d customized it to show the date using a “calendar-like” appearance. So I commented it out, and the the site content came back. I knew I had the right culprit. At that point, the site was functional, though lacking the custom post dates. I needed to get supper and take care of some errands, so I left it in that state temporarily.

When I came back, I took a closer look at the problem. Unfortunately, I don’t know PHP, and don’t really know the WordPress internals, so I started by comparing the default version of the function with my customized function. Eventually, I realized I was calling esc_html( get_the_date(M) ), The esc_html function returns escaped HTML, while get_the_date() returns the post date. What I was trying to do was get the month part of the post date. Both of these functions are WordPress functions. The docs said that get_the_date() takes any PHP date formatting string. And then the word “string” jumped out at me. The M was unquoted. I quoted the parameter in each of the calls, and my content (and custom post date) came back. Huzzah!

Now it was time to clean up a few loose ends. I noticed the category display was gone, but in its place were two copies of the “tag cloud”. It turns out one was from a newer version of the theme, and one was from a legacy widget I’d added. I removed the legacy widget, and added a widget to display the post categories.

Then I took a second look — the categories were actually still present in the footer area. So I pulled it out of the side bar, and put the random post plugin back in its place. In the footer, I put a top posts plugin which would show my top posts if I get some traffic, but for now, is showing my most recent posts.

So there you have it. The site is back up and running. At the moment, it’s running in Christmas mode. I’ve made some tweaks to my plugins and sidebar widgets that most people probably won’t even notice.

The bigger question, of course, is whether it’s time for a redesign. This theme is long in the truth, but to be honest, I still like the way it looks. So, we’ll see.