From Hobby to Blog: My Gardening Adventure

A 4 year old girl holds a pile of cabbages the size of her body

In 2022, I took over the family garden. We had just welcomed our second child into the world and I would be out on paid paternity leave for 4 months. My wife had been landscaping this property since 2014 and had established a great number of plants, bushes, annuals, and décor that really made this house a home for our growing family.

My oldest was 2 going on 3 at the time and I wanted to give her a summer of outdoors play, fun, and a basis in gardening that I was lucky enough to learn from my mother. I’ve grown hot peppers over the years here as it was isolated and easy to maintain without the prying eyes and hands of children, but with our family how at 4, a paradigm shift was needed. We began picking out seeds together, planning what worked for all of us rather than what daddy wants. I began simple, tracking our purchases in spreadsheets and OneNote, buying raised garden beds in place of in ground beds with surrounds.

It’s now January 1st, 2025 and today I want to bring out from the behind the show that is my hobby and a passion. This blog will run off affiliate links and limited ads. There will be sponsored posts and giveaways. Most importantly, there will be pictures. Please respect the copyright of these pictures and link back with credit. I’m not new to photography, blogging, or copyright, I’ve been making content since 2002. I’m hoping to bring to the world my small portion, my small garden with hopes that one day I can fill something like this 1,300 sqft back alley lawn with something a little better.

How to update your 2015 install of WordPress 4.3.34 to 6.7.1

Featured

Today’s entry is a post-mortem of the 6 day, 19 hour long process of upgrading my website, www.brtw2.com, so that I could write a blog post about modifying a cheap, flash speedlite that I purchased on AliExpress.com. This process was not for the faint of heart and required learning, experimentation, patience, and I’ll close out with YMMV. Making sure you maintain several back-ups of your install is a requirement before proceeding. If you are currently disconnected from JetPack, this process will help you repair that connection. I was able to upgrade from version 3.7.5 to 14.1 and reconnect my JetPack account as a result. This website is now using an SSL certificate, free from ssl.com (90 days per free cert), which allows for user accounts and other basics that blog readers are familiar with. This guide will use tools that you may have to learn to use and I encourage you to dive deep where necessary. Using my own time, this upgrade cost me $1400 in labor and $0.00 in new software.

This is the result I was aiming for at the start of this process. I started with 4.3.34 installed and running, but wanted to utilize JetPack for posting from mobile. Being several software revisions behind, that link was not possible. The last time this blog had been updated previously was 2015 when I completed blog consolidation which you can read more about here.

Starting with 4.3.34

First off, I had to determine where my install was located as it had been a few years since I had last logged into my hosting service. I’m on a very basic plan with limited space, databases, and ability to use older installations of PHP without additional pay. My cost for hosting is currently < $60/year. To purchase access to older versions of PHP installs, I would have had to go up to at least the $160/yr plan. This would have been the most straight forward of the upgrades as I would have been able to incrementally update my WordPress install and avoiding the major issues encountered.

Once I was in my hosting account, I remembered that I did not have the domains registered with the hosting company. This wouldn’t end up being an issue as anyone who has ever maintained separate hosting can tell you. One of the first issues I ran into was the lack of a valid SSL certificate when attempting to update WordPress. I would later realize that the SSL error I was receiving was a result of how the update routine, update-core.php, was trying to access WordPress’s website. More on that later.

I’m going to skip over the steps above, this guide will assume you can match up the above titled items with the steps you’ll find in the next step with your certificate signing company. For today’s guide, I’ll be using SSL.com

Installing a valid SSL certificate

SSL.com sells free, 90-day certs to anyone who can validate their identity (affiliate link). I felt completely comfortable using their service as I had previously purchased certificates from them and was familiar with the overall process. One additional step I took with SSL.com was confirming my own identity. I had no concerns turning over my credentials (in the form of a driver’s license) to SSL as they are a security organization that is trusted with securing the internet.

To get a 90-day cert for a website, you need to validate that you own that website. Email validation was deprecated 14 days earlier than my attempt to validate my install. The second method of validation offered to me was to download a file and load it into a specific directory on my host server. This was straightforward, but took 45 minutes to complete due to 15 minute waiting periods. Removing those specific files after the verification is very important.

To get the file into your hosting server, either use cPanel, FTP (such as filezilla or winscp), or the host’s file system webpage to create the directory needed (or directories), download your validation file and click ‘Validate’.

A quick intro to cPanel is necessary to explain the steps ahead. cPanel is our way to interface with a hosts server in a way that’s straight forward and can both permit and restrict access to certain features. In my cPanel above, you can see 2 installations of this blog and more Features Applications below. Most of the time applications use mySQL databases. My hosting plan grandfathered in my 9 mySQL databases at the time of working through this. Here is where I made one mistake, my hosting company does not accept ECDSA P-384 certificates, despite having it as an option in cPanel.

After downloading my certificate shown above, cPanel was used to complete all of the SSL steps necessary for me to get a valid cert for brtw2.com. I’ll mention again if you did not already complete this bold step above, but removing those specific, verification files after the verification is very important. Alternatively, modifying the file to permission 600 or lower would also work.

I had to locate my SSL/TLS folder. My folder is located under Security in cPanel.

The ECDSA P-384 option was my preferred choice, however it never ended up validating. Once I realized that I would be required to use an RSA-2048 cert, I went and purchased a second, free cert and completed the set-up a second time, which took another 45 minutes to complete.

Saving your certs with usable names is a great way to organize your ssl cert folder. I download all of my copies and store them locally, saving them by renewal date. You’ll need to save this file to upload it in the next step in cPanel or where ever your host let’s you upload SSL certificates.

You’ll know you have a certificate when the filetype is a .crt. Next, we’ll navigate back to our SSL/TLS folder.

In my cPanel, I’ve selected Manage SSL sites.

Shown here is my successful install with many subdomains listed as insecure. These red locks are for subdomains that my Free cert doesn’t cover and I’m more than okay with that. More broad certificates are available to cover all subdomains on ssl.com (affiliate link). To upload your certificate with filetype .crt, click Browse Certificates.

On top of the pop-up (it’s moveable in cPanel) is a link to Certificates page. If you do not have any certs showing in your list, let’s upload those!

Uploading the cert file (.crt) if my preferred method and once uploaded, Install your SSL certificate and run the SSL Scanner on ssl.com.

I’ve gone back to ssl.com and run my scanner and all attributes are checking out good now that I have the RSA 2048 cert properly installed. With a proper certificate installed on this blog, I thought my troubles would be over, but I was about 13+ hours incorrect.

Discovering the main problem, WordPress’s own cert

WordPress updated all of it’s security certificates in version 4.4.1. This was an issue as this guide assumes you’re starting on 4.3.34, which is older than 4.4.1. I discovered this issue while doing basic google searches for how to update 4.3.34 and reading WordPress patch notes straight from their documentation library. Thank you to WordPress for having such a great and deep library, I knew updating would be a challenge, but not “download and update certificates IN WORDPRESS” difficult. This step isn’t difficult, but identification of what’s actually wrong was quite hard.

How I managed to navigate to the .crt file for WordPress, I cannot remember, but you can download a copy for yourself here https://raw.githubusercontent.com/WordPress/WordPress/master/wp-includes/certificates/ca-bundle.crt. This file needs to be placed in the directory where your expired certificate is located.

My expired WordPress cert file was renamed .old and the .crt from above was placed in that directory. This solved the invalid, insecure redirect that prevented me from updating due to a bad SSL request coming from my WordPress update-core.php file. Clicking the Update Now button finally got the ball rolling and it would be the last time (after backing up) that I would see this in my host’s dashboard:

My own WordPress finally was updated to a version from the passed 5 years, 6.2.6. Unfortunately, this would not be the final solution as going any further would require .htaccess issues to be troubleshooted.

.htaccess and how to update to 6.7.1

I’m torn about how much of this troubleshooting to include. Modifying your .htaccess file is kind of like realizing while growing up that your home town is just a drop in the bucket that is the world. Working on troubleshooting .htaccess is going to prevent access to your website when you modify it incorrectly. If you have access to Apache Handlers in cPanel, this is also a viable path forward, but Apache Handlers is a 2-way program within cPanel, modifying your .htaccess file will modify the Apache Handlers and visa verse.

My host’s cPanel allows me to select from php 8 through 8.3. Going back to the very beginning of this blog post, I didn’t want to pay out $100+ so be able to just install an old version of php to update WordPress. In the end, I spent $1400 in labor hours solving this issue over the course of 5 days. I’d still go through this ordeal the way I did, frustration and long nights included, because this is valuable, knowing how to bring blogging software back from the 2010s and into the modern era is vital to keeping information alive. What this meant is that the final solution was to spoof different versions of php. To do this in .htaccess is the same as cPanel, but to introduce a new item, let’s navigate to our .htaccess file via FTP:

I use a software from the early 2000s called Bluefish for development. I use more powerful and useful software too, but working in raw code has it’s time and place.

A quick note on how to get files in FileZilla to associate with your editing software of choice, Edit > Settings > File editing > Filetype associates. That first row of the “Custom filetype associations:” is for all associations and “htaccess” does nothing more than reassure me that I can do version control. Version control? Remember how I said that modifying your .htaccess file will prevent you from accessing your site? Make sure you have 1 good copy, store it somewhere safe, email it to yourself.

Important things of note when looking at an .htaccess file: Comment out lines with “# ” and “AddHandler” enables installations of applications. Knowing if your host is running Linux or Windows is finally important. For this guide, I’m using Linux and my applications require a specific style:

# AddHandler application/x-httpd-alt-php56___lsphp .php
AddHandler application/x-httpd-alt-php56___lsphp .php5
AddHandler application/x-httpd-alt-php70___lsphp .php70
AddHandler application/x-httpd-alt-php71___lsphp .php71
AddHandler application/x-httpd-alt-php72___lsphp .php72
AddHandler application/x-httpd-alt-php73___lsphp .php73
AddHandler application/x-httpd-alt-php74___lsphp .php74
AddHandler application/x-httpd-alt-php83___lsphp .php83
# AddHandler server-parsed .php
AddHandler application/x-httpd-alt-php74___lsphp .php

For me, I eventually was able to clear that 5.6.40 php versioning error by running .php as 7.4. I’ll show the result and then a fun exercise that helped me get to this point.

By going and making every version from 5.6 “run” .php files, I was able to find a version that worked. For me, that version was 7.4 as seen in the picture/code above. See, this took a lot for me to believe. I knew that my host had updated me to php version 8.3 because I had selected that. Why WordPress told me this:

Was that one line of code in .htaccess, a line that was there when I started this ordeal and thought nothing of it, this line:

# AddHandler application/x-httpd-alt-php56___lsphp .php

It’s commented out now, but when I started, I didn’t connect the dots between “56” and version “5.6.40”. If you can run .php and have webpages load, then try doing the following: make a new .php file and name it “phpinfo.php”. In that file, insert the following code so that when you load that .php file as a webpage, it tells you what version of php you’re running, the “phpversion();” portion of the file:

<?php 
    // Get the software version directly using the phpversion() function 
    $softwareVersion = phpversion(); 

    // Display the software version
    echo "Current Software Version: " . $softwareVersion;
?>

Save this and upload it to your top level directory

In your URL bar, navigate to that file, for me I get this

Changing my .htaccess file so that the 74 is a 73 produces the following

And 83? 83 displays and runs this version of php

So we really do have control over what version our .php files are executed in and once I selected version 7.4 I was greeted with this final screen

And this my friends is the last step necessary before relinking your JetPack account.

The update ran for a couple minutes and I was greet with this welcome screen. I’m still not running php 8 and that’s okay, I have many plugins and other updates to run. If any theme or plugin cannot run on php 8, the whole blog will not load and thus I have more hours of work ahead of me. But for now, I have entered hour 20, my hosting website’s Installatron is satisfied

And there is no more to do. If you require access, my rates should be discernable from the dollar figures throughout this post. Good luck and I’ll see you in the comments. i am brtw.

Blog migration and consolidation

Free Food at Drexel

I’ve been blogging for a long time. If you can remember xanga for a moment, that was the first place I wrote down my thoughts… that means I’ve been blogging since 2000, gosh. Since then, I’ve written for many different reasons: fun, work, free food at Drexel. Today is the first day of the great migration and consolidation. My goal is to slowly move each and every blog I’ve owned over the years and archive them here so I can slowly lower my annual cost for domains. And since I needed to learn how to do this, I want to teach you the same.

During it's hayday, we had an up to date calendar that was run by 5 different people. We really were all in on this idea, sometimes to the dismay of the event staff.

During it’s heyday, we had an up to date calendar that was run by 5 different people. We really were all in on this idea, sometimes to the dismay of the event staff.

Free Food At Drexel will be the first blog I’ll be bringing over because it was one of the most successful projects I ever ran. The team consisted of me and 3 classmates and we really had a lot of fun with this project. The writing style and humor might not translate from then to now, nor will a lot of the pictures, but I’m glad to have taken part in it.

User Sigma even found a recent post about our old venture, if you can believe it, demanding that we bring back the website. That’s pretty moving, I appreciate his kind words and I’m glad that we made a difference in the bellies of our readers. In the end, we’ve all moved on and graduated and the project ended. Some quick stats about our venture:

  • we made* $5.60 from ad revenue
  • had 47,062 page views all time
  • had 22 followers
  • published 242 posts

*I lost $60.40 on the whole venture, but the calories we gained were priceless. Maybe one day I’ll carry that loss forward for some tax offsetting (what is the limit, 20 years?), but for now it’s a moot point because I had fun.

How to import a blog

There’s a few things you need to do in order to import a blog. The first thing you need is a source blog, in this case, freefoodatdrexel.blogger.com is my source blog. The more organized the source blog is, the less work you’ll have to do in order to successfully import it. In my case, I went ahead and just imported what I had and decided I would deal with the clean up, rather than do double work.

If your source blog had multiple authors, you’re going to need to create accounts for those authors on your WordPress blog. Since I have a domain name with email addresses, I went ahead and recreated those authors as editors here so I could reassign their old posts.

To grab those posts from blogger, I had to export the blog:

Export a blogger blog

The file that is downloaded is an .xml file and you are going to need that file to import it into your WordPress blog. I went with the default import feature on WordPress, but it wasn’t the cleanest as it didn’t carry over my authors. The import tool is very straight forward and simply asks you to navigate to that .xml file. You’ll have to pick which username from your source blog corresponds to which username on your WordPress blog, which is where I went wrong this first  time. I’ll recreate this in the follow-up post so you can see what it should look like.

Wordpress Import

I decided that this wasn’t a problem for me as I knew that I was going to have to go back to a lot of my older posts and clean out the broken links for images that we “borrowed”. So while cleaning up my old posts, I had to change the author to those newly created “fake” accounts. This was easy however, since changing the author of a post is as simple as clicking “Quick Edit” and selecting their name from the drop down.

Quick Edit

If the username you’re looking for isn’t there, go to your Users page and change their Role to Author.

Edit User Roles

As I was unsure how I wanted my old categories to meld with my existing ones, I decided to use one catch-all for the old blog’s posts and use tags to capture their old categories. If that’s confusing, don’t worry, I was confused too, because when you’re adding 250+ posts of content, you really don’t know what to expect. In the end though, Old Categories -> New Tags and all the old posts being categorized as “free food at drexel” looks like it will give me the best results.

And that’s really it. The actual importing process and cleaning process are really mundane, involve opening every post and deleting the old, broken image links, setting the author and saving.  Once I complete this (hopefully by Friday), I’ll get to work on the highlight reel and maybe we can all share a laugh remembering old times.

Next week, brtw’s cooking blog!

Back into it, what I’ve been up to

It has been a busy several months.

Let’s see: work on the house has been going along at an amazing pace, kitchen is completely purchased and being assembled, workload at work is still the same but with a little more travel as the company realizes future potentials, cooked and prepared a few interesting things as of late (expect ex-cel-lent recipe updates soon and have a new name!), played some World of Warcraft and then quit again, burned my nerve endings working with ghost peppers, and met some awesome people at Madison Square Garden back in August when League of Legends stopped by.

All that said, the house is still taking up most of my time, but I’m ready to put more effort into developing a blog that’s helpful and maybe even a little educational.

I’d also like to promise a more regularly scheduled… err, posting schedule. I’m going to go with a weekly posting schedule (Wednesdays) for now and ramp up if interest grows.

But what’s the point of a blog post to tell you about blog posts, right? So let’s get some content going…

Ghost Pepper Shenanigans

IMG_3005 IMG_3006

Free Mug Contest! Your best recipe!

brtw supporter mugs

The mugs that I got on sale from zazzle.com for $7.50 each came in.  You can buy one for twice that through the support me link. I think I get $1 and change on every mug, so I’m not making a killing on them, but I’ll be putting those dollars back into funding the website, maybe I’ll even make a little tracker!

Anyway, I have 3 mugs to give away (one is for my friend’s bday today) and I’m looking to have a contest, or a series of contests, to give them away.

The first contest will be an easy one:
I’m looking for, in exchange for one mug, shipped to your continental US location, your best recipe to be used in exCellent Recipes. The exchange of goods will grant me publishing and ownership rights of your recipe, but only the winning recipe. I’ll be picking one winner from all of the submissions received. This first contest will run until October 16th, so just about 1 month from now. I’ll pick a winner by the 20th of October.

Please make all submissions to recipesformustachemugs@brtw2.com