Blog

Self Sustaining Spam Stopper

I’ve been poking at a plugin on this site for a while that stops spam without sending the contents of comments to an external service for processing.

It’s not that using an external service is the wrong approach—it’s obviously a more powerful approach and likely to be more effective in many cases—I’ve just always found it annoying that spam has had that much control over us for so long.

Things have been working well enough for quite a while. It’s blocked somewhere around 4000 spam comments in the 6 months, blocked 0 false positives, and allowed a small handful (~5) through. I’m confident enough in it now for this site that I may now add a filter to auto-delete spam comments.

What’s really funny to me is that this is a simple honeypot with a couple lines of JavaScript that wait a second before clearing one of the prefilled form values.

If a bot is using wp-comment-post.php to submit the comment without checking form field names first, which most are, it fails.

If a bot grabs the HTML, looks for a form, and submits it in under 1.5 seconds, which most others seem to do, it fails.

If a bot actually loads a full browser session and waits for JavaScript to load, it passes. Luckily, not many bots do that!

I’ve also hacked in some support for Contact Form 7. A similar honeypot can be added to any form with the custom [ssss] field. That’s only been up on the Happy Prime contact form for a couple days, but our stream of spam email has gone to zero. This is very pleasant.

All of this is to say that you too can easily try Self Sustaining Spam Stopper! It’s been so long since I’ve submitted a plugin to the WP plugin repo and I’ve kind of missed the fun. It’s also such a great way to deploy open source plugins to many sites across multiple hosts at once, especially now that WordPress supports auto updates for plugins.

Check it out if you’re looking for an alternative. Let me know what I’ve missed. Open up an issue if you have suggestions!

Thoughts for the week’s end

Crisp mornings this week! I don’t think we went on a single walk without jackets.


This may sound silly, but it’s my blog and I’ll sound silly if I want to.

I’m sipping on some Nuvo coffee (a light roast, I forget which) that I made in a moka pot mixed with a shot of Green Spot Irish whiskey and it’s one of the most pleasant things I’ve consumed.

Happy fall, indeed.


I’ve recently switched from espresso in the afternoons to the moka pot and was happy that my “recipe” from 2018 held up. I’ve enjoyed light roasts, medium roasts, dark roasts—every single cup has been excellent. This is so very strange to me because I used to be horrible at making coffee in the moka pot.


The above is an example of how my eating and drinking habits work in patterns. I’ll have the same coffee using the same method for an entire year until one weird thing makes me switch for a day and then I’ll do that until… etc.


I’ve been having fun with Scott’s Name That Tune series on YouTube even though I’ve proven to be horrible at it so far. I know almost all of the songs after the fact, but there’s something about trying to guess the song that makes me draw blanks.

As someone who is exactly in the same age bracket, I also appreciate the commentary on various songs from the 90s and aughts. I may spend the next week working through some throwback playlists.


For a long while I’ve joined a regular Zoom meeting for which I don’t have a clickable link. Instead, I’ve hunted through my email for the meeting ID each time.

Every time I did this I wished there was a list in the Zoom UI of previous meetings so I could just select it and go.

Turns out there is this list, I had just never actually tried to click the down arrow on the meeting ID field. 🤦🏻‍♂️


A new to me fact that blew my mind a month or so ago was that a 1km3 cloud contains about 1.1 million pounds of water.

According to more napkin math, that’s somewhere around 4 to 5 times more water than a good water drinker will consume in their lifetime.

You’re welcome.


We’ve been cruising through Halt and Catch Fire finally. It’s a show I’ve wanted to watch for a while, but hung just out of grasp when making show decisions for the last few years.

It’s very fantastic and I love the characters and the reminiscing and some of the insights into 80s tech that I lived through, but only as the child who got to play the games and write the most BASIC of programs.

It also suffers from AMC syndrome. If that’s a thing. Episode 8 of every season feels like the season finale and it’s done so excellent. And then so much time is spent setting things up for the next season that you wonder why they don’t just have 8 episode seasons instead of 10.

Anyhow. We’re on the last season. It’s great. I’ll be a little sad when it’s over. I’ve enjoyed the reminiscing, as I do.


Voted! Now to wait. Only a couple more weeks to go, may we continue hanging on.


Today I learned “outwith“, which I kind of love, so I’m documenting it here. I especially love that it’s a word that appears to be increasing in use, which means there may be time to figure out how to use it without it sounding awkward.

A few weeks ago—thanks to a crossword—I became enamored with “i’d’ve“, as a double contraction. I didn’t give any thought until today to how there may be many more. Now to use y’all’ll somewhere.


A fall weather note for comparison next year.

It was only over the last few days that one of our maples turned deep red. The other is still in that “I’m greenish-almost-yellow-but-check-back-tomorrow” phase.

The juncos have multiplied. And the rain has begun.

🥃

Thoughts for the week’s end

It’s Sunday Monday, but it feels like Saturday Sunday and I still have Monday the day off, so I must have done a pretty good job of relaxing over the last week. Or something.

Because I wrote most of this before the end of the week, I’m counting it and hitting publish.


Back in April, I mused on video chats and how they could be handled with VR in the future:

In a proper VR video chat (or something, I don’t know), the volume of the conversation could change as you move your head. So if two people wanted to shift to the side a bit and carry on a side conversation, they could still hear bits of the main conversation, but the volume of the people speaking would change based on their virtually physical location.

Enter Calla, an open source virtual meetup library built on Jitsi Meet:

Voice and video chat that simulates natural conversation. Volume scales with distance from other users. Walk around, talk to folks, have private conversations by huddling in a corner, or drop in on other conversations. Ideal for meetups!

From the Calla home page

How cool! I haven’t tried it yet, but it of course sounds promising. 🙂


One of my new favorite things is using the same title for multiple posts. This series is the longest running, but I also posted a few “Current status” this week, an intentional throwback to when that was a thing we did on Twitter before we didn’t.

It happened (for me) this week because I tried to title a post “<stay-cation>”, but that got chewed up and thrown aside by something when it published. No title appeared and the post ID was the slug. I had no interest in tracking down the reason, so I changed the slug to “stay-cation”, the title to “Current status” and let it be.

Now I kind of like the pattern.


This, via Friday’s NY Times crossword blog, is one of the best videos I’ve ever seen.

It’s like they’re living right side up lives in an upside down world!


The concept of The Rental was better than the movie itself, but the movie itself was still watchable and a good enough time. The following sentence shouldn’t really be a spoiler, but it might be, so I guess you’re warned.

Jeremy’s tagline for the movie: “The Airbnb rental said no pets allowed. A guest brought a dog. They deserve everything that happens next.


I have a bunch of random beer ingredients hanging around: hops in the fridge, barley and rye in the basement, water in the… tap? They’ve all been there for a very long time because I haven’t brewed beer in a very long time. And I’ve decided that before I can justify buying fresh ingredients, I should use the ones I have. If for nothing else, it should serve as a practice round to make sure I still know what I’m doing.

So! This week I plan on making a “Stale Ale” from all the leftovers as a way to recharge the joy of homebrewing.

Cheers! 🍻

Current status

Enjoying a freshly tapped fresh hop Alpha Madness at the Trailside Taproom.

Paradise Creek tapped this year’s fresh hop IPA today and we walked on down to enjoy a pint and grab a growler.

This was a bit of a moment for us as it was our first pandemic visit to a brewery—or any place that we actually sit down—and it turned out as smooth as we expected. Not too many people, those that were there had masks or were sitting with their beers, and the beer is excellent. We had a good chat while we drank ours and then lugged the growler back. 🍻

And: bonus! Thanks to the internet, you can see some fun videos of the mosaic hops harvest process as well as great photos from Carpenter Ranches where Paradise Creek sourced the hops this year.