Category Archives: Web Development

Web Development

Robots.txt and Blocking AI Bots What Website Owners Need to Know in 2026

What Is robots.txt

A robots.txt file is a plain text file placed in the root of your website:

https://yourdomain.com/robots.txt

It follows the Robots Exclusion Protocol REP and tells automated crawlers bots which parts of your site they are allowed to access.

User-agent: *
Disallow: /private/

This tells all bots not to crawl the /private/ directory.

Important robots.txt is voluntary. Legitimate bots respect it. Malicious bots do not.
 
Continue reading

Fixing WordPress’ Shortcodes Ultimate Carousel Captions Overlapping Images

WordPress’ Shortcodes Ultimate plugin has earned its popularity by being reliable, flexible, and thoughtfully designed. Its wide collection of shortcodes works well across many WordPress themes, and the Image Carousel in particular is fast, responsive, and visually polished right away.

As with any powerful plugin, some styling choices are opinion driven. One such choice is how image captions are displayed in the carousel. By default, captions appear directly on top of the image.

In many cases this looks fine, but in others it can create layout and readability issues.
 
Continue reading

Limitations of the QuickBooks REST API; A Developer’s Review

This is going to be short and sweet, for now. I started writing this after hitting one too many issues while working with the QuickBooks REST API in PHP. Instead of losing track of them, or convincing myself I imagined them, I decided to jot everything down as I go.

What follows is not a polished article yet. It is more of a running list of oddities, limitations, and outright frustrations I have encountered in both the API and the Web UI. Eventually, I will clean this up and turn it into something more structured, but for now, this is the raw version.

Beyond PHP: VBA Included
The limitations discussed here are inherent to the REST API itself and not to PHP, VBA, python, or any other language. In prior posts, I’ve demonstrated how to connect Access (VBA) to QuickBooks. Thus, everything discussed below is equally application to all VBA solutions (Access, Excel, …) or any other programming language using the REST API.
 
Continue reading

The Best Web Development Choice I Ever Made!

The Evolution of My Web Development Environment

The Early Days: Manual Setup

When I first dipped my toes into Web Development, I embraced the challenge of manually installing and configuring PHP, Apache, and MySQL on my Windows machine. It was a steep learning curve, but it worked, and I felt accomplished.

The VM Era: Convenience and Performance

As time passed, I discovered the power of virtual machines (VMs). I started with Windows Virtual PC, later adopting user-friendly solutions like XAMPP and WampServer. This setup served me well, and I eventually upgraded to VMWare for better virtualization.

The Performance Dilemma

However, the arrival of Windows 10 and VMWare 14-15 brought an unexpected challenge: a significant drop in performance. Simple tasks that once took milliseconds now lagged for 5-8 seconds. Switching to VirtualBox offered some improvement, but it never matched the speed I remembered from less powerful machines.

Frustrated, I spent countless hours attempting to tweak PHP, Apache, and MySQL settings, all to no avail. I tried creating fresh Windows 7, 10 & 11 machines, but the performance issues persisted in all cases, eating into my daily productivity and patience.
 
Continue reading

Moving from Microsoft Access to PHP Web Applications, Why?

I’ve been debating about writing such an article for a long, long time now, but with the incessant issues with Access, Microsoft effectively killing Outlook, I believe the time has come to stop beating around the bush on this one.

Today, I wanted to present to you a few of the main reasons why considering a move to Web Application development may be the better choice. I am primarily focusing here on PHP, however most comments below would just as easily apply to .net, … or any other proper web development language.

Okay, let’s dive in!

Moving from Microsoft Access to PHP web applications offers several significant advantages for businesses and developers.
 
Continue reading

PHP Connection To Azure SQL Database

For those of you Web App developers, here’s how you setup PHP so you can work with an Azure SQL Database.

It’s a 3 part process, beyond your actual PHP code:

  • Install the Microsoft ODBC Driver
  • Install the Microsoft Drivers for PHP for SQL Server
  • Configure PHP

Continue reading

Adding New Users To An Azure Database

Add User

Recently, I’ve been doing much more work involving Azure SQL databases.

In one instance, I was reviewing the security setup of a client’s existing web application and noticed that they were using the default Microsoft Azure account to connect to the database.  I’ve seen this multiple times.  It is quite natural to setup the Azure Resource, deploy the Azure Database and simply use the account you have by default.  That said, there is a security concern for me with such a setup, for a couple of reasons, mainly:

  • Such a user can actually alter any aspect the database itself (and the master database as well) and no user should ever have such capabilities.
  • If ever compromised, say a hackers gains access to the app’s config file, they can actually log into the Azure Portal and do anything they want.

So I logged in and created a new SQL Login User just for their web application to use, thus limiting, as much as possible, any potential damage that could occur through the web app itself.

Creating a New Azure SQL Database User

It’s actually remarkably easy to create a new login user and only takes 3-4 simple SQL commands.
Continue reading

WordPress Open Link in New Window Plugin

Many of the sites I create are done in WordPress, it simply works! That said, one of my peeves over the years has been the need to manually edit each link to open in a new window so users don’t loose the page they are on. This week I finally decided to use this as an excuse to learn about developing WordPress PlugIns and created my own for this purpose. Things went very well and I plan on continuing development and adding other features that I feel can help me as a developer and author.

As such, I thought I’d share it here. (Yes, I will be looking into publishing it through the WordPress.org portal)

Continue reading

Online Collaboration Tools for SQL, HTML/CSS/JS and RegEx

More and more, I see my business moving away from Access an toward the cloud. That is simply the reality of the world we live in. People want their data accessible on any and every device and Access simply does not offer that natively.

As such, in the past few years I have been immersing myself in HTML, CSS, JS, PHP, MySQL, SQL Server and Azure, …

Sometimes, it can be very convenient to be able to demonstrate coding to fellow developers, to get help (forum postings), to collaborate, … or even just to quickly test out a concept rather than needing to setup your development environment you can use one of these tools.

Today, I thought I’d share a few online tools that enable such collaboration

Continue reading

htaccess Force https on Domain but not on SubDomain

I recently wanted to setup SSL on 2 of my websites.  So I purchased the SSL Certificates and performed the installation through my host’s domain portal.

My host modified my default .htaccess file by adding

#RewriteEngine On
#RewriteCond %{SERVER_PORT} 80
#RewriteRule ^(.*)$ https://DomainName.com/$1 [R=301,L]

The problem was that I had a subdomain, for personal use, on one of my domains and I did not want to force https on it since my SSL certificate was only for the main domain.  The above ReWrite rule is indiscriminant and forces https on all urls.  I contacted my host and they weren’t very helpful, so I knew I was on my own to figure this one out.

I won’t bore you with all the variations I tried (hours of Googling and trying this and that), but below was what finally worked for me to exclude a subdomain from being forced into https.

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
#Exclude subdomain from rewrite rule
RewriteCond %{REQUEST_URI} !^/SubDomainName/
RewriteCond %{HTTP_HOST} !=SubDomainName.DomainName.com [NC]
#rewrite the url to force the use of https
RewriteRule ^(.*)$ https://DomainName.com/$1 [R=301,L]

 

So let explain the 2 critical new lines:

RewriteCond %{HTTP_HOST} !=SubDomainName.DomainName.com [NC]

This one is pretty self-explanatory, if a request is made to access SubDomainName.MyDomainName.com then you do not (!) apply the following Rewrite Rule.

RewriteCond %{REQUEST_URI} !^/SubDomainName/

This one on the other hand may not be so obvious.  My host was automatically redirecting request for

SubDomainName.DomainName.com

to

DomainName.com/SubDomainName

so I needed to add another Rewrite Condition to also exclude such a request from being forced into https.  You may not need to include this condition on how your host has things setup.

 

Robot.txt

One last additional tidbit.  While trying to figure out the above I came across a posting in which they stated that an exclusion for the robot.txt should be made so it does not require https.  To do so, you would add one more Rewrite Conditon

RewriteCond %{REQUEST_URI} !/robots.txt

 

So the final htaccess would then become

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
#Exclude robot.txt from rewrite rule
RewriteCond %{REQUEST_URI} !/robots.txt
#Exclude subdomain from rewrite rule
RewriteCond %{REQUEST_URI} !^/SubDomainName/
RewriteCond %{HTTP_HOST} !=SubDomainName.DomainName.com [NC]
#rewrite the url to force the use of https
RewriteRule ^(.*)$ https://DomainName.com/$1 [R=301,L]
</IfModule>

 

Resources

While trying to figure this all out, I came across a few good sites, should you wish to delve deeper into the matter:

Disclaimer
Let me be explicitly clear, I am not an htaccess experts by any means.  I simply managed to piece the above together out of personal necessity.  Just because it worked for me does not guarantee it will work for you, nor should any assumptions be made that it is the best approach to the matter.

As with any post on my site, I am always open to better ways of doing things, and learning, so feel free to leave a comment if you can add constructive information to the above.