WordPress AntiSpam Plugin, Configuring Alpine Linux to Send Mail

The previous incarnation of this blog had a lot more inbound links, and accumulates spam. One day, I had 14,000 comments pending, and most were spam. So, I wrote a tool to help work through the backlog.


It basically worked, but at one point, I had a bug: I had it match a field on ” ” or something like that, and it wiped out most of the comments.

I could have restored it, but it didn’t seem to be worth it.

The code’s a little better now, and slightly safer – but it is still a crude way to get through a spam backlog. It has two features: delete everything matching the blacklisted words, and delete messages where the URLs or email addresses match messages in the Spam list.

Alpine Linux Busybox SMTP Agent

I had some problems sending email from a WordPress installation in an Alpine-based Docker container.

Alpine doesn’t include an SMTP server with a minimal install, but you can use BusyBox to relay to an SMTP server.

Dead Pages, Alpine, Docker, Cloud

I’m having some Google indexing problems, with some traffic going to riceball.com, and some coming to technote.fyi. According to Search Console, I still have 367 riceball.com pages; in reality, I have maybe 40 pages. Some of these pages haven’t been crawled since the middle of 2018.

They don’t show up in search results.

Looking back, I should have saved the sitemap.xml file before I deleted all the pages. Then, I could resubmit the sitemap, and get all the pages touched again.

Alpine Linux

Alpine is a tiny Linux distro, and it’s pretty nice for making Docker containers, because it doesn’t haul around a huge distro with it.

Moving Development Into My Cloud

I’ve been moving around so much that just getting started with coding became a huge pain in the ass. It was bad enough having multiple development environments, but when it was on three different computers running three different operating systems, life just sucked.

There were many things I didn’t like, like Docker Desktop. I did enjoy using Docker in a virtual machine running Linux, and running docker-machine, but that’s now deprecated. You gotta let it go.

So I moved development “into the cloud”. Only, it’s not the cloud, but the slaptech computer in a colo. Yeah, Digital Ocean is cheaper, and faster, but… I like being on my own server.

It’s a throwback, to be using PuTTY and ssh, and Vim, but I like it. No matter which computer I’m using, I can ssh into the “black room” of a shell and Linux.

Two Cheap Computers: $6 and $4

the haul

I bought two computers, real cheap. One was a Kano, a kiddie computer, which is just a Raspberry Pi. $6 at a yard sale. The other, a PogoPlug, was found on Facebook, $4. Total of $10!

That’s the price of a sandwich and soda. Since I’m eating neither, now, I can get new-old hardware.

I was hoping the PogoPlug still worked, so I could use it like Dropbox, but they went out of business a few years ago. So their “lifetime for free” deal pretty much vanished with the company. You can get units on Ebay for around $10, shipped.

I’ll just use it to make backups of work. I’ve used a RPi NAS for this purpose, and it works pretty well. You just need a USB power brick, some cords, an external hard drive or a thumb drive, and the Pi. I’m assuming the Pogo could do the same thing.

This other RPi might become a “thin client”. I originally had plans to make it into a little “app server”, but now that I’ve gone “cloud computing”, I’ll just make my apps up on the “cloud”. Dealing with the Pi will just be a hassle.

Update for June 18, 2019

I’m moving the site over to technote.fyi, and will be converting this domain over to a rice ball / food / restaurant domain. Google doesn’t seem to consider the domain that much when indexing a site – this site comes up for software tech, but not for rice balls! Obviously, this domain would increase in value if it showed up in searches for riceballs.

Likewise, technote.fyi is a good name for a website with tech notes.

I found a cool WordPress plugin called Calculated Form Fields, and made a few calculators. One calculates the cost of riding the bus. Another helps you to determine the local sales price of something that sells on Ebay.

I was recently diagnosed with diabetes, and started blogging in earnest at Complaining About Food. I spent a long time figuring out how to add the wordpress.com blog to Google’s Search Console, so I wrote a note.

Update for April 29, 2019


How to set up filter scripts for Qmail on Debian, a feature that’s not really documented in the tutorials.

Bye Bye Qmail

I had to drop my preferred mail server.

The Best SEO Spam Ever

On one of my other blogs, I get a torrent of SEO comment spam. Reading the spam sometimes help me understand SEO. One I got recently was really clever, and it worked!

Playing with Calculated Fields Forms

CFF is an old WordPress plugin that’s new to me. It creates JavaScript Calculators using a simple spreadsheet-like formula editor. It features a form builder to construct the input form. I used CFF to make a bus vs. car calculator.

I read a book, for a change, and wrote about it: Infopreneurs, Turning Data into Dollars, published in 1991. A fun, quick, read that blew my mind.

Interesting Links

The Mueller Report – whatever side you’re on, or what you thought of the election, it’s fascinating reading about the trolling operations.


Mide.php, WordPress Hacker Shell

Digging through the 404 errors, I found requests for mide.php, which isn’t a file on my server. Here’s a copy of that program.


I’ll write about digging through 404s in the future.

WIRED has a long article about Open Source. It’s pretty good.


My only gripe is that Open Source code is called more “permissive” than Libre/Free GPL’d code. OS code is more enclosable or can be made more proprietary than GPL’d code, which requires sharing of the source code for derivative works. The former allows one person to take freedoms away from another person – and I don’t see that as more “permissive”.

Gone Missing from the Keyboard

Numerous things have pulled me away from doing tech work, the big one being a mishap that flooded our apartment, and necessitated my moving, temporarily, to my mom’s. Since I sell on Ebay, I have a ton of “inventory” that needed to be moved, sold, etc. I also moved all my computers.

So I spent a lot of time selling off things.

I also had to drive my friend to medical appointments and other stuff because he’s also had some relatives having serious health issues. Then, the landlord moved slowly on repairs, so I had to complain to the city housing department inspectors. It’s like dominoes tumbling 🙁

New Techie Stuff

JavaScript Date and Daylight Saving Time – I observed some confusing behavior from the JS date function, until I realized it was adjusting the time I saw because Daylight Saving Time applied on some days.

How to Reduce Your Bounce RateI got my bounce rate down from 90% to less than 50%, without altering the articles. It’s depressing to see high bounce rates in Google Analytics. The issue could be that GA has no way of knowing if someone is reading your articles or exiting the page. Using Google Tag Manager, it’s possible to send a signal to Google Analytics when the reader scrolls to some point on the page.

The readers scroll, and the bounce rate drops!

Oldies Reposted

Adding a WP-CLI Command to Your Plugin – an old article explaining how to create a shell command that runs inside your WP installed environment. This way, the command can access the site’s database, site configuration, use WP libraries, etc.

Interesting Link

I’m not sure what aNewDomain is – a group blog, some kind of article bucket for linkbaity articles, a tech news site, or a politics site. I just saw some familiar names, Ted Rall being the main one. I have been an on-and-off fan since he was writing for Maximum Rock And Roll.

Gina Smith, author of iWoz, founded the site, and I always liked her writing in the SF Chron and Examiner, but never kept up. I also saw John Dvorak and Jerry Pournelle in the list of authors… so more familiar names.

Smith recently wrote the awesome linkbait INFOGRAPHIC: Why You Should Google Yourself More. For reals! It’s something I’ve started to do, trying to ghost myself on the Internet.

Photo copyright 2019 John Kawakami.

January 5, 2019 Update

The holidays left me stuffed, and so busy that work became an afterthought. My friend also had some medical issues and I ended up being a driver for most of the month. I swear, driving takes a lot out of me, physically and mentally. There are only a couple updates this month.

Remove Docker’s Cached Intermediate Images

Sometimes, you need to blow away Docker’s cache because an external resource changed. This is a hack to do it by inserting a “no op”.

SEO Keyword Research for Docker

Google says that advertisers are paying $35 per click for ads on some Docker-related pages. They aren’t the pages I’m writing; not yet anyway.

External Articles


Subscribe to this blog to get an infrequent update about new articles posted to this site. The sign-up form is to the left.

I have opted for this format to keep the emails down to a bare minimum.

December 18, 2018 Update

This month, our “hobby” server took a big dump, and we said, “screw it, we need to install the ‘new’ server.” This “new” server is a few years old, but switching servers is such a huge pain in the ass that we avoided it.

Besides, the old server has been pretty reliable. We’ve had to replace the power supply, a hard drive, and memory, but… not bad for 10+ years. Fsck even fixed it up, but re-racking a heavy 2RU, decade+ year old server is a terrible idea.

I’ve got three new articles, and the first two are from this upgrade:

One new page is an aggregation of a series from a while back about fixing my personal computer:

  • The Crashing Computer Series – Long notes about how I diagnosed and fixed my crashing personal computer (it was RAM). Don’t do what I did.

I’ll try to share one article I’ve read that’s tech/internet in each post.

Subscribe to this website to get these posts in email. If you use an RSS reader, follow the site.

Facebook-style Previews

I was thinking about how facebook updates parse out the url, then construct a nice looking preview. I think what it takes is scanning the textarea for a url, and then using ajax to tell the server to fetch a summary of the page at the url. get the data back, and insert it into a template, and reveal it.

This is a republication of a post from January 2012. I would not write it this way today.

Continue reading “Facebook-style Previews”