7 Minute Miles Header

Charting tools for WordPress

Posted April 14, 2024

This website has included charts on several pages for quite some time: the run log, the bike log and the golf score database have all had various graphs that were created using the Easy Chart Builder plugin by dyerware. It used the original Google Chart API to create a PNG graphic from the information in a shortcode that I updated manually after each new event.

Google deprecated that API in 2012 and according to the Wikipedia page, turned it off on March 18, 2019. For some reason, however, the plugin still worked after that (most of the time). Last week, though, it didn’t work at all. When I went to the Easy Chart Builder support page, I discovered the plugin hadn’t been updated in 11 years. Time to find a replacement, eh?

Google still has a free charting tool called Google Charts and most current WordPress charting plugins use that. I didn’t want to get stuck again with Google deprecating a service in the future, though, so I started looking for alternatives. I found an awesome looking open source graphing library called Chart.js and skimmed through the documentation for that.

Turns out there is a great free plugin that uses Chart.js from Jamie Poitra called M Chart that does everything I want. Jamie has nice documentation here and I was up and running with replacement graphs on all three pages in about an hour. Still need to read up on themes, but I like the default styles and might just leave it the way it is. The Highcharts stuff is interesting – hadn’t heard of that library (or the Norwegian company) before.

M Chart also uses shortcodes, but creates a chart object for each one that is updated like a post or page. Each chart has a spreadsheet-like interface for updating data, so I’ll have to see how I like that workflow. Ideally, I’d like to have the charts update automatically when I enter events into the database, but that is beyond the scope of this plugin. I currently use phpMyAdmin to enter events, so maybe I can tackle that whenever I get around to creating custom data entry screens…


flourish icon

Hello, April 2024

Pic posted April 1, 2024

Nice to get the madness completed


flourish icon

18 years of web publishing 🎂

Posted March 27, 2024

My little web baby is almost an adult: 7 Minute Miles turns 18 years old this Saturday. Some highlights:

  • First post: March 30, 2006
  • Domain created: November 26, 2002
  • Posts: 30,050
  • Pages: 216
  • Database: 193.4 MB
  • Directory: 62 GB
  • Server: AWS Lightsail, Ohio, Zone A, Ubuntu 20.04.6 LTS, 4 GB RAM, 2 vCPUs, 80 GB SSD
  • Tech stack: WordPress 6.4.3, PHP 8.2.17, nginx 1.18.0, MariaDB 10.3.39, Let’s Encrypt SSL/TLS
  • Costs: $17.99/year @ Hover, $25-28/month @ AWS (Lightsail and Route 53)
  • Jetpack stats (avg/mo): 96 posts, 1497 views, 540 visitors

I’ve tweaked the font sizes a little since the launch of the new theme last year, but overall remain happy with how things are now. I recently simplified the navigation menu, which now just has home, about, lists and search links. The new about page was completely re-written and I updated my résumé page (and PDF) to reflect my move to Target Center last September.

Not sure what comes next. I’ve re-established the automation between 7 Minute Miles and Instagram via the excellent Intagrate plugin and continue to automatically capture any posts to Mastodon via the TootPress plugin. This site also technically federates content via the ActivityPub plugin (you can follow dmk@7minutemiles.com in your favorite Mastodon client), but I don’t see many people reading posts that way.

I removed all of my concert videos from YouTube, hibernated my channel, then posted them all here using the HTML5 Video Player plugin. I also tried to clean up the photo galleries a little, but both of these media types will likely require an increase in server storage in the next year to be expanded/enhanced.

Long live the weird web – thanks for visiting!


flourish icon

Have a seat

Pic posted March 11, 2024

The new entryway bench has arrived 👍


flourish icon

Instagram–WordPress integration in 2024

Posted March 9, 2024

Now that my temporary five-minute ban from Instagram appears to be over, I started looking at ways to re-integrate those posts with this website. Back in the @kingsbury days, I used a plugin to do this, but saw a few recent stories that mentioned trying IFTTT automations.

I signed up for a free account and created an applet that would trigger when a new photo was uploaded to Instagram, then create a WordPress photo post. This worked, but the results were not really what I wanted. It created a post, but didn’t download the image to my local media library (it just linked to the Instagram image URL). It also seemed to grab smaller 640×640 images and not the larger originals.

So I went back to see what plugin I used before and was excited to see that Iain Poulson is still publishing and supporting his excellent Intagrate code. There is a free lite version and a paid pro version, but I was worried by his 2018 blog post about Meta messing with the API for image sizes.

Submitted a question to him about that, but also just reinstalled the lite version to test it out. It seems to work great so far, but image size varies from post to post. Thankfully, my new theme handles smaller images much better than the old one, so it may be a moot point. Excited to have this back in place…


flourish icon

Let the Madness Begin!

Pic posted March 1, 2024

Hello, March 2024 – you will be a wild one


flourish icon

🫡 Page updates: about and résumé

Posted February 19, 2024

A few more things off the to do list: the about page has been re-written, added Target Center to the résumé page (and uploaded a new PDF version) and consolidated the navigation menu to Home, About, Lists and Search.

Also hibernated my LinkedIn account for now…


flourish icon

Fixing admin email on 7 Minute Miles

Posted February 19, 2024

Finally spent some time to remove a blog-related item that’s been on my personal to do list for a long, long time. WordPress websites have the ability to send out emails for various tasks, but the web server needs to support sending mail. I’ve been using a plugin from Noor Alam called Gmail SMTP that uses Google’s email infrastructure to send messages and that worked great when I was hosting 7minutemiles.com email using Google Apps for Domains. When that service was no longer free, I moved my email over to Apple and knew that broke the plugin and I would need to find another solution.

Fast forward two years (oops). Had an idea of signing up for a free general Gmail account and tying that address to the old plugin. Headed over to the gmail.com signup page and found that 7minutemiles@gmail.com was available, so I grabbed that. Next, I needed to go to the Google Developers Console and follow the instructions on the plugin howto page. That was mostly straightforward and I was able to get a green SMTP connected icon on the plugin settings page. The Test Email tab, however, gave me the following error:

There has been a critical error on this website. Please check your site admin email inbox for instructions.

Since admin emails were not being sent, there was nothing in the site admin email inbox. The comments on the howto page had a great suggestion, though – check the logs. Looking at /var/log/nginx/error.log, I saw this reference to curl:

2024/02/19 05:50:47 [error] 163214#163214: *464402 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Call to undefined function curl_init() in /var/www/7minutemiles.com/wp-content/plugins/gmail-smtp/class.phpmaileroauthgoogle.php:179

Checking on my PHP config page, sure enough, curl was not installed. That was quickly fixed with this:

sudo apt install php8.2-curl

All is right in the Gmail SMTP world again: Google SMTP server + OAuth 2.0 protocol + TLS encryption…


flourish icon

One tired doge

Pic posted February 19, 2024

I feel you, Hestia – late night of coding and troubleshooting


flourish icon

🫡 Time Management

Posted February 2, 2024

All the gurus like to talk about time management, but here are my personal top seven:

  • Time is precious – use it wisely
  • Prioritize and make time for what is important
  • Sometimes you need to do nothing
  • Keep work and personal as balanced as possible
  • Acknowledge some tasks need the right environment to happen
  • You can be productive all times of the day, but remember to sleep
  • iCloud Notes are great for to do lists across devices, but I also love notepads and Flair markers

Thanks for coming to my TED Talk…


flourish icon

Hello, February 2024

Pic posted February 1, 2024

It’s felt more like April this week – also still waiting for our first bird buddies to visit the new feeder


flourish icon

🫡 Apple Watch Update

Posted January 20, 2024

It’s been three weeks now since I stopped wearing my Apple Watch daily. My physical health is holding steady, as I still try to get on the treadmill to walk semi-regularly in this cold weather. My mental health, however, is vastly improved without the stress and anxiety of closing the damn rings. I still use the watch during workouts, but otherwise happy to leave it on the charger for the time being…


flourish icon

🫡 Website down alert ‼️

Posted January 13, 2024

Not that it was noticed by anyone but me, but I got caught tonight with a server outage after a system update that I decided to run after the game ended (and I was waiting for traffic in the ramp to clear). Since moving to AWS, my server updates are usually quick and painless, with a few quick Ubuntu commands (and sometimes a restart):

sudo apt update
sudo apt list --upgradable
sudo apt upgrade -y

Tonight, an upgrade to PHP 8.2 removed my MySQL database extension. Googling things like this (and many other things, unfortunately) has gotten pretty bad these days, so it took me a little longer than normal to get back up and running. Thankfully I had some saved notes that helped lead me to the command that fixed it:

sudo apt install php8.2-mysql

It was nice to see my two monitoring tools send me alerts immediately (old standby Uptime Robot and newcomer Jetpack Monitor). Total downtime was just under 20 minutes…


flourish icon

7 Minute Miles design standards

Posted January 9, 2024

It’s been almost a year already since I launched the latest design of this website. I wanted a dark, responsive design with larger fonts and for the most part, I’ve been very happy with the result. This week I made a few more tweaks to the font sizes and padding, as I thought the headlines on mobile devices were a little too big. I’m also not sure my viewport settings are 100% correct, so I need to spend a little more time on the mobile validation sites.

One of the things that I love about personal web publishing is that you can generally code pages to the exact standard you want. I’m not a professional designer by any stretch, but I generally know what I like (and there are a million examples online of what not to do). I also love reading brand guidelines from big companies that aim to preserve their look and feel. Here are some of mine:

  • Colors: black (#000), white (#fff), red (#f00) and gray (#ccc)
  • Fonts: Futura, Verdana and sans-serif
  • Photo captions: italicized
  • Image width: 1000px (was 850px)
  • Image styling: 25px white borders, film frame for concerts and movies

I still support five primary post types on this site: standard, image, link, quote and status. Each of these have their own sections in my style sheet and the home page template has if/then loops to lay each one out differently. Made a few tweaks this week to the quote and link styles (and don’t really use status now).

Comments have been off here for a long time now and I still feel that most public websites are better without them (hope the Star Tribune will eventually turn them off, along with their annoying auto-refresh tag). I do wish there was a better way for people to communicate with me here – perhaps there are some creative plugins I’ve yet to discover. A few other editorial choices at 7 Minute Miles: no ads of any kind and (starting this week) no more jumps on longer posts (i.e. – “click to read more” links).

At some point, I may go back and try to re-style some of the images for the current design standard. When I used to have a white background, I’d often use black drop shadows in Photoshop and now those images just don’t work right. My CSS file still has a bunch of entries that I could probably remove without breaking anything. Also thinking about adding back an RSS icon (with a link to the feed) and creating some personal business cards with the site design elements.

The annual site anniversary post isn’t scheduled until March, but I did take a look at the WordPress Jetpack stats for this site in 2023: 6,406 visitors, 19,074 views and 822 likes. Two very old golf posts still are the most popular: past champion “Reflections on Spring Hill Golf Club” with 238 views and the new #1, “Somerby Golf Club Notes” with 326 views.

Thanks for visiting!

Edit (2/2/24): changed the image styling standard to a 10px white border


flourish icon

Hello, January 2024

Pic posted January 2, 2024

Almost forgot I needed to swap out the Bryan Hansel calendars. You can get your very own here, if you are so inclined…


flourish icon

🫡 Website code for 2024 complete ✅

Posted January 2, 2024

The bike, run and golf pages are all updated and ready for 2024 data. 2023 year in review: bike miles down, run/walk miles up, golf rounds up…


flourish icon

🫡 Two Year Anniversary

Posted December 22, 2023

Yesterday marked two years in the “new” house and I can’t believe how many walls still don’t have any pictures on them (and how many other items remain on the house to do list). No pressure, though – love the place…


flourish icon

It’s beginning to look a lot like…

Pic posted December 19, 2023

Love the decorating job the fam does every year 💜


flourish icon

🫡 Being social, part III

Posted December 15, 2023

Just went back and re-read my Art of Being Social post from July and the September update post after thinking about the changes I’m now pondering:

  • Pause regular reading of Bluesky and LinkedIn
  • Further prune my Mastodon follow list
  • Remove my concert videos from YouTube and only host here
  • Review my paid subscriptions and RSS feeds

The volume of reading has just been too much lately – need to find a better balance, with less noise…


flourish icon

End of 2023 brain dump

Posted December 8, 2023

Haven’t done one of these in a while – let’s give it a go:

  • I like being busy almost as much as I like relaxing, but the scales have definitely not been balanced lately ⚖️
  • The Timberwolves are extremely fun to follow this year #WolvesBack 🏀
  • Looking forward to my surprise (and very short) anniversary trip next week ✈️
  • Planning a return to Twins spring training in ’24 ⚾️
  • The extended ’23 Minnesota golf season was super fun ⛳️
  • Future golf wishes: fewer carts, faster play and less music 🚫🎶
  • Speaking of music, still *way* too many talkers at shows 🚫🗣️
  • Need to remember I have a Lifetime Fitness card in my Apple Wallet now 🏋️
  • Would like my running mileage in 2024 to surpass 2023 (Milk Run, Get in Gear, TC 10 Mile and prep for Disney?) 🏃‍♂️
  • Getting pretty dang excited for the arrival of Oliver 🇬🇧
  • Grateful for my awesome family and circle of friends and colleagues 💜
  • The tech wishlist is growing: new watch, fancy headphones, new home office computer 🧐
  • Really need to backup and update my AWS cloud environment ☁️
  • Should probably start crossing off more ski areas from the list while I can still ski ⛷️
  • Can’t wait for Chef McKee’s new stuff to open 👨‍🍳
  • Like both Mastodon and Bluesky, but I give up on staying current with the feeds 🐘
  • Still not very proficient with the clown app, but it gave me free fries today 🍟

Bring it on, 2024!


flourish icon

Hello, December 2023

Pic posted December 1, 2023

That means it’s almost birthday month (and I need to work on the Christmas mix)


flourish icon

Our tree has had it 🍁

Pic posted October 28, 2023

Feels like every remaining 2023 leaf dropped at the same time this week


flourish icon

Hello, October 2023

Pic posted October 1, 2023

Missing the Lutsen colors this year 🍁


flourish icon

MyPrecious15ProMax Experience

Posted September 24, 2023

‘Tis the season for my annual iPhone Upgrade Program membership to kick in. This year I moved from a purple iPhone 14 Pro (256GB) to a blue titanium iPhone 15 Pro Max (256GB). The notification and pre-order process went smoothly, as I received a timely upgrade email and also had the correct information populated in the Apple Store app on the older phone. It’s nice that this has all worked without major issues for several years now.

The UPS delivery person brought the new phone to our house on Friday and I decided to do the phone-to-phone transfer process again instead of restoring from the iCloud backup (which I also ran manually on the old phone immediately before starting – just in case). The time estimate displayed laughingly said it would take 10-15 minutes, but I needed to let the process run overnight. Even then, it didn’t download all the apps to the new phone until I hit the continue button Saturday morning.

Despite the long setup time, big kudos to the team at Apple that is responsible for engineering this upgrade process. Trying to create a process that works reliably for millions of customers with a basically infinite number of combinations just blows my mind. Here are some examples from my particular setup:

  • All of my Apple Wallet items transferred seamlessly (with the process to add my Wings Credit Union debit card now all online with no need to call them like before) – Apple Card, tickets, Science Museum membership card
  • All photo, music, iMessage and health data just worked on the new phone (did need to sign-in to MyChart to restore that app)
  • My third party calendar app Fantastical asked me to sign in again, but then all the correct calendar data appeared
  • All my favorite third-party games data transferred with no issues this time: Two Dots, Lightning Link, Star Wars Card Trader and Words with Friends
  • Password management didn’t skip a beat – 1Password transferred over after a sign-in on the new phone and all of the iCloud password management worked as expected
  • My 2FA accounts in Google Authenticator did not automatically transfer, but the export/import process via the double QR scanning worked great (make sure you don’t erase your old device until you do this)
  • Didn’t experience any of the software update issues I had read about – the setup process started by first telling me I needed to update to iOS 17.0.2 before transferring data from the old phone
  • Re-pairing with my Apple Watch was much smoother this time (and was part of the upgrade process and not something I needed to handle manually)
  • I had to reauthorize the new phone for CarPlay in my Honda Civic, but after that everything just worked as before (needed a new USB-A to USB-C cable)

I wasn’t entirely sure I wanted to go back to the larger size again, but really, really wanted the 5x optical zoom lens only available on the Pro Max. So far it fits OK in my pocket and the in-hand feel and overall weight are much better than I expected. The build quality of the iPhone Pro models continues to be on par with the excellent MacBook line of laptops – I really don’t want to use anything else.

Hopefully I can go more than a week without scratching the screen or dropping it on the floor (yes, I’m still a no-case, no-screencover daredevil)…


flourish icon

🫡 Being social, an update

Posted September 14, 2023

In my July 2023 post the art of being social, I wrote about the current state of social media and how things had changed for me personally with the deletion of my Twitter account and how I was using Mastodon as my primary remaining service. After finally getting an invite code to Bluesky, I’ve lurked on there for a few weeks now too. Here are a few updated thoughts:

  • Aside from the presence of a few old Twitter people, not finding a lot of value so far in Bluesky.
  • Looked at Threads and saw I needed to create a new Instagram account, so I deleted the app.
  • Mastodon via Ivory still works great for me across iOS and macOS, but I’m finding that the time required to keep up isn’t equal to the value I’m getting out of the posts. Will curate my follow list and see if that helps.
  • LinkedIn lately has been full of bad takes, unwanted sales generation and (apparently) fraud research, so it might need to go away again soon.
  • Based on recent Google actions, may remove my concert videos from YouTube.

Leaning towards 7minutemiles being the exclusive, definitive source of online DK information soon…


flourish icon