Web Development
Matomo SMTP through Amazon SES
If you are self-hosting a matomo analytic instance, you may consider using Amazon SES to send the actual emails for password resets and scheduled reports. Getting the settings right can be a little painful though. Note: Make sure to create your SMTP credentials in a region that has full email support, I normally use us-east-2 [...]
Add fa-mastodon to Older Font Awesome
If you went to use the fa-mastodon but instead got a blank glyph, chances are you are running an old Font Awesome. The best fix is to just upgrade to Font Awesome v5.0.11 or higher but sometimes you are working on apps that make the best path difficult to actually do. For example, this site uses a third party theme which is [...]
Fix HTTP2 Header Errors on Nginx Reverse Proxy
You might get an HTTP2 error from curl and Safari browsers even though the page loads fine on Chrome and Firefox. curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1) Safari Can't Open the Page Safari can't open the page "https://steve.zazeski.com/". The error is: "cannot parse response" (NSURLErrorDomain:-1017) The [...]
Reducing WordPress Load from XMLRPC
Every so often my website would get hit with high load but when I looked at the website analytics, I wouldn’t see any traffic that would explain it. It wasn’t until I was analyzing the nginx access logs through splunk that I realized what was causing it. Every couple days the xmlrpc.php file was getting hit hard by a bot. [...]
Changing Primary Color Theme in wiki.js V2
Currently, custom theming in wiki.js V2 is just not there yet so here is how to do it anyways. Wikijs offers Code Injection in the administration panel. First I tried putting in CSS override but quickly found that most of the styles in wiki.js are applied at the tag style="" level or on classes using the !important flag which makes [...]
Google App Engine Bulkloader Refreshing due to a 401 Loop
Developing apps on Google App Engine can be difficult when your production servers have a dataset that is hard to reproduce on your local development servers. Thankfully Google App Engine includes a very useful tool to do bulkloading. To download your data from production: appcfg.py download_data [...]
Erratic Google App Engine 401 response when GOOGAPPUID set to x
I ran across a strange issue on an angularJS application that makes backend calls to a Google App Engine API. Every so often, the request would fail out with a 401 unauthorized request, but if you hit the reload button, the page would reload fully logged in. Looking at the AJAX request, it looked like the request didn’t change and [...]