Read and Write



Ham Radio

Health & Fitness





Website Technology



By Callsign

By Channel

By County

By Frequency

Repeater Map

Leap Year

Published for Thursday - February 29, 2024

Leap Year

Written Monday - 02/26/24 7:10 AM

Leap year. It only happens once every four years and the difference is that February will contain 29 days instead of 28 for a non-Leap Year February.

The good news is that it's easy to calculate when there will and will not be leap years in this century. If the year is evenly divisible by four, then it IS a leap year and February will contain 29 days. Otherwise, it's not a leap Year and there will only be 28 days in February.

To expand on the rule just a bit, every year that is evenly divisible by four is a leap year unless the year is also evenly divisible by 100. But, if a year is evenly divisible by both 100 and 400 then it is a leap year.

Leap Seconds:

To dive a bit deeper, a year is actually 365.24237 days. To make this a bit easier, the adopted length of a year is rounded up to 365.25 days. The .25 days, in the rounded up value, makes it a bit more clear as to why one day is added every 4 years.

But, considering the adopted length of a year (365.25 days) minus the actual length of (365.24237 days) there is still the difference of .00763 to deal with. To address this, leap seconds can be periodically added which will also ensure that dates and seasons do not get out of sync.

On December 31, 2005 a leap second was added. It was the first to be added since 1998. Another was added in 2008, 2012 and on June 30, 2015. The next may be added on the last day of this year. We'll see.

More to come:

To dive even deeper yet, the passage of time can now be measured to the extent that the rotation of the earth might be addressed as a variable and might be dependent upon other conditions such as how trees grow and their impact upon the distribution of the mass of the earth or weather conditions such as El NiƱo.

With those things accounted for, it's no wonder that there is no mathematical rule for the addition of leap seconds. They are called to be added based on the aforementioned conditions and the .00763 difference.


Published for Wednesday - February 28, 2024


Written Tuesday - 02/27/24 4:20 PM


I just accidentally deleted this post. So now I'm posting and publishing at the same time.

That's because I've decided to revert back to my option of publishing a day early. With my test system, I'm already allowing myself the opportunity to write early. But I tend to be down here at night and want the option to publish too, so that I don't always have to do it first thing in the morning before I run.

I thought I had a pretty fail-safe methodology for avoiding deleted posts. But that's what happens when I'm not paying attention. My fail-safe just flies out the window as it did today. I wrote the post a few days ago but it's gone now.

One Thousand

Published for Monday - February 19, 2024


Written Sunday - 02/18/24 4:15 PM

Well, if 100 posts was a big deal and every hundred posts since then has been celebrated, then 1,000 posts would have to be a very big deal.

So, here we are with post number 1,000. It doesn't represent day 1,000 because there have been seasons (for example: a couple of months each time we moved) where I was focused on other more important things and wasn't staying with my one post per day goal.

Either way, 1,000 posts is a very big deal - for me anyway. And, if my math is correct there have actually been 1,218 days or 3.34 years since I started this project.

Search Feature

Published for Wednesday - February 07, 2024


Written Monday - 02/05/24 3:20 PM

Unless you're a very observant reader on this blog site, you probably didn't notice that the Search Feature had been removed for a day or two. I can't help but laugh at what I did.

I actually removed the search feature because I thought I had mistakenly deleted the very large search file. In fact, as of February 5th the file is 1,820,476 bytes or roughly 1.82 meg in size.

I hadn't actually deleted the search file, but thought I had. As such, I went through the tedious process of removing the search feature since I thought there was no search file against which I could search.

The bad news is that updating that search file is an extra step that must be performed each time a new blog post is added. The good news was that removing that feature meant one less update since no search file meant no file to update.

But, the real bad news is the pain I experienced in the mistake I thought I had made. As much work as I put in to that search feature and the amount of updates that had been performed against it were now all gone. I don't mind admitting that I lost some sleep over that perceived mistake.

The amount of work and research to relearn what I did and how I did it made the task one that I just could not compel myself to pursue. I was confident it would literally take weeks, if not months, to completely replace that feature - not to mention the updates if I could even remember them.

Well, guess what? I decided to take on that lengthy project (although I honestly doubt the search feature has been used by anyone but me) and put the search feature back out there.

In doing so, I realized that I had not deleted the search file. In fact, I had deleted a file I use to test new posts and one that gets deleted for each new month. So, I had done just as I was supposed to do, but apparently incorrectly remembered that process after a certain point.

That's why I went looking for the contents of the search file in the wrong place. And I'm pleased to say that when I realized my mistaken assumption, and that everything I needed for my search feature was still available, I was able to reintroduce the search feature with little effort.

It's a feature I'm proud to have coded and updated, and one that I'm glad is back in the blog - even if no one but me ever uses it. Smiley

Oh, and I decided to stop posting a day ahead and instead post (what will likely be a previously written blog post) each morning right before I jump on my workout and my run.

Month End

Published for Wednesday - January 31, 2024

Month End 2

Written Tuesday - 01/30/24 8:00 AM

Just finished up another run and it's that time. Time to do the end of the month routine here on the blog.

Actually, I do it on the first of the month but what's a day between friends? As I type it's Tuesday (Patty's Birthday) and I have Therapy at 11 AM and a grocery pickup at noon.

I was hoping to take Patty out for her birthday, but she sounds like she has what I had and am now trying to get rid of. I proise you that what I had, and to some extent still have, is not any fun.

No weights today but maybe that good run will chase away this creeping crud before I jump on those errands I mentioned earlier.

Oh, and I must say that being on the SSB side of the ham radio has been a lot of fun. Several Pota stations worked, Winter Field Day, and just some of your basic QSO's, not to mention getting Noah started in the hobby and still doing some digital FT8 and FT4. And I'm getting some awesome signal reports on the hexbeam. Makes it all worth while.


Published for Friday - December 22, 2023


Written Thursday - 12/21/23 8:20 AM

If you visit this blogsite at all and pay much attention to the way things are organized or laid out, you may have noticed that the banner at the top of the page is missing. You can see the word banner which is the alternate when the image goes missing.

Well, this has happened once before and I did something to fix it. Now it's happened again and I have no idea why. I have wondered if I did something to make it quit working, but the things I do on a daily basis here don't even come close to affecting the banner.

This is one of those technical puzzles that is a real pain. Everything seems to be as it is supposed to be, but the banner just does not show up. I guess this will be a technical problem that will capture much of my time and attention until I get it fixed.

Addendum: 12/21/23 12:30 PM

Well, as can be seen here on the site, the banner is showing again and all is well. The banner quit showing up in all places that have different code. It was clear to me that the image behaved as if it was missing. That's because I could still see the alternate name of Banner everywhere the file was supposed to be located.

However when I went searching, the banner image file was still in place. A review of Google suggested one possibility might be a corrupted image file. As such, I copied another file but the problem persisted.

I'm not sure how or why I came across the solution, but I vividly remembered causing the problem. I just didn't recognize that I caused it back when it happened.

That's because I was using technology that I don't typically use and am not sure I even know how to use. A folder was somehow selected and when I moved my cursor it was dragged and dropped into a different location. When I discovered the issue and moved the folder back to the place where it belonged, Voila, everything started working again.

To be quite honest, I didn't even know that FileZilla would allow me to drag and drop a folder to a new location. I guess that's what made the issue so difficult to debug.

So, my assessment of the issue was correct - the system was not finding the image. However, my guess(es) as to the cause of that problem (the relocated file folder) were incorrect. That is until I finally came across the problem and in a place where I least expected to find it.

Post #900

Published Monday - NOVEMBER 13, 2023

900 Posts

Written Thursday - 11/07/23 11:20 AM

Well, this is post #900 on the blogsite. Worth a pause to reflect.

Internet Down

Published Sunday - NOVEMBER 12, 2023

Internet Down

Written Saturday - 11/11/23 1:10 PM

Well, you never know how much you miss something until you don't have it. Such is the case with the internet.

I just called my provider and they do indeed have a rare outage. I say rare because the service has been the best I've ever had. No outages so far, until today.

Unfortunately, the service tech did describe today's problem as an outage and indicated that a telephone update was due less than 10 minutes ago but has not yet been provided.

I noted that I would gladly wait since no further updates are available. I wonder if a limb came down somewhere. We've got some wind and light rain so, it's quite possible, but who knows?

I know that in the past (with bad weather conditions) we've not experienced internet outages so no way I'm going to start complaining now. Hopefully we'll be back online very soon.

Just finished watching a movie on my iPad that was already downloaded before the internet went out. It's 3:45 PM on Saturday the 11th of November and the internet is back up and running again. Time to upload this post to the blog.

New Month Website Update: It's That Time

Published Wednesday - NOVEMBER 01, 2023


Written Saturday - 10/28/23 8:15 AM

It's month end and time to do the monthly updates here on the blogsite. As mentioned before, it's time to update the archives, the menu, and the files.

As I type it's only October 28th so I'll probably let things wait until we get a bit closer to the actual end of the month.

As you probably noticed, I have also added a Day-of-Week label for both the composition and publication dates and I still tend to publish on the afternoon or evening before the publication date.


More Technical Stuff

OCTOBER 09, 2023

Tech Stuff

10/06/23 1:50 PM

I found another error here on the blog. Fortunately, it was easily corrected.

The search feature always points to the archives. Unfortunately, it mentions the archives even when it finds something in the current month.

So, all I had to do was add a link to the current index file and present it as the current month in the archives. Now when you search for something that is found in the current month, that month is also found in the archives and the reference to the archive, in the search feature, is now accurate.

Technical Stuff

OCTOBER 06, 2023

Technical Stuff

10/04/23 10:55 AM

I think I mentioned something related to this a while back. But, I thought it might be worth repeating.

As the reader may have noticed, there are two dates shown on each post. One of them includes a time-of-day stamp.

The date and time-of-day stamp pertain to the date and time that a post is actually composed and written. The other date pertains to the intended date of publishing to the internet.

Because I don't always get back down to my office and my computer at night and because I want to ensure a post is ready first thing in the morning, I tend to publish them anytime after lunch the day before the intended post date (the one that has no associated time-of-day with it.)

So, the things that I write pertain to the date and time they were written. In other words, it I mention last night that would be the night before the date and time the post was written - not having anything to do with the date the entry was posted.

I suspect that was probably obvious, but perhaps not. Either way, I offer the post as a point of clarification for blog entry dates and time-of-day.

Month End

JULY 31, 2023

Month End

07/30/23 02:00 PM

Well, it is indeed month-end, but more importantly is that it's the end of the month of July. That means it's time to say Happy Birthday to Noah. Hard to believe this is number 12 for him.

But July 31 is the big day and 12 is the big number! We'll call him a bit later and wish him a happy number 12. As I type it may be 2:01 PM here but it's only 7:01 AM tomorrow where he is and at his age, I'm sure he's sleeping in.

07/30/23 07:00 AM

I have no idea where the days fly off to, but my how this year is flying by! We're already headed into August where Patty and I celebrate the birthdays of our two kids. Before he passed away, we used to celebrate dad's birthday at the end of August and, had he lived, he would have been 94 this year.

I guess it's time to do all of those month-end tasks here on the blogsite. Setting up a new archive, new index, new test index, and the rest of the things that need to be done. So, here goes the setup and publication.

Destined For War

JULY 28, 2023

Audible 2 GTA

07/27/23 08:45 PM

I just finished adding a new item to the Category menu for books. This will be a place where I write about the books to which I listen on Audible.

07/26/23 08:05 PM

Well, I finished the first book and found a free one that interested me enough to download it and give it a try. The title is Destined For War and is written by Graham Allison (pictured above.)

It's quite a lengthy listen (over 12 hours) but is a very good read. There's quite a bit of insight into the China/U.S.A. relationship and the goals of each.

The interesting lesson centers around Thucydides's Trap. The general idea of that trap is the inevitable conflict that arises when a rising power threatens to displace a ruling power as a regional or international hegemon.

Allison suggests that in the past 50 years there have been 16 such cases and 12 of them resulted in war. He then goes on to layout some of examples and describes the specific situations surrounding them.

07/27/23 12:45 PM

Still several hours from the end of the book, it has moved to an analysis of various what if scenarios between China and the U.S.A. including scenarios that involve both Hong Kong and Taiwan. It's very thought-provoking.

07/27/23 08:50 PM

I had a flash back to an old movie I watched as a kid back in the 60's entitled Sink The Bismark. I decided to look it up on YouTube and watch it. It was a most enjoyable visit to the past.


JULY 05, 2023

Twitter Side Bar

07/04/23 07:20 AM

Well, the Twitter team changed the rules for my Twitter feed on my blog and looks like it has forced me to remove my Twitter feed from my blog.

The only thing I see anymore on my Twitter feed is the picture above. And, that is due to what Twitter is calling an Index Capacity Restriction. Really?

I've moved half of my left-hand menu over to the right side and inserted it where my Twitter feed used to be. That should work for the near-term. At least it looks balanced to me.

No Internet

JUNE 19, 2023

No Internet

06/19/23 11:25 AM

Well, the only thing worse than waiting to write and publish a post first thing today is to discover that there is no internet available. I powered off and back on the modem/router but to no avail.

So, today's post will undoubtedly be late. We had some weather move in last night and it looks like when it left it took the internet with it.

I should have realized there was a problem when I could not get my phone to present today's weather. I took the phone off of wifi and viola, the phone found the internet from the closest cell tower and I could see that additional rain was in the forecast.

I'm still trying to activate the wifi to grab the internet, but with no success. Looks like it will be a hurry up and wait game this morning.

Decimal Accuracy

JUNE 03, 2023

Decimal Accuracy

06/02/23 07:25 AM

I always run a test of the search feature each time I add a new post. That's because it is affected by each new post. And, it's because I like coding and the technical side of things with the blog that work behind the scenes.

While running the test, I noticed that the percentage figure was calculated as a whole number and left off anything after the decimal place. This doesn't make a lot of difference for big numbers but reflects a lack of accuracy when the numbers are smaller. For example: 297 or 297.25 may not be that different, but there's a significant difference between 1.00 and 1.66 or 2.00 and 2.75.

I decided it might be time to adjust the code to reflect a more accurate number for the percentage of posts where something was found against all of the posts on the board.

Keep in mind that when something is found in a post, it is only counted once even if that post contains multiple occurrences of the search term. It is counted this way due to the manner in which the search is coded.

Anther Busy Day

MAY 15, 2023

Amy's Birthday

05/14/23 06:00 PM

Well, you can probably see that I fixed the banner problem. I had some technology in place to show multiple banners, but was only using it to show one banner. The technology was working fine until it quit working. I still have no idea why.

To correct the problem, I simply removed the technology and put a simple image statement in its place. The image is called 'banner' so to change the banner, all I will have to do is to assign the current name to the new image.

On an unrelated note, Jonathan and Amy made the drive over and we celebrated Amy's birthday and Patty's Mother's Day. We went out to a massive flea market and followed that up with a wonderful Mexican lunch and a birthday celebration for Amy back at the house.

Finally, Patty assisted Jonathan and Amy and together they picked some items from Patty's garden before Jonathan and Amy put the goods in the car and started for home.

What a great day we all had.


MAY 14, 2023


05/13/23 09:35 AM

Have you noticed? I'm having technical problems here on the website.

The banner has just quit appearing at the top of the web page and I have no idea why. I'm not aware that it even touches anything I've changed in presenting my new posts.

It still shows up on the webpage on my cell phone but that could be a cache issue. They again, it may be something to which I should be paying more attention.

I'm able to point to it with the above picture and it shows up just fine. That only makes the mystery a bit more mysterious.

Why it just suddenly quit showing up at the top of the page truly is a mystery to me. When I finally figure it out, I'm sure I'm going to get a good laugh about it.

That is unless it just starts working the same way it quit. If that happens, I'm going to feel a bit perturbed. I hope I'm able to figure it out before it shows up as an intermittent problem.

That would be a bummer.

What to Post?

MAY 09, 2023

Scrap Book

05/08/23 12:45 PM

In adding blog posts, I really don't have a lot to say. That's why this blog has continued to take on the image of a journal or scrapbook. That's all I really have to share. Things to which I can return and upon which I can reflect, at a later time.

Technically speaking, I thought the blog would be fun. And, from a technical standpoint it has been a lot of fun. But I'm not interested in attempting to compete with the screaming match that is going on around me. It seems so many people want and need a lot of attention and that's just not where I find myself.

I set a difficult goal to publish a post each day. It has indeed been a very difficult goal. I say that because there are some days where I'm busy and have to work around writing and publishing a blog post. And, there are other days where I find myself scratching my head when it comes time to write content.

I suppose that's why it's good that I'm not trying to maintain anything that seeks an audience. That's a lot of pressure and I'm retired and trying to avoid that kind of pressure.

For me, this has been a relatively simple task. Why? Well, it's like I've already said. People are out there competing for attention. Just, not me.

Coming Soon!

MAY 07, 2023


05/06/23 07:30 AM

Coming Soon

(This page is intended to appear with the blog post below and [as mentioned previously] is here for a better visual understanding of that post.)

Coming Soon!

MAY 06, 2023


05/05/23 01:45 PM

Coming Soon

When I began to set up this website, I wanted to be able to view the site in a test mode and then move things to production when they were ready. That way I was able to do a spell check and get a visual feel for the accuracy of things before presenting them to the public.

Everything above this text appears when I review things in test mode. I keep it as basically a blank web page that I can copy and paste, fill in, and change the picture when I'm ready to add a new web page. I've intentionally left the test mode pages visible for purposes of demonstration.

There may be one or more blank pages that show up in test mode, depending upon how much I want to prepare in advance. Sometimes I'm writing a few days ahead and that allows me to publish when able on a busy day. Other times I'm writing a day ahead (almost never the same day) and usually publish around supper time for the next day's content. Publication may occur earlier or later that same day depending upon my schedule.

As I've noted before, the publication date is the date at the top of the page. The date and time the content was produced is displayed below the image. I leave a random date and time in that location that is to be over-typed when I decide to produce the content.

The purpose of that date and time is to provide clarity in case the content in a post is date and time sensitive. That's the only reason it's included and often may not even apply to the content for the associated post.

It's That Time

APRIL 30, 2023

Website Changes

04/26/23 07:30 AM

It's that time! I'll start this post the same way I did near the end of a recent month by saying it's time to do those end-of-the-month tasks here on the blog.

Time to update the menu, time to update the archives, time to create a new blog page, time to update the search function to include the new post, and time to build out the necessary infrastructure to support the aforementioned. Hard to believe we're already approaching the midpoint of 2023. Even more difficult to believe as of July 10th we will have been in our new home here in Ohatchee for a full year.

Had a wonderful chat with my daughter all the way from the Marshall Islands. It was about 4 PM on Thursday here which means it was about 9 AM Friday there. She mentioned she had just got the kids away for school and we settled in on a long chat.

Allie runs deep and my calls with her are always special. And, today was no different. I'll leave it at that.

Our handyman had a tragic mishap with his rental property so I had to wave him off of our appointment. Thankfully my son will be swinging by to help pick up the slack.

What a blessing to have such an incredible daughter and son. My calls, chats, and time with each are always amazing!

Website Updates

JANUARY 31, 2023

Website Changes

01/30/23 07:25 AM - #615

As I write, it's Monday, Jan 30th, Patty's Birthday, and we've got a lot of celebrating to do. As I publish, it's Tuesday, January 31st, and time to carry out some of my new monthly website update responsibilities.

As I mentioned several weeks ago, I removed a couple of my web features in order to speed up the process for publishing and to allow for more focus on my writing. Those changes have accomplished exactly what I had hoped for.

Not having a section for recent posts or a search feature have given back a great deal of time to the daily and monthly processes. I'm so glad to have that time back and no longer dread those processes as I did before.

Patty's got a doctor's visit this afternoon, but I suspect the day will involve a lunch out and some birthday shopping at one of Patty's favorite stores. It might even include takeout and a movie for supper to keep Patty out of the kitchen for the day and to keep us off our dark road this evening. We'll see!

Important Addendum:

01/30/23 6:20 PM

I guess I'm allowed to change my mind. After all I have said and written, I've decided to add back the search feature. I really didn't want to get rid of that one and it was not eating up as much time as the recent posts menu.

I've also discovered a quick and easy way to update the file so I've invested the time and effort to resubmit all of my newer posts into the search file. And now, all data (content) from all posts should be searchable.

This will also be the last post where I provide a post # since that data is presented anytime a search is performed. In other words, if the reader wants to find out how many posts are in the blog, simply perform a search and that information will be provided. I also like the other data that a search provides and (for that reason) am glad to add back that feature.

The Write Time

JANUARY 24, 2023


01/23/23 07:25 APM - #608

I've probably mentioned it before, but it probably warrants repeating. That's because some days I write the post well ahead of the point at which it is going to be published.

It may be confusing to any readers out there, so knowing the difference between the date and time I wrote a post and the date I published it can help the reader understand any date and time related context for the post.

Yesterday's post is a great example of my point. As can be seen immediately below the picture, I wrote it at 9:15 AM on January 22nd.

So when I mentioned the term yesterday I was referencing Saturday, January 21st. When one considers that I published it on Sunday, January 23rd (as can be seen at the top of the post) that could be quite confusing to any reader who wants to know exactly what happened and when it happened.

Another good example would be the January 20th post that I actually wrote on January 18th, two full days ahead of the publication date.

I used to add a footnote, but now I just call it an addendum. I always add the date and time to the addendum to avoid similar confusion. That's because addendums may be written at a different date and time from the post and are more likely to be added on the date of publication, and sometimes even later in the day where it might not be as likely to be seen and read.

So if you didn't know about the write time, or better yet the write date, now you know.


01/24/23 08:15 AM

Well, it looks like we got our first snow of the season last night. Lows were slated to be in the 20's so I'm not surprised. I was on my way out to the mailbox this morning to mail our HOA dues and saw what I thought was a heavy frost. That is until I saw something heavier and more serious on our roof and those of our neighbors.

Website Changes

JANUARY 10, 2023

Website Changes

01/09/23 04:55 PM

Well, this is not quite what I had in mind, but I went for some website changes that would save me a great deal of time with each post. It involved the removal of two things.

First, I removed the Recent Posts feature. One would not believe how much time was involved with supporting that feature for each new post. It's going to be an incredible time saver to have that feature gone. No more daily changes to the menu for example.

The second feature that I removed was the Search feature. Yes, I liked it but decided (as my son always likes to say) that the juice just wasn't worth the squeeze. The amount of effort required to add each post and make it searchable was far more than I needed to invest for so little return.

I still have a test page where I perform my initial work for each post and review before anything gets published. And now I only have one place to copy that post for publication unless it is to be added to one of the categories, which means I have two places to add it.

Even the monthly work is greatly reduced. There is, however, just a bit of it that remains in supporting the archive. And that I can live with since I consider that feature to be a critical piece of the bigger picture.

I will enjoy a smaller amount of effort and it sure makes the whole thing a lot easier and more enjoyable. Now, almost all of my time and effort will go toward content production.

I'm also planning to be a bit more careful about any associated overhead work required for updates or added features. Things that don't add much (or any) overhead work will be the first things in line for any new features I might choose to add.

Oh, there's one other thing that is worth a mention. Now, anytime I find a mistake in a post or want to make a change, it's going to be quick and easy. One place to test it and one place to publish it. It's that simple, as compared to the incredible amount of work involved in past fixes and changes.

New Website Stuff

JANUARY 09, 2023

New Website Stuff

01/08/23 06:50 PM

I have to admit, I decided to make some changes to the infrastructure of the website and did not think them through very well. By the time I had made the first changes, I realized that the current system design was not going to let me complete those changes. I guess I had sort of out-smarted myself with the initial design such that my new design was going to force a deeper rebuild of things than I was prepared to face.

The whole idea was centered around two things. First, I wanted to dramatically reduce the time it took to create a post since there are a lot of things that happen behind the scenes and that take a good deal of time.

Second, I was hoping to reuse some of the existing code instead of doing what amounted to duplicating it. The old infrastructure design was not going to be very easy to convert over to the new design I had in mind. I had confirmed that my new ideas would indeed work, and just proving that was a very cool and positive experience.

Unfortunately, the new design brought with it some serious road blocks that I had not anticipated and basically shut me down. Too bad because the new design had some very cool things going for it.

I've even thought about deleting some of the technology, such as the search functionality, but I realized that may be a valuable piece of the product further down the road. And so I left it in place, with all that it demands each time a post is offered.

I really like some of the ideas I came up with that would have capitalized more upon the include functionality and will see if there is any opportunity I might be missing to expand the use of that capability.

In the meantime, I'm back at the drawing board working on a new plan.


DECEMBER 01, 2022

Blogging 2

11/30/22 07:25 PM

It's always a busy time preparing the blog for the new month. As I have mentioned before, there are several things that commercial blogs do using code and that I must do manually since it's just not worth writing all of the code that would be necessary.

That manual work is a lot of busy work, but it's much easier to prepare and maintain than writing all of the necessary code to automate the process. Other than finishing and publishing this post, I think I have everything put together in preparation for the final month of 2022.

Next month (January 2023) there will be the additional task of updating the copyright notice from 2022 to 2023. I initially had to do that manually for each and every page in the blog, but a couple of years ago I coded an include. In that way, the new year only has to be updated in one place and is read and then written (included) in each page from that location. It's much easier and much faster now to update the new year.

I just finished watching Dances With Wolves. What an amazing film! I haven't seen it in a year or two but it always takes me into deep places when I watch it. I have no idea now many times I've seen it since it came out in November of 1990, but I'm sure the tradition will continue.



OCTOBER 21, 2022


10/20/22 02:45 PM

Had some more fun changing, and cleaning up, the format for comments here on the blog.

It's still possible to see what has been done without having to add a comment or do anything to the blog. Simply click on the "Display Comments" menu item in the left-hand menu to view what has been done.

Web Stuff

OCTOBER 20, 2022


10/19/22 10:00 AM

I made the normal changes to my system to add today's post. When I went to test the search function it was not working. Worse yet, I hadn't tested in a while and wasn't sure how far back I might have to go to find the problem.

Usually, I know exactly what the problem is and just have to go and do a hunt for the location of that known problem. Unfortunately, that was not the case today.

I went through a lengthy process of deleting and adding back code in an attempt to find the problem. The problem was difficult enough that I seriously considered doing away entirely with the search function. That is, until I found the problem. Apparently, back on October 12 I did a sloppy copy and paste and left out some critical code.

That's what broke the routine. And once I knew what the problem was, I was able to copy some good code from an existing post and set it against the October 12 problem post to get the whole search routine working again. Problem solved!

While I was doing the code thing, I decided to add a date and time function to user comments. It went much better and faster than I expected and seems to be working well, although no one has yet used the comment feature. Oh well, the coding is fun anyway. And, if you want to see the new feature without adding a comment, you can still click 'Display Comments' over in the menu to see the evidence of the new change.

My greatest challenge continues to be the amount of time it takes to add a post. As I've noted before, I have to do several things to simulate what a tool like WordPress does in a more automated fashion. And as I've also noted before, the juice is just not worth the squeeze to try and add that functionality to my system. Either way, it's a lot of fun and that's why I keep at it.


OCTOBER 01, 2022


10/01/22 06:40 AM

Well, it's a new month! And with a new month comes a busy season in the web development side of the house. There are new test pages to be built. Along with that, there's new archives and primary pages to be built. There are new labels to be affixed and a whole load of other new things to be constructed.

It's property tax season too. Statements are mailed out the first of October here in Ohatchee. And, the yard cutting season is also coming to an end.

We're just over a week away from our three-month anniversary here in the new house, (new to us anyway!) and with it there are some odds and ends to take care of such as repairs on the garage door opener and the ice maker.

The winds and Fall chill are already in the air and we're looking forward to the kind of lower temps we haven't experienced since we lived in Douglasville. Elections are just around the corner and Thanksgiving and Christmas are waiting in the aisles.

There are so many good things yet to come before we wrap up 2022 and start our journey into 2023!


SEPTEMBER 19, 2022


09/19/22 07:30 AM

Well, the more I build in PHP, the more I learn about why things are the way they are. I'm talking about those crazy messages to which I have to respond to prove I'm not a 'bot' or anything like that.

I chose to do sort of the opposite. If someone doesn't leave their name, then I don't send an email to my account. If someone does, then I send the email notification.

A bot can't leave it's name so I shouldn't get emails unless someone really created a message and left their name to confirm who sent it. Of course if someone leaves a message but doesn't leave their name, then I won't be notified.

That's the downside of what I'm having to do to avoid the 'bot' problem.



More on Bots

09/19/22 07:55 AM

Well, it just hit me that a comment is required and if comment is blank, then the visit has to be from a bot (or someone who only visited but didn't leave a comment or a name.) Either way, that works better.

So, I'm checking to see if a comment was left (since it is a required field.) If none was left, then send no email because it must have been a bot. If a comment was entered, then it's not a bot and I send an email to my account.

New Features

SEPTEMBER 16, 2022

Website Update

09/15/22 07:15 PM

I've added two new features over in the upper portion of the left hand menu. One is for adding a comment and the other is for reviewing comments. If you want to add a comment, feel free to view them first. It's up to you.

I know I said that I don't really expect a community of readers. But it's still fun to build new features that would be put to more good use if I had a community.

I've always felt sort of odd that I have never included anything to allow responses from those (imaginary) readers. But without a readership, only now have I decided to try my hand at building a comment feature.

I could take what I've done and multiply it such that comments might be added for each post. But, without a real community of readers it's just not worth it to build (and maintain!) the necessary infrastructure.

And so, I'll see if there are any real readers out there (beyond my faithful and loving wife who always reads and has a word of encouragement for me.) No expectations but I thought it would be fun to see if I could build something simple - and especially without having to add any database/SQL features. I've been there before and am not real interested in going back again anytime soon.

New Web Feature

SEPTEMBER 06, 2022

Rep Map 2

09/05/22 05:30 PM

In the left-hand menu, I added a new feature in the repeater section to display a map of the repeaters I can reach. It corresponds to the Repeaters by Channel page and displays the locations of those repeaters.

I'm still amazed at the distances I can reach with this mountainous terrain that we have up here in the northern part of the state. Even in some points south, such as Cheaha Mountain at just over 4,000 feet, we find prominent repeaters that are well known throughout the south for their coverage, due to their antenna elevations.

I'm up to 19 repeaters, including one in Summerville, Georgia that was very active with the recent flooding that occurred up that way and that made the news. The reports I was hearing from that area were absolutely amazing. And so have been the video reports that I've seen in the news. Incredible!



John Frederick Banzhaf

09/06/22 07:45 AM

Today would have been my cousin's 67th birthday. We lost him just over a year ago as he was approaching his 66th birthday.

Long ago, I used to call him up to wish him a happy birthday and then would call my sister the next day to do the same. I still call my sister each year, and that call is a reminder that my cousin is no longer with us.

Johnny is survived by a son, (Forrest) who was named after my Father, as was I. His son now lives with, and is cared for by, a niece (Liz) and her other half (Josh) up in Atlanta. I look forward to seeing them and my sister and the rest of her crowd at our Thanksgiving celebration this year.

PHP Code

AUGUST 25, 2022

PHP Code and Logic

08/25/22 06:55 AM

The problem with making changes to the PHP code on this website is that I don't do it often enough to recall everything I've learned. Also, there is so much more to learn and figuring out how to use those new things takes time.

Yesterday's code changes are a good example of what I'm talking about. I somehow forgot that the = (equal sign) in PHP is actually a == (double equal sign) and it's the same for the !== (not equal sign.)

Worse yet, when PHP fails it generally results in a blank screen. So, you have to change or delete code and retest until you find the problem. This can be a real pain and a minor problem related to a simple code change can take quite a while to diagnose and correct.

This was the case in yesterday's changes to my search logic. Putting in the double equal signs fixed one of my two problems.

The second problem was a bit more subtle. It was not a code error, but rather a logic error. By testing several conditions, I found one that did not respond properly to my logic and had to rewrite my code to include that particular scenario.

Turns out that with the high number of posts I have, I can hit a condition where my search finds a hit but the percent of total still remains at zero. I wound up having to hard code for that scenario by injecting a statement that displayed a less than 1% to cover the situation.

I wonder if my logic failed to account for any other unique scenarios like that one?


08/25/22 07:55 AM

PHP Logic Example

If you want to see a realtime example of what I'm talking about, try typing in the word the in the search box in the upper right-hand corner of your screen and then press the search button. Scroll down to the bottom and it will reveal the condition I anticipated.

Now type in hello and press the search button to see a realtime example of the other condition that I failed to anticipate and where I had to hard code the less than 1% PHP statement.

The logic I wrote into the code checked for two conditions. (First) the average had to equal zero and (second) the number of hits must not equal zero.

New Lunch Hangout

Patty and I rode over to our Walmart for grocery pickup yesterday, and went searching for a good place close by where we could eat lunch. We are big users of Google Reviews and almost missed our new favorite hangout due to a couple of bad reviews among many good reviews.

We were thinking Mexican and had tried Old Mexico and took a risk and tried El Patron. The place was nice and clean and while not quite as new as Old Mexico, the food was much, much better. I think we've found one of our new lunch hangouts!

Two More Logic Problems

08/25/22 11:55 AM

I found two logic problems with my PHP code. After the PHP checks for the two conditions I mentioned above, it should also check for one condition (were there any hits on the search) and if the condition is not met, the message I added (with the percentage) should not be displayed.

For the other condition, even if no hits were found, I would still like the user to be informed of the search duration that is not showing up.

Problems fixed!

Time Flies

AUGUST 24, 2022

Time Flies

08/24/22 07:15 AM

Wow, where does the time fly? It's already Wednesday and only a week away from September!

I can't say enough about the great job the guys did in the yard yesterday. Sounds like every other Tuesday will be our yard day from now on.

Looking forward to a lunch out with my soul mate and picking up the groceries, especially since we're buying some new plastic utility shelves for the carport to get everything up and off of the ground. Should be a very nice change.

Will be interesting to see what we choose for our lunch out today. Not much else to report.


08/24/22 07:45 AM


I think we've converted our cat into a monster. We've let her become a part-time outside cat and I think she wants to go full-time. All she does now is fuss about wanting to go outside, even if we're both inside. What to do?


I got off of Facebook (again!) about 3 or 4 days ago. It started out as a way to avoid any response to my upcoming birthday, and finished as a means to get away from posts for the upcoming 50th class reunion, not to mention our neighborhood facebook account. I just don't care for being social in those arenas.

Just read on Twitter that Facebook has experienced a major hack and it is affecting many of their most followed accounts. Interesting!

Search Function

08/24/22 03:30 PM

Just modified the search function to provide a percentage of total posts where the search string was located, in addition to the total number of posts where the search string was located.

More Repeater Stuff

JULY 27, 2022

Repeater 2

07/27/22 06:55 AM

I made some more changes to my repeater page based on new repeater research. There is now a 'notes' section that explains what I'm doing and what I'm finding.

The repeater page can still be accessed via the left-hand menu near the top.

Three Things

JULY 19, 2022


07/19/22 08:18 PM

This post will be short and sweet since it's late. I spent most of the day 1) moving the j-pole antenna outside and 2) completing the building out of my list of all the repeaters that I can hit and 3) adding a new feature to the website to present that repeater list.

On the left menu right near the top, I've included a new menu item for the repeater list. Feel free to check it out.

I was quite surprised at some of the repeaters I was hitting and especially for Cullman, which is quite a distance away.

I was also pleasantly surprised at getting the hole drilled through the outside wall of the house where I could feed the coax to the antenna from the rig. The difference was night and day!

Website Visits

MAY 24, 2022

Website Visits

05/23/22 07:25 AM

I've mentioned the log I built for my website. If I haven't mentioned it, I also constructed a PHP viewer that will display my log of visitors to the website.

Over time, I've expanded the functionality of my log and the logging program. I already had been logging the city and country from which the visit took place, in addition to the more technical things like the IP address.

I wound up deleting the old log a good while back and built a new one around ten days ago. I've gone back and added a field to each row of data that states the visitor's organization. For example, Amazon or Google.

Like before, most of the visits come from web crawlers that exist to build indexes for the website pages that they crawl. These indexes provide for faster access to those pages when a person goes searching for something on the web.

If a visit is made by a crawler, the logging PHP program now adds the name of the organization that owns the crawler. If a visit is made by an individual, the PHP program adds the name of the company used by the individual to access the web. For example, GoDaddy or Verizon.

Over ten days I've had 363 entries provided in my log. I've also manually added the organization name and IP address from those log entries to my logging program. So, as the log obtains more entries the logging program becomes smarter and is able to provide those organization names for future log entries. It accomplishes this feat by using the IP address as the unique key for each entry.

It's pretty cool to see the PHP log program gain artificial intelligence and to see the website log automatically capture those organization names based on the unique IP address from a previous visit!

Foot Notes

05/23/22 12:37 PM

Flash! Had to do rescue #3 today. The first two were baby rabbits but it turns out that this rescue was for a very young gray squirrel that was able to stay rested and alive by finding a place to hold on at the opening of the automatic skimmer. Fortunately for him the skimmer wasn't running because the water flow would have probably pulled him in without providing much opportunity for survival.

On an unrelated note, it seems like the weather forecast will often call for several days of rain with each day being forecast to provide a full day of rain to our area. Fortunately, or unfortunately, that rarely if ever happens.

That's been the forecast lately but the rain seems to come and go during those days with a much smaller overall level of rain-fall then was called for in the forecast. I'll be expecting multiple inches in the rain gauge only to find somewhere between half an inch to an inch on many of those days. Today may be shaping up to be one of those days where multiple inches really do arrive.

On a different note, I got a run in and a lot of weeding before the rain arrived. Hopefully the rain will hang around for the rest of the day. We sure could use the water on the grass. And, I've got to do something about those darn weeds!

Oh, and by the way! I saw something on the weather map yesterday that resembled a late-stage (disorganized?) hurricane. It just missed us to our east (over near Pensacola) and turns out (according the what my wife saw on the local weather reports) to have been a late-developing system that formed just off the coast before making landfall. Interesting!

More Blog Updates

MAY 16, 2022

New Blog Update

05/14/22 7:55 AM

I added back a web log yesterday (Friday, May 13th) and it's been interesting to see the locations where the hits are originating. I can't tell who's there, but I can tell that the hits are coming from users who are clients of the web service providers that own the pool of IP addresses from which the hits are coming.

I also intend to add back the capability to keep my IP address logged so that I can eliminate any logging activity that comes from that IP address. That will allow me to make changes to the blog without those updates presenting log entries.

I'm also anticipating adding back the capability to see website stats for the hits on the menu and various pages on the website. It will be interesting to see what's being reviewed and how often, and also whether or not the hits are coming from users via web providers or web crawlers owned by folks like Google.

More on that to come as I get things developed.

Foot Notes

05/14/22 03:50 PM

Well, in paragraph #2 above, I went ahead and wrote some code with a hard-coded IP address in it. That should suffice in the short-term, since my IP almost never changes, but I'll need to update that code to remove the hard-coded IP address and ensure the tested IP address is the current IP address - just in case the IP address does change.

From paragraph #3 above, I went ahead and finished up the hit counters for all of the pages I built. I won't be tracking visits to other sites, but will be tracking all visits to anything I have built, which turned out to be 15 pages in total.

I want to dabble with some more changes to the tracking of visits and the logging, but am not quite sure what I want to add. More to come on that...

While I'm able and usually do write at least a day ahead of anything I publish, I've also added the capability to review unpublished material as it will appear when it is published and have been enjoying that feature for a while now. It's pretty cool the way it works!

I've also manually added the owners of the webcrawlers and web service providers to the log entires and plan to add some code to do that automatically. That should be an interesting project! (Addendum) In fact, I've been doing some of that today (05/15/22) and it turns out to be a very interesting and challenging project!

05/15/22 7:00 PM

Finally getting some much needed rain as can be seen below.


More Search Updates

APRIL 20, 2022


04/19/22 11:25 AM

One of the things I failed to test, and therefore failed to incorporate into my updated search routine, was the former test on whether or not a search term was entered and how it was handled if it was not found. I kept getting odd messages from a PHP program that was behaving as if a search term had been located in the search file, when in fact it had not.

I wound up having to nest if statements (first) to check for whether or not a search term was entered and then (second) to check whether or not the search term was found in the search file. I had not ordered the logic correctly, which was producing the odd messages.

Reordering the logic and ensuring the syntax was correct both took more time and effort than I had anticipated. However, in the end I got it working and haven't received any more odd messages being presented by the search PHP program.

Foot Notes

04/19/22 05:56 PM

On the weather front, we've had two and a half inches of rain in the past week. It all started on Thursday April 15th with our new rain gauge capturing one and a half inches followed on Saturday by a quarter inch and then again on Sunday with an additional inch.

While Alabama ranks #4 among states with the most rain per year, our neighbor (Mobile, Alabama) ranks #1 among cities with the most rain each year in the U.S. We have most certainly experienced that rain over here in the Spanish Fort, area as well. Only Hawaii (63.7"), Louisiana (59.15"), and Mississippi (56.8") lead Alabama (56.0") in terms of annual rainfall averages.

Another Search Update

APRIL 19, 2022

More Web Stuff

04/18/22 10:22 PM

I decided to further expand the functionality on the search feature. I wanted to know how many posts there were and how many of those posts contained the search term.

I actually wanted to know how many times in total the search term was found, but writing the code for that would have been far too time consuming. I was able to use the search and replace all function once to simply and easily add code to each post in the search file that would obtain the number of posts containing the search term, whereas I would have had to manually update each and every post (376 posts as of this writing) to find out how many times in total the search term was found.

So, I went with the easier route and was very excited to see the program work and produce results. Now when a search is performed, the program will report both the number of posts and the number of posts containing the search term.

On a related note, I've noticed that a search sometimes will run slower on the first shot than on subsequent runs. I'm guessing there's some caching going on to produce that kind of result.

Still, it's all pretty cool to me!

Search Feature Update

APRIL 18, 2022

Website Update

04/17/22 12:31 PM

Well, I finally went back and performed the update to the website search function that I mentioned in a previous post. I used PHP to record a start time and an end time (based in seconds) and subtracted the former from the latter in order to determine the length of time used to process the search of all posts written to-date.

The difference was always less than one second so I decided to make the search file larger and see if that made any difference. I tripled the size of the search file by copying it back to itself two times, in addition to the initial file that already existed.

To my surprise it still performed a search in less than one second. In order to check my work, I confirmed that I was getting 3 results for each search, one for each of the copies I had built into the file when I tripled its size. Based on those results, I'm guessing it's going to be a long time before the search time extends beyond 1 second and the coded message for that condition executes.

Foot Note

04/18/22 10:05 AM

I got the microtime function working, which means I am now reporting sub-seconds. I will go ahead and post this and then add to these comments when I get the format function working.

That function will allow me to reduce the length of the floating point time output. In fact, as I typed floating point, I realized that it might be easier to convert the floating point number to a string and shorten the length of the string.

More to come very soon...

04/18/22 10:27 AM

I was able to format the search time by converting the floating point number to a string and then using the substr function to reduce the total length. It all seems to work well now!

I was also very surprised to see how little time the entire search took. At the present file length (743,158) my search took .00136303 seconds. That's 1.36303 thousandths of a second.

That's very fast and very cool!

Search Function Update

MARCH 25, 2022


I spent a good amount of time today attempting to update the search function I created here for the website. I like the way the function works, and it works quickly. However, I wanted to see how quickly so I set out to have the search php program also calculate the amount of time it took to run and display that value in the search result output.

Each time I create a blog entry, I add it to the file that is searched. Currently there is about 700k of data in that search file. Much to my surprise, the php search always runs in less than one second.

I found the microsecond function that I could have used to display the exact value in microseconds (parts of a second) of the start time subtracted from the end time. However, the server does not support the microsecond function so I got shot down on my attempt to create the update to the php program.

As a result, I let the php program simply display the < 1 second message based on the fact that the seconds value in the start time and end time is always the same. I'll test that difference from time to time and if it ever goes over one second, I'll update the process to reflect the math and display the actual calculated value in seconds in the output.

Archive Update

FEBRUARY 27, 2022


I was testing my search capability and, just like in other instances, discovered an anomaly. It seems that a search pointing to the current month still points to an archive even though no archive exists for the current month.

No archive exists for the current month because posts from the current month are located in the index file, which happens to be the primary set of posts and the set that comes up whenever the site is visited.

To remedy this problem, I simply built an additional archive file for the current month and will have to add posts for the current month both to the index file and to the archive for the current month. It's one more thing to remember but corrects the misleading message produced by the search feature that pointed people to a current month archive that did not actually exist.

Just one more reason I enjoy building the code for this blog and the challenges associated with fixing website problems, even if they only arise from misleading messages.


P.S. I'm still enjoying using Microsoft Word to spell check my work. It sure has been helpful for spell checking words I didn't know as well as careless spelling mistakes.

Microsoft Account

FEBRUARY 22, 2022

Microsoft Account

When I purchased the new PC I'm using, it asked me to enter my Microsoft Account. I've never really seen any benefit from having that account, but decided to be a good lad and look it up on my phone and enter it during the setup.

Well, yesterday I accidentally brought up Microsoft Word and my Microsoft account remembered I own a copy of Word and actually brought it active for me. How cool was that? I certainly wasn't expecting it.

And now, with my new and verified copy of Word, I was once again able to start spell checking my posts. I went back through all of February and then went through all of the posts for the category lists.

At some point, I'll go through the past months and get everything cleaned up. That's been really bugging me as I knew there had to be more than a few misspelled words and even a bit of grammar I could clean up. And both did indeed need some attention.

Never thought I'd hear myself say it but, thank you Microsoft!

Website Video Test

JANUARY 19, 2022

Still Under Construction

JANUARY 04, 2022

Under Construction

Yesterday, I finished adding back all of the entries in the archives and also finished updating the posts in the categories and the related menu work.

Here forward, I am working on the search feature and hope to spend some time editing my spelling and working on the most recent posts.

It's not like I have an audience that will use these features, but working on them (even if just adding them back) is what I enjoy most about working with this website. I look forward to dabbling with the other ideas I might be able to bring to the table.

Under Construction

JANUARY 03, 2022

Under Construction

The website may look a bit wonky for a while since I'm working to add some technology back that I had removed a short while ago. I'll have to put the stuff back and add the technology updates that fall between the time I removed everything and the present.

I haven't decided how much of the technology I want to put back of everything I removed. I'll try to figure that out along the way, or quit when I get tired - which ever comes first.


Computer Hacking

DECEMBER 22, 2021

Computer Hacker

My first computer was purchased back in the late 70's. I've seen a lot of firsts in the technology sector since that time.

I saw laptops show up on the scene. The first of the heap were very clunky. I saw dial-up modems and ram memory starting at 4k. When 32k hit the scene we couldn't imagine anyone needing that much, other than maybe a business.

I saw the internet and the world wide web become popular. I saw client/server when it arrived. Oh my, I could write a book about all of the firsts that came along. But, there's one arena that showed up with little fanfare and shocked all of us. It was the world of computer viruses, worms, trojan horses, etc., and hackers!

I built a very simple virus at my office, way back when, just to see if I could do it and to see what I would do to protect against it. The level of sophistication in that world that has now taken hold came in quickly and has taken off without me. In other words, there's no way that I (or anyone else for that matter) can keep up with all that has happened in a very short time.

Fortunately, I don't need any sophisticated protection. Even this blog, which is not well protected, has no real intrinsic value to me. If someone wants to hack it, I'll start over.

In fact, I used to keep a log of all my website visitors with a PHP program that I wrote, and someone hacked it. They didn't actually hack the PHP program, they inserted their malicious code in my log. And, when I went to use the other PHP program I wrote to view the log, it of course executed the code the hacker had inserted into the log and sent me to a website where I didn't want to be.

I exited the site quickly, and fortunately without incident.

Finding the hack was not so fast... or easy...

Gaming Systems

DECEMBER 20, 2021


I've been researching gaming systems for a family member and am amazed at how much has and has not changed over the years. Gaming systems are all about system performance, and that is an incredibly complex area in which to become an expert. There are so many dependencies in that arena.

I spent a lot of years dabbling with system performance across a wide variety of environments including mainframe and client/server, not to mention desktops and laptops. At the end of the day, performance means one of two things.

Either you have a bar you have to reach in terms of performance requirements or you are trying to determine the limiting factor in a specific architectural scenario. Once the limiting factor has been determined, more resources can be added. At that point, performance requirements have been met or the search continues for a new limiting factor.

In the gaming world, the application can also be a limiting factor. Is the application smart enough to use all of the hardware? For example, can the application use multiple cores and multiple threads?

It will be interesting to watch this scenario unfold and discover the results.

High Speed Internet

DECEMBER 13, 2021


There are a number of benefits to the new place including access to high speed internet and streaming services to go along with it. We had little of either in the old place since we were out in the sticks. Needless to say, being away from everyone and on the ocean came with a stiff price for a lot of things.

When we first moved to the old place, I was still with IBM and used a cantenna from Verizon to access all of the internet I needed for the job, even with video and the strong online focus. The cantenna was destroyed during hurricane Michael and had to be replaced due to the surge.

Interesting that just after I retired in July of 2018, Verizon did away with support for the cantenna I had been using and so I pretty much did away with internet, except for what I could get with my laptop tethered to my phone. Basically, it was just enough for things like email and blogging. Plus, I no longer had IBM to pay for my very expensive internet, so it just made sense.

Well, now we're enjoying affordable high speeds and all of the bandwidth we need for streaming, not to mention pretty much anything else we may want to do in the future. With the more demanding needs I picked up a powerful new laptop at a surprisingly good price and have been delighted with its performance. I forgot how nice it was to have a fast laptop that no longer required me to wait on things.

Back to Blogging

DECEMBER 10, 2021


Well, it was bound to happen. I just enjoy the technology far too much to stay away from it for very long.

We put our house up for sale in June of 2020 and I dropped out of the blogosphere. We sold the house on August 12, 2021 and purchased the new house on August 13, 2021. And now, several months later, I've tailored the blog to suit our new lives and brought it online again.

I've left some of the old stories, pictures, and posts from our time on the water in Florida and look forward to sharing our stories of the adventures yet to come on our journey.

I started to put a title on this blog entry of Blog 2.0 but the truth is the version is much higher than two by the time you count all the years I've been blogging and the number of times I've restarted.

Once again, this blog is more a journal or scrapbook than anything written with the expectation of a readership. Still, if you have dropped by, I welcome you and hope you enjoy your visit.


Today I'm adding a new feature called Side Notes. I'll be announcing this new feature for the next few days in case anyone misses it. I tend to write a day ahead and, as a result, some of the things that occur and might be worth writing about go without attention here on the blog. It has happened often enough that I want to make the change.

Side notes will be located at the end of the daily post and, as I said, will reflect any additional things that might be worth sharing on the day that they occurred. They will be added after the daily post goes out (and may be added more than once in a day) so it may become relevant to check back on a previous day's post for any side notes that might have been added.


MAY 10, 2021

Website Categories

Even though I've chosen to take my website and generally aim the design in the direction of a blog, I've still taken some liberties that aren't quite in keeping with traditional blog designs. You don't have to look very far to see some of the differences.

Once such example is that I've taken a bit of liberty in the way I'm treating Categories. You may notice that I've grouped them with my Home button. This could be a bit confusing to the user, but it has spared me going in directions with my code that I just didn't want to go.

First of all, there are a number of posts that will be viewed by clicking on Home that will not show up under any of the other categories. This is because they're probably not topics about which I write that often. In fact, I initially didn't have any categories listed and only added them in later to help those who might be interested in reading about a particular topic or two.

With this post I'm introducing a new Ham Radio category since it's an interest that earns a lot of my time and about which I've either written or mentioned in more than a few posts. It's also the focus of my Twitter account so I wanted those who might visit this site from that location to have easy access to posts (or mentions) from that category.


MAY 06, 2021

Laptop Stuff

The hard drive on my laptop has been slowly but surely dying. There have been plenty of warning signs and I've been fighting things and putting off the obvious for a while now.

It started when my laptop was doing disk scans and fixes pretty much on its own. And, since that started it's only gotten worse. Anytime I booted the machine it started a disk scan, so I knew things were getting bad.

Then it started slowing down rather dramatically so I was pretty sure the hard drive was being forced to dance around an ever increasing number of bad spots on the drive, although I had not yet gotten to a point where I had lost any data.

I purchased Patty and I the same HP laptop, but she resorted back to her nice desktop and packed her laptop away. Well, that saved me the time and money of having to buy another one, so I started the arduous task of saving everything on Patty's laptop and transferring everything on mine over to hers.

There were quite a number of significant projects that came with the transfer. Included in the list was the wsjt-x ham radio program that I use, which was by far the most demanding of the projects. There was also my Filezilla program and all of the files for this website. Fortunately, those were copied on the server so I wasn't very concerned about losing anything on that particular effort.

There were several other pretty substantial projects that came into play as I continued the transfer, but one of the more troublesome was bringing Patty's old laptop up-to-date with both the operating system and the security system. I don't think I realized what I was going to be up against with those!

On some of the larger efforts, deciding in what order to perform the required tasks was also a rather complex item to manage. Fortunately, that's the kind of thing I enjoy and since there was no deadline looming (except for my concern about the ultimate death of my failing hard drive!) I was able to plan it out and execute the plan step by step.

It's good to be operational once again!


APRIL 16, 2021

Code Wars

More PHP coding wars!

I say that because sometimes coding turns out to be a real war, or at least a battle anyway. And, sometimes the difference between success and failure on that battlefield can be whether I'm coding something wrong when I know better versus coding something wrong when I simply don't know any better.

I know those two sound similar, but what I'm trying to say is that in the former case I'm breaking a coding rule that I know exists and in the latter case I'm breaking a coding rule that I don't know exists.

The latter was the case today when I was trying to make another simple adjustment to update the same online weight log program that I updated yesterday. The problem that I encountered was one I definitely wasn't expecting.

To put it in the simplest terms I know how, I was putting too much complicated PHP code into single lines. It turns out, as a result, that the PHP interpreter could not resolve my code. I had to break those single lines into multiple lines so that the interpreter could better understand my intentions regarding the order in which things were to be done, also known as the order of execution.

I have to chuckle at myself for the amount of time and effort I put in for such a small (and apparently not as simple as I thought) change. All I was trying to do was tell my program not to display data without at least one decimal value. If my weight was saved as 173.1, it would display 173.1 but if my weight was 173.0 it would display 173 without the decimal and trailing zero. I wanted to make sure the result was 173.0 and not just the whole number.

So much for my simple code change!


APRIL 15, 2021


I decided to update my private and unpublished weight tracking program to provide me with additional stats. I already had engineered logging the data in a text file using PHP and reversing the file order so that the most current information is at the top of the list.

In this iteration of my logging program, I have it calculating and displaying the highest logged daily weight, the lowest logged daily weight, the average daily weight, and am displaying all of this, once again, at the top of the list of data.

I learned several things in the process of making this update. First and foremost, I had to figure out how to strip the daily weight value out of a long string of daily data. I also had to figure out how to convert PHP strings to numeric values and came across the floatval feature for that one.

Amidst all of this, I spent some time fighting syntax errors, mostly because I wasn't being careful with nested if statements, my semicolons, and the separation of my variables. Pretty common stuff! And using the freestyle that I tend to employ, even more common.

I guess for me, the fun comes from two things. Just designing the logic and writing the code that yields a solution is quite rewarding. But, the rest of the fun comes from the puzzles that must be solved during the debugging process. And like I said, using my freestyle approach to coding is bound to deliver a few exciting opportunities for debugging.


MARCH 30, 2021

Weight Tracking

I've kept my online weight tracking system privately published, but have really enjoyed all I'm learning about text file management with PHP and HTML. It's been very interesting, as usual, to see just how much code is already out there and available to be adapted and adopted to meet my needs. and are great for purposes of research, but I particularly like and the interactive nature of Q&A on that site. I've found solutions for a great many of my needs on that particular site, and I've even managed to find plug-and-play examples for some of the code I needed. Best of all, everything I try to build brings with it a great deal of new examples and sample code that can be reapplied in future projects.

In my private weight tracking system, when I input and store the data, PHP defaults to store the data with the most current entries at the bottom of the file. That's fine with me overall, but it doesn't provide a very good user experience (UX) in some cases.

For example, I don't want a user having to scroll down through a long list of data to get to the most current entries. I would rather have them on top of the list so they are seen up front and on top. To avoid that problem, I found the following:

$file = array_reverse($file);

Applying a simple array_reverse allows me to reverse the order of a stored text file. That combined with a simple echo command re-sorts and displays a file with the most current data at the top of the list. Just what I wanted!


MARCH 18, 2021

Bug Fixes

I mentioned yesterday that I needed to correct a bug (problem) with the way my online log was performing. It works, but it's not performing in the manner in which I intend it to perform.

Turns out I am able to just click the Comment button (for the online comments) or the Submit button (for the online weight tracking log) without entering a respective comment or daily weight and the result is a blank row of data in the file.

I discovered the ability to make the comment and weight fields required to prevent this problem from occurring. It was a nice and easy fix once I searched the internet to find a coded example of the required attribute for a form field. That's all it took and things shifted to good working order.

And, now to chase down the coding approach to sort and save the file with the most current row up top and the least current row at the bottom. I don't want to have a user scroll through a large set of data to locate the most current information.

This coding exercise may prove to be a bit more difficult than I would have anticipated. That's because similar coding examples that I've seen so far have tended to demand a lot more effort than I would have imagined.


MARCH 17, 2021

Online Weight Log

I set up a private online weight log using the same technology I developed for entering and reviewing comments - except I'm tracking my weight on a daily basis and publishing it privately.

I'm basically doing this to shift my weight maintenance log from my computer to my phone. I like the idea of having that data readily available no matter my location. I also like the idea of being able to enter that data remotely.

In yesterday's post, I mentioned a bug in terms of the way this new technology performs versus the way I want it to perform. I'll have the same problem with this new online weight log until I determine how to correct it.

I also want to make one other change and track the new data at the top of the log instead of tracking it at the bottom of the log as is currently the case. I've seen coded examples of this and hope to be able to plug in the new code and make the desired change. If/when I get it working, I would like to inject the same change to my comments feature to keep the most current comments at the top of the log.


FEBRUARY 27, 2021

Website Archives

As a new month approaches, I know it's about time to get in gear and prepare a new archive for all of the posts in the most recent month. It's definitely not worth trying to automate the process as is the case with most modern blogsites. And, to be honest, the required effort to archive the previous month's posts in a more manual fashion does not involve much more effort than is required just to publish a new post.

The archival process is something I look forward to because it demonstrates continued progress as more and more monthly archives are generated. And, I've been true to my (until now) unspoken goal of creating a post each and every day, which makes the archival process even more worth while.

I also like the button I generated for the archives feature over in the left-hand menu and the way it ties into this monthly effort. The button presents a nice alternative versus other options when it comes to saving website real estate over in the menu area.

If I should add more categories, I'm thinking about adding the same functionality there as I have in he archives section. However, I'm quite a distance from taking any definitive steps in that direction. I'll need to generate enough posts on a single topic in order to justify such a new category. Presently, spiritual, running, and website tend to earn most of my attention when it comes to website posts.


FEBRUARY 08, 2021

Website Visitors

My writing posts here on the blog, designing the website, building new features, getting creative, and dabbling with the technology all have one thing in common:

I don't do any of them with the aim of engaging an audience.

I know, it sounds a bit odd.

But, it's true.

Every now and then I will write a post like this one just in case the rare visitor drops by and doesn't happen to read my about page, where I have also explained a few of my reasons for doing what I do here on the website.

The logging feature that I built will indicate I have visitors from time to time. But again, that's not the goal. All I can really see in the log is that I had a visitor visit my website via a web service provider or I had a visit from one of the countless web crawlers that serve all of the major and lesser known technological organizations.

So, I don't know anything about the individual users or the folks working behind the scenes with the corporate crawlers. And, I haven't added any comments capabilities either because connecting is not why I do what I'm doing here.

The times on the log entries also provide a hint as to the origin of the hits. For example, a web crawler usually just hits a page and moves to the next one. So, from one hit to the next from that crawler, the time intervals between hits are usually quite small and insignificant.

On the other hand, a legitimate user working via a web service provider will take the time to read various pages. And, the time it takes to do that also shows up in the log and tends to suggest that it was indeed a user who visited. That's about as close as I come to engaging an audience and serves my purposes completely.

Believe it or not, I actually had a user who was able to add some malicious code to one of the fields in my log. The program that I wrote to display my log also executed the malicious code as the user must have intended and anticipated. For anyone who is curious, that's what is known as a SQL injection and was executed by the PHP program that I mentioned I had written to display the log.

Fortunately, the code that executed initiated a sequence of events that required a response from me to proceed. While the request for a response looked very legitimate at first glance, it still looked just suspicious enough to tip me off before I responded. And, by closing things down without responding, I was able to prevent any damage to my system.

Chasing that code down, to determine the origin of the problem, was quite an interesting exercise. It was my first exposure to malicious code presented via a SQL injection and my first ever exposure from the victim's side of an event.

That's just one more reason that I enjoy building and adding to this website. There's so much to learn about so many aspects of the technology, especially including security and the efforts from hackers made against the code I write.

Still, if you are reading this and want to reach out to me for any reason, feel free to use the CONTACT menu link in the left column or follow the right column to my Twitter account and ping me there.


FEBRUARY 02, 2021


I'm always impressed with all of the coding examples that are just waiting to be discovered out on the web. I'm especially amazed at how much there is to learn by plugging in the code and then making very small changes to try and achieve a specific result.

That was exactly the case last night as I went about trying to develop a dropdown box for the menu access to my archives. As I continue to add monthly archives, the entire feature has begun to occupy too much website real estate so I wanted to recapture space by converting the whole thing to a dropdown box.

I didn't like the simplistic examples that used web forms to accomplish the task. I'm not real excited about the idea of having to select an archive from a dropdown list and then hit a submit button to be taken to the appropriate archive. I wanted to produce what I've already seen on major blogging sites where an item in the dropdown box list is selected and automatically delivers me to a specific location in the blog.

I also wasn't really excited about debugging javascript to achieve the effect and found a CSS dropdown button example that looked very enticing. I plugged in the code and then started dabbling with the CSS in the primary style sheet until I got things just the way I wanted them.

It was a great learning exercise and a lot of fun to build it out and tailor it to meet my needs.


DECEMBER 29, 2020

Blogging in 2021

Well, I went back to my ideas of two day ago for blogging in 2021 and decided to make a go of it in a very different direction. I updated that post but wanted to also mention it here.

Stay tuned...


DECEMBER 27, 2020

New Year Notes

I had been thinking about some changes to my blog in the upcoming New Year. However, as quickly as I found myself with new ideas, I have since found myself with even newer ideas.

And so, two days after the blog post date above, I'm changing this post and my ideas for blogging in the New Year. There's more to come.

Stay tuned...


DECEMBER 14, 2020

PHP Code

Back on December 09, 2020 I published a blog post about Website Stats. I didn't think about it at the time, but it's a post that I can, and probably will, expand over time. In fact, I just finished updating it with some new capabilities. I've also added it to the website menu since it's self-updating each time it's accessed and will therefore produce a report of current information each time someone visits that page.

While it was not easy, and while I had to familiarize myself with some new PHP functions in the coding process in order to get it all to work; it was in fact easier than I had anticipated. I thought I was going to have to build some new files, but was able to process the data and report it in realtime without having to store and track any information in additional files.

I really like using PHP to perform calculations, store and track data, and work with simple graphic designs. It's much more sophisticated when combined with a SQL database instead of flat files and when working with complimentary front-end languages such as javascript. Still, you just can't beat PHP for it's all around capabilities. And unlike BASIC (another language with which I still really enjoy working) I particularly appreciate its extended reach when dispensed over the world wide web.

I really enjoyed adding more analytics capabilities yesterday and plan on doing more development as ideas come to mind and time permits.


DECEMBER 09, 2020

Web Stats

This page intentionally deleted due to the presence of, and problems associated with, executable code.


DECEMBER 07, 2020

Search Feature 2

In an effort to remain true to form (no pun intended!), I'm bringing another website related post to the blog. This time I'm writing about a new Search Feature that I've introduced to the site.

I had to think long and hard about how I wanted to accomplish this task. I came across some PHP code that was new to me and that helped make the task a lot easier. However, based on my design, providing a search capability still adds a bit of overhead to each post. The good news is that it's still manageable.

I knew I would need a Form to collect the search terms. With that form I was able to provide a search box and search button on top of the right margin to perform the collection.

Next, I would need to pass the search terms to a variable in a PHP program. In order to pull that off, I grabbed the search terms from the form in 'val1' and handed them over to a PHP variable named '$srchstr' using PHP's htmlentities function as follows:

$srchstr = htmlentities($_GET['val1']);

Next, I needed to build my search string and assign it to a PHP variable. In other words, I needed to take the post for any given day and wrap double quotes around it and set a PHP variable equal to that lengthy string of text.

Whenever I'm testing PHP and the screen goes blank, I know I've got a problem. This was the case until I followed the information in the error log and discovered I had double quotes located in my posts that were adding confusion to the PHP program. Note to self: No more double quotes in my posts.

Next, I added a PHP If statement to see if my search terms were located in that lengthy string and, if so, to set a $flag equal to '1' and present a message that the terms were found, providing the specific location where a user might go to read the post that includes those terms.

Finally, at the end of my program I checked to see if $flag = 1 and if it was not, and was instead still equal to '0', then I presented a message to the user that the program was unable to locate the search terms. I also combined all of the lengthy text strings into one file so that everything could be searched in one easy effort. And, I simply add each new post to that file to keep the search function operational on an ongoing basis.


NOVEMBER 30, 2020

More Web Stuff

Adding the capability for Recent Posts and Post Archives was fun and taught me a lot about what goes on behind the scenes with the code in familiar blogging sites like WordPress and BlogSpot. Admittedly, it would take me an eternity to match the features and capabilities coded into those sites, but that's honestly not the goal.

My most important goal in building this website is to have fun! Creating a maintenance nightmare is the last thing I want to do. So, any feature that adds overhead, in the form of routine maintenance or overwhelming complexity management, is carefully considered before any work begins.

If adding a new feature will drag me kicking and screaming toward a new technology that adds too much work and/or overhead for too little benefit, then that feature and that technology are not destined to find a place in my website.

On the other hand, if the effort to add a feature or capability can be easily contained to avoid that scope creep with which those of us who spent time in the corporate world are so familiar, then it is likely to find a place on my website development to-do list.

There's a lot that I know I'm sacrificing in order to enjoy the control I maintain over this blog site. For example, on a traditional blog site when you click the Publish button, a lot of things can be user defined to happen behind the scenes, such as notifications. Do I want to build a publish function? If I did, I would be forced to use it and lose any benefit that comes with the changes I can make in a manual publishing operation. A publish function fits well in my too complex to build and maintain category.

Another example of sacrifice is the built-in audience that comes with a more traditional blogging site. I used to live on WordPress and they do a great job of driving users to each other's blogs. In its season, I enjoyed that.

But the level of sophistication that has evolved, in terms of advertising and monetizing, is just not something with which I want to be involved. In fact, and as I have said before, I'm not even looking for an audience. I'm just looking to have fun with the technology and perhaps the opportunity for writing and artistic creativity that come with building and maintaining a website.


NOVEMBER 29, 2020

Website Stuff

Decades ago, when I started playing with HTML and my first website, I discovered PHP, and in particular PHP includes. The entire idea of PHP and server-side code opened a new door for me back then, even allowing me to draw from my extensive experience with relational databases and SQL.

With PHP includes, I was able to reduce (and almost eliminate) the redundant HTML and content I had been using in so many places and which had become such a major chore to update when anything changed. These PHP includes were a great addition to my website developer's tool bag!

Still, old habits die hard as they say and while I found myself learning new and improved techniques, I was not always recognizing their potential application and the places where they might benefit me. I had a very good example of that occur just today.

In the past when a new year arrived, I often found myself weighed down with extensive updates changing all of the years in the copyright notices over to the new year. Even today I was realizing that project was looming large and only a month away. Without giving it a thought, I was mentally preparing to take on that annual project. But, then it occurred to me - couldn't I add that copyright notice in a PHP include and update it only once instead of a multitude of times?

How in the world had I missed something so simple? Well, the answer resides in the way I initially set things up. To keep things neat and tidy, I host all content on an HTML page and I host each HTML page with a PHP page that contains all of the structural definitions.

The copyright notices had been added like content on the HTML pages as I had always done before. But, if I were to update the copyright notice in one location and build an include for that location in the PHP page's structural definitions, I could relieve myself of that annual (and tiresome) project and make the update in one location!

I just completed that change and it seems to be working well. No more lengthy projects for copyright notice updates. Now the copyright notice updates for the New Year will be like flipping a switch!


OCTOBER 16, 2020


Had a fun time adding some updates to the website yesterday. As I have mentioned before, it's probably the thing I enjoy most about having a website/blog.

I added the capability to see recent posts which required some retooling of the infrastructure. It was probably the most demanding and time consuming change that I made to the site in yesterday's changes.

I also removed my Twitter feed on the right side and moved some menu items from the left side to make room for the recent posts menu entry. And, I dabbled with the menu labels font size to allow for more text without a crowded appearance.

I added a website archive and performed some modifications to the main page to ensure a proper alignment between it and the left and right menus, both of which were quick and easy changes. I added back my genealogy post from an earlier entry on my previous website since it's something to which I like to refer back from time to time.

Finally, I modified the Home section so that the entries from the current month will always show up on the main feed. I may dabble with that some more, but need to give it some additional thought.


OCTOBER 11, 2020


It all started with a website I created in September of 2005. At that time, the one and only topic was running. Truth be told, I was in it as much or more for the fun of learning to build and maintain a website than with any belief that I had something to say and that was worth writing about.

I was most interested in learning more about the technical side of this new thing (at that time anyway) called blogging and, to one degree or another, that has basically remained my focus over the years since. Without a doubt, anything I had to say and write about was secondary to the technical aspects of the website.

Years ago, I moved to WordPress and enjoyed the opportunity to gain exposure to a more diverse picture of blogging. Writing posts from my phone and entering the world of comments was new and exciting, but it didn't last very long. I missed the control I had over website design and decided to move back to building and maintaining a blogging website and expanding upon its offerings with a database and PHP managed comments that more resembled what I had observed in WordPress.

As I expanded the list of topics about which I was writing, I lost focus and with it any readership I had earned. As a result, I removed the technology I created for comments. My blog evolved to become a personal scrapbook and has pretty much remained in that category since. And, if I'm truly honest, I like this new paradigm.

I have no interest in monetizing the site (and thus turning it into a job) and I have no interest in attempting to build a readership that requires my participation. I enjoy the technology, the creativity, the artistic elements, and the writing. As for the social elements, I'll leave them to those who pursue that kind of thing.

From a technical standpoint, I'm quite happy to pioneer what has already been pioneered. I'm very comfortable rediscovering that which has already been discovered. And, I'm very much at home improving upon that which has already been improved.


February 13, 2020


I have two grandsons, of which I'm very proud, and they now live over in Germany. One (Gabe) is an animal and bug wizard, who also is already becoming a master chef in the kitchen with mom.

The other grandson (Noah) is a technology wizard and he and I have just started enjoying Google hangouts together. He already helps everyone with any computer issues they have and his ability to learn new things, including Google Hangouts, with no assistance from anyone, continues to boggle my mind!

He and I have been using Google Hangouts from our phones and yesterday I did a hangout with him from a parking lot while Patty was inside on an errand. What a cool way to multi-task!

Since the cell phone screen is very limiting, I picked up a Logitech C270 (HD) webcam from Walmart yesterday and installed it on my HP laptop and placed it on top of my Acer monitor so that I could enjoy a better view of our hangouts from the comfort of my office desk. The photo of Noah (above) is from our first hangout using the new setup.


February 12, 2020


As you may have noticed, I added the capability to use fade out and fade in to display a number of my pictures on the home screen banner. It was actually a fun and interesting experience.

As for the fades, all it took was a few lines of code (javascript) to pull it off. As for the pictures, well that was another matter. I had to get the pixel dimensions for the banner and then do whatever it took to convert the other photos to those same dimensions. For some of the pictures, it was no problem. For others I had to do some trimming in order to avoid a dramatic change to the picture due to a vastly altered aspect ratio (the ratio each picture's width to height.)

I initially played with another idea for featuring the pictures in The View section of the website by adding the javascript and captions to the photos. It was also a fun exercise, but it ultimately led me to go with the changes to the home page banner instead.

Here's to all that can be done with cool coding!


January 25, 2020


Learning what features I can add to this website is really about learning all that PHP, Javascript, and of course HTML, can do. I was intrigued with the question as to whether or not I would be able to develop a Search Tool for the website.

Despite being rather labor intensive, I was pleasantly surprised at how easy the project turned out to be. I've taken a simplistic approach on the first pass, and will probably expand on that in the near future.

I'm also planning to reorganize the categories since there are some topics that I want to write about more frequently and that will likely warrant a unique category.


January 16, 2020


I mentioned in an earlier post that I've enjoyed developing some website utilities. I've been using PHP and HTML to develop data collection and analysis utilities for this website.

One thing that has intrigued me is the website crawler activity that occurs against the site. In 2020 I've already collected evidence of 464 crawler hits against the site that included 224 unique IP addresses from 55 unique locations and 34 unique organizations.

A large number of the hits were from Microsoft and Google but also included were some exotic locations such as Moscow, Russia; Beijing, China; Hongkong; Berlin, Germany; and Thessaloniki, Greece; among others.

I was also able to determine that the malware injection (see previous post) redirected to a website that is apparently owned by an organization named PDR which is located in Mumbai, Maharashtra, India. Disclaimer: I have no way of knowing whether PDR is the offending organization, which injected the malware, or simply a client of the offending organization.


January 10, 2020


In years past, I had become relatively comfortable with the idea that computer system security breaches were most often possible due to help from an insider. In fact, long ago I had personal exposure to exactly that sort of thing. To put all of this in perspective, back at that time a computer virus was more an idea than a reality. We sort of chuckled at those who gave this idea any serious attention. Well, that was then and this is now!

More recently, I was reading about SQL injections. I'm quite familiar with SQL (or Structured Query Language - a commonly used database access language) but was not familiar with the idea of SQL injections. It wasn't difficult to imagine the kind of damage that might occur if the wrong person had access to a database and could inject SQL code to gather private data.

However, little did I know that the term injection was meant to communicate a highly unusual and stealthy method for inserting or injecting code into the system through readily accessible port holes such as the user name and password fields in a sign-on screen. This approach can allow an experienced individual to whittle away at collecting enough knowledge of the system's structure to ultimately locate and collect usernames and passwords. With those in hand, enough information would have been gathered to sign into the system and potentially gain full access to everything in a fashion that would likely appear completely legitimate to even the most attentive technical insider.

I had no idea, when I read about SQL injections, that I would soon be the victim of a similar injection and one that would stretch my knowledge and problem solving skills beyond anything I had previously experienced. And, ironically, any such knowledge and experience I had gained over the years would work against me as I repeatedly tried to make the problem even more difficult than it already was.

On my website, and as I mentioned in an earlier post, I've been playing with some back office tools that I built using PHP in order to keep up with various website stats. As it turns out, someone hacked me in such a way that executing one particular utility resulted in a redirect to another website and the screen pictured above instead of the screen I had constructed and was expecting. I felt a bit out of my league in attempting to chase down the cause and instead considered my alternatives for performing some kind of clean-up so I could get on with life.

The good news was that by accessing that PHP utility tool from multiple locations, I had been able to prove that the malicious code was somewhere on my website host's system and not on my computer. The bad news was that my website host's sales people wanted to charge me an arm and a leg for a one-time cleaning service to correct the problem and they wanted the other arm and leg for an ongoing service to prevent future reoccurrences. For a site where all I really do is play, they were asking far more money than I wanted to pay. So, I decided to go forward without executing that utility and all was fine.

Out of fear of either additional attacks or the spread of my current problem, I finally decided I had to do something. I renamed the PHP program to see if that would help, but it didn't. I deleted the program and transferred a new copy from my laptop, but the infection was still there somehow. The thing that was throwing me off was that none of my other PHP programs had become infected. I tried copying the code off my laptop and placing it up on the server in a new file, but the malicious redirect still occurred.

I was trying to imagine how some type of metadata location on my infected php file (metadata that would surely be beyond my knowledge and experience) might contain the hacked code that was causing my problem. After all, my PHP program only contained a few lines of very simple PHP code and all it was doing was displaying a log file of all the web crawlers that had visited my site. For the same reason that I mentioned earlier, where it challenged my thinking to inject SQL code in a userid or password field, it hadn't occurred to me that anything malicious might have actually been in the log file. After all, log files don't execute code. They usually just contain data. How would displaying that data execute any code, malicious or otherwise?

To make sure my thinking was on target, I tested it by creating an empty log file and running the utility against it. And, to my surprise, it ran without a redirect. I put the log file entries back in the empty log file and ran it again and, sure enough, it redirected to the bad website.

Could there be some malicious code stored in some place I didn't know existed such as a metadata location on the log file? After all, the only other thing the file contains is rows of log data about the crawlers that visited my website. How could that hurt anything?

Remember the rule of thumb from Occam's Razor whereby the simplest answer is most often correct? Well, that was definitely the case here. It's just that a simple answer may not be that simple if you've never had any experience with the question or the answer before! And, that was definitely the case for me in this instance. The answer was sitting right in front of me, but I didn't have the experience to see it.

Was there a bad row of data in the log file causing the redirect? If there was, I didn't even know that could be done. And, even if I had known, I would probably have no idea how to do it! There were over 300 rows in this log file and so I started removing them in blocks of 100 in an effort to narrow things down to the potentially offending row.

I was able to prove that the malicious code existed somewhere between row 100 and row 199. I removed rows 100 through 150 and the problem still occurred. I glanced at the remaining rows 151 through 199 and there it was on row 172! Executable scripts had been injected into the fields that would usually contain the browser definition and the referrer definition for a legitimately logged website visit. I removed everything from the log file except row 172 and restarted my PHP utility program. Once again I was redirected. I had found the problem and it was a code injection into an otherwise harmless row of user agent log data.

Here's an example of a legitimate log entry from a Google web crawler:

6 2019/12/30 11:15:23pm Browser = Mozilla/5.0 (compatible; Googlebot/2.1; + Referrer = Direct

In the malicious code (which I will not show here) the creator injected a script into both the Browser = location and the Referrer = location of the creator's User Agent String.

Fortunately, I did not click the Allow button on the redirected website page pictured above. Quite frankly, I almost did, considering how Windows has programmed me to respond positively to the same question. From all of the documentation I've read about this particular attack, the consequences for clicking that allow button are pretty extreme and in some cases considered rather permanent.

All in all, chasing down this injection was quite an interesting and highly educational experience.


January 4, 2020


With respect to internet access here at the house, Patty and I have been living off of tethered connections from our phones. We've been with Verizon pretty much all along for our cell phones and out in these rural areas along the coast there simply is no access to fiber or cable.

On our senior plan, which is very affordable, Verizon provides a reasonable speed to our phone. However, the moment we try and tether off of our phone with our computer, Verizon steps in and slows things down to a crawl. And, we've been living with that for quite a while.

Even in using Filezilla from my computer to provide updates to this website, I'm frequently confronted with errors due to long waits trying to upload even the smallest (text only) web page. In dealing with this, I've had to adjust to a new way of life and get comfortable doing many things from my phone that I would have done (in the past) from my computer.

When I was working from our new home for the first year we lived here, I was using a Verizon cantenna and paying a pretty steep price for the kind of access I've always been used to and that I needed to host meetings, provide online training, and perform other work-related tasks. When I retired, I honestly couldn't justify the price for that kind of access even though it was tempting due to the amount of time I tend to spend on the internet each day and the more data-demanding things that I wanted to do.

For example, I've been itching to add a weather underground weather station and a camera or two to our setup. But, with our present internet capabilities, those hopes and dreams are nothing more than a fantasy.

Well, that's all about to change! It turns out that there are now government imposed mandates to provide folks like us with reasonable options and they are indeed reasonable. Thanks to some great research performed by one of our neighbors, we should be high-speed here at the house very soon - perhaps next week! Things are about to get exciting!


December 31, 2019


I've enjoyed writing posts for the various topics on this site, but the real fun still comes from all of the coding going on in the background - the stuff that brings the site to life!

I've built a number of highly interactive sites over the years using HTML, PHP, Javascript, and a MySQL Database. From likes and comments to security and intuitive functionality, there's an incredible amount that can be done with all of the aforementioned technologies.

I'm not quite ready to incorporate likes and comments into this site since I'm not really looking for all of that, but I have enjoyed building some back-office logging and analytics capabilities into the site for my own entertainment.

One of the interesting things upon which I've been educated in years past and even more recently are the web crawlers (aka Bots, SpiderBots, Internet Bots, and Crawlers) that are out there! My back-office coding shenanigans and logging capabilities have introduced me to the wide world of an often-unseen part of the web used for indexing and organizing the web pages out there for easier and more efficient retrieval.

Some of what I have found led me to this interesting article that really brings clarity to the browser's user agent string or UA. It's an item that each browser provides to identify itself, its version, and the operating system. It's worth a read if you're so inclined.


December 10, 2019

I'm really excited to get active once again with blogging. More than anything it's always been a fun way to record and share memories with friends and family. Beyond that, I enjoy the opportunities to write about anything and everything that's interesting to me, dabble with the technology, be creative, and dive into a bit of artistic expression with website design.

I'm moving away from Wordpress for a lot of reasons and getting back to my roots with my own website. For the most part I've wiped the slate clean from almost 15 years of posts, completely rebuilt this website, and look forward to a new start.

And so, here I am back in the world of blogging and website development. Since this site is honestly nothing more than an online scrapbook, I've removed the PHP code that previously allowed for comments and likes. If anyone needs or wants to get in touch with me or leave a message, I've provided a "contact" form over in the menu. Feel free to reach out!

I hope you enjoy your visit!

Copyright © 2024 Hutch DeLoach