Latest Posts

CleanTalk: Finally a Way to Have a Contact Form Without Needing a CAPTCHA


Fellow website owners: I want to share my experience with a service that I found some years ago and now can't live without: CleanTalk.

I run multiple websites, and for years, spam was a constant headache, usually submitted through my sites' Contact forms (including the one on this site).  I was spending more time deleting unwanted messages than actually engaging with genuine visitors and leads. CAPTCHA and reCAPTCHA helped a little but honestly not that much, plus they often deterred real users and made my sites less user-friendly.

Then, a few years ago, I stumbled upon CleanTalk.

PHP: How to Validate an SMS from SignalWire Webhook


SignalWire - How to validate incoming smsI ran into this problem recently, but was unable to find an answer.  There is very little (essentially non-existant) documentation from SignalWire on how to validate / verify that an SMS coming to your webhook was really sent by SignalWire, especially in PHP which seems to be the forgotten stepchild of SignalWire. 

I finally found the answer, so I wanted to share it here for anyone else with the same problem.

For those that may not know, SignalWire's LAML webhook method is meant to be 100% compatible with Twilio, so it took some digging into Twilio's documentation to find the answer.

Encode Any String to Only Alphanumeric Chars - Better Than URLEncode


Have you ever been faced with a situation (in PHP) of needing to pass information in a URL (or a JSON object, XML, etc), but for whatever reason, urlencode() won't do the job? For example, if you want to base64_encode() a string, then pass it in a URL. Since base64 includes URL-unsafe characters like +/-=, you have to jump through hoops to make it work.

However, there is an easier way, that produces only letters and numbers; no symbols or punctuation of any kind.  Yes, it will inflate the length of the string a little more, but it might be what you need.

WebRTC Video Chat With Only PHP and JavaScript (No NodeJS or WebSockets)


Not long ago I set about trying to create a video chat (Zoom/Skype/Meetings clone) using only PHP and JavaScript.  Every solution and example I found online required that I have NodeJS running a server, which I didn't want to do so as to not complicate matters on the web server.  After many hours of searching and experimentation, I finally found a solution that works.

I based my solution on the preliminary work done by neilsbaloe, though where he uses plain text files, I use a database like MySQL.  Also, I found that with his solution, it only worked about half the time for me, especially if one of the browsers hit "refresh".

Easily Add Your Signature to a PDF With Foxit Reader (Free)


Foxit reader iconLet's say you need to sign a document and send it back to the person requesting it via email.  You could always print it out, sign, then scan to a PDF.  But that is time-consuming, wastes paper, and the original PDF file ends up looking degraded from the trip through the printer & re-scanning.

Let me show you the easiest way I've found: using the free program Foxit PDF Reader

I recommend downloading it from ninite.com, as that's the easiest way to install it, but you can download it from their official site as well.  Just make sure to get the FREE version; you don't need anything more advanced than that.

Keep a Computer In Your Desk Cabinet Without It Overheating


This is a bit of a DIY project.  I'm going to show you how to keep a computer in a desk or cabinet, but we're going to install an external fan in the cabinet to keep the computer from overheating.  (And we can do it for $15 - $25, depending on your setup).

If you've ever tried to keep a computer (or PS3, PS4, Xbox, etc) in a cabinet or other enclosed space, you know they can get pretty hot.  And that can eventually kill your computer.

FlightPath Source Code Stored in Arctic Code Vault


FlightPath source code stored in Arctic code vaultI'm thrilled to announce that the official source code for my open-source advising system, FlightPath, has been stored in the Arctic Code Vault for all time! 

For those that may not know, I created FlightPath while working as a developer for the University of Louisiana Monroe, and since then it has been released as open source under the GNU GPL license. 

It's been in constant development since 2007, and its code repository is hosted on GitHub, which is where this story begins.

Free SSL Certs, Automatically Renewed


Free SSL Cert, Automatically RenewedSSL certificates are basically required for all modern web sites. The problem is that (1) they cost money, and (2) you have to renew them every year or so.  It gets to be a real pain, especially if you manage multiple sites. 

There is an alternative-- create a (free) self-signed certificate, and give it an expiration of 99 years, but anyone who visits your site will see a huge warning message that it is unsafe.

The solution:  Let's Encrypt.

Pages