Boostrap comes with built-in validation, but when it comes to checkboxes, the validation options are limited. I created a form with three checkboxes, and the user is required to check at least one. Bootstrap only performs ‘required’ validation on checkboxes, which, in this case, won’t work.Continue reading “Custom checkbox form validation with Bootstrap”
I have been receiving more and more spam through one of my sites’ contact form, which uses Contact Form 7. To help stop this, I created a simple custom function that blocks contact form messages that contain specific words, without any additional plugins or services.
Continue reading “Custom spam filter with Contact Form 7, no extra plugins needed”
Command line tools generally produce some kind of output on the screen. This output is actually two (or more) streams, and these streams can be handled independently.
Until recently, I was using my Ubiquiti EdgeRouter in bridge mode. I had my LAN on one ethernet port, and my wireless access point was connected to another ethernet port. Then I configured a bridge between the LAN and wireless AP ports. Logically, this made sense. However, this forces the EdgeRouter to do network switching duties, which it does entirely in software, and this is very SLOW. Even Ubiquiti states upfront that running in bridge mode will affect performance. Don’t use bridge mode.
After switching to Telus Optik, I wanted to take advantage of Telus IPv6 support, using my Ubiquiti Edgerouter Lite. After a lot of googling, I was able to put enough pieces together to get full IPv6 working across my network. This configuration will work with EdgeOS 1.9.0, and should work with versions of EdgeOS going back at least to 1.7.0.
I just upgraded this site’s Ubuntu OS from Trusty 14.04 to Xenial 16.04. There are a couple of pitfalls during the upgrade that are noteworthy.
The biggest issue when upgrading to Xenial: Nginx and PHP5-FPM will break when you upgrade. So, keep in mind that any of your sites that rely on PHP5-FPM will be down during the Xenial upgrade.
Continue reading “How to upgrade Ubuntu, NGINX and PHP5 from 14.04 Trusty to 16.04 Xenial”
I have written about renewing certificates from Let’s Encrypt in the past, and to the project developers’ credit, they keep making the process of getting, installing and renewing certificates easier. There’s a new client called certbot (and certbot-auto) that can be used to almost completely automate the certificate process. As an added bonus, the certbot client’s
--webroot method allows you to renew without having to stop your web server and restart, and you no longer need to pause services like Cloudflare.
Continue reading “Renewing a let’s encrypt certificate made even simpler: automatically”
If you need to automatically/programmatically open a popup on iOS/Safari using Jquery Mobile, you will likely see your popup flash by very quickly and then close on its own. This is a huge annoyance, as there are times when an automatic popup is required, such as for on-load disclaimers, or confirmations.
Continue reading “Prevent Jquery Mobile popups from auto-closing in iOS”
Three months have passed, and it’s time to renew this site’s Let’s Encrypt certificate. Fortunately, the Let’s Encrypt team has added a simpler renewal process since the certificates for this site were first generated.
UPDATE, September 2017: Most of this information is now of historic/hacker value, as Let’s Encrypt has added Nginx support to the Certbot client, making the process MUCH simpler and quicker. However, it’s still worth reading through this how-to, as it could help you look out for places where things could go wrong.
A good friend recommended the free SSL certificate services offered by Let’s Encrypt. I thought I would give it a try and switch this site to HTTPS-only, and share the results of the process here.
First off, Let’s Encrypt is a “free, automated, and open certificate authority (CA), run for the public’s benefit.” Their certificates are provided by the Internet Security Research Group (ISRG). In short, it’s legit.