Today's the Net Neutrality Day of Action.

Here's what I said about net neutrality during the open comment period in 2014, before the Title II rules passed, when the FCC was pushing a policy that would allow ISPs to charge websites for fast lanes:

This is exactly the kind of policy you get when you put a cable company lobbyist in charge of the FCC: a plan nobody but the cable companies could possibly want, and that seeks to make the Internet work like cable TV.

This plan has no benefit whatsoever to consumers. Cable companies demand extortion money from content providers; the providers who are willing and able to pay pass that cost on to their consumers (as Netflix has already done by raising its streaming subscription price), and the providers who aren't are put at a crippling disadvantage. You can bet the ever-increasing bottom dollar on your cable bill that if Comcast had had the opportunity to demand a premium from YouTube to stream video in 2005, we wouldn't be talking about YouTube today -- though maybe that would have been good news for Real Networks, as we'd probably still be limping along on the vastly inferior RealPlayer. Buffering...

This proposal is a government handout to the kind of companies that need it the least: monopolies and near-monopolies that already provide poor service at exorbitant prices, and suffer no market backlash for the simple reason that they provide a necessary service and have no competition.

Google doesn't want this. Microsoft doesn't want this. Netflix doesn't want this. Amazon doesn't want this. Consumers don't want this, and small businesses sure as hell don't want this. The only ones who DO want this are the cable companies who pick our pockets every month -- and their former employees like Chairman Wheeler.

And here's what I said during the open comment period this year, with the FCC preparing to repeal the Title II rules and, once again, proposing Internet fast lanes:

Seeking public comment? This is a farce. Chairman Pai heard exactly what the public had to say in 2014. The public responded, overwhelmingly, in support of net neutrality; indeed, the public interest was so high that the traffic brought down fcc.gov.

If Chairman Pai cared what the public thought, he would not be reversing a rule supported by the public in order to grant more power to internet service providers, some of the most despised companies in America. Nobody wants this except Comcast, AT&T, Charter, and Time Warner.

There is no free market competition in broadband Internet in America. There is no incentive for ISPs to compete on price or on service. We, as Americans, are a captive audience; our only choices are "use whatever ISP is available at our address" and "try to participate in twenty-first century America without Internet access".

We've already seen AT&T prioritizing its own traffic and Comcast banning protocols it didn't like. We need net neutrality protections to prevent predatory, monopolistic ISPs from engaging in that behavior. This is obvious to every American who's seen their monthly bill go up while the quality of service goes down.

But Chairman Pai has made it abundantly clear that he doesn't care what the American public has to say. If he did, he wouldn't even be considering repealing net neutrality.

I was wrong about Wheeler. He backed away from the fast-lane proposal, and passed Title II regulation. It wasn't perfect, but it was better than I ever thought we'd get.

I don't think I'm wrong about Pai. I'd love to be, but I think the fix is in. Pai doesn't give a fuck what the American public has to say.

But it's not about Pai. Pai won't last forever. Trump won't last forever. Even if the Republican majority in Congress sticks around, they're going to have to face their constituents sooner or later. And while net neutrality is a partisan issue on Capitol Hill, it's got broad bipartisan support everywhere else.

I don't think today's protests are going to make a damn bit of difference to Pai. But this is a long game. We need to keep the pressure on.

And hey, I've been surprised before. I thought SOPA and the TPP were foregone conclusions too. Maybe I'll be pleasantly surprised again.

I wrote a post about VPNs a few months back, referring to the recent repeal of Obama-era regulations that would have prevented ISPs from selling customer browsing history.

There's a common refrain I've seen from people who favor the repeal, both in the government and in Internet comments sections: "Google and Facebook track you and sell your data, and the government doesn't stop them from doing it, so it's not fair to stop your ISP from doing it!"

Now, this argument is fundamentally dishonest, for the following reasons, off the top of my head:

  • Your ISP sits between you and every single site you visit. Google and Facebook have extensive tracking operations, but not that extensive.

  • You can use the Internet without using Facebook or Google. It may not be easy, but it's possible. You can't use the Internet without your ISP.

  • Google and Facebook's business model is that they provide a service and, in exchange, you allow them to gather your personal data and resell it to third parties. Your ISP's business model is that it provides service and, in exchange, you pay them eighty fucking dollars a month. Did I say eighty? They just kicked it up to one-thirty, if you want unlimited data.

    When you give your personal data to Facebook or Google to sell to third parties, you get their service in return. When you give your personal data to your ISP to sell to third parties, you get fucking nothing in return, because you're already paying your ISP money in exchange for Internet service. Is your ISP going to lower your bill in exchange for taking your personal information to sell to third parties? LOLno.

  • Google and Facebook have competitors. Those competitors don't have the dominant market position that Google and Facebook do; hell, maybe they're just plain not as good. But they exist. They're options.

    There is no significant broadband competition in the US. If I don't like my ISP, I can't just switch to another one, because there is no other one available at my address. My choices consist of Cox, no Internet, and moving.

    There's no incentive for your ISP to behave ethically. There's no incentive for your ISP to charge you fairly. There's no incentive for your ISP to provide quality service. My ISP is a monopoly. Yours probably is too. Or, at best, it might have one competitor that does all the same shit.

  • Google and Facebook have pages where you can opt out of tracking.

But. Despite the intellectual dishonesty of the "but Google and Facebook track you!" argument, there is a kernel of truth in there: yes, Google and Facebook track you, yes it's difficult to avoid that tracking, and no, there are no regulations in place to protect your data. This is a problem.

So, shortly after writing that post, I removed the Google Analytics code from this site. And now I've also updated the site so that the fonts it uses are hosted here at corporate-sellout.com, not called from Google Fonts (hat tip to the Disable Google Fonts WordPress plugin). I'm still using a Google Captcha on the Contact page for now, but I'm looking at alternatives. Plus, there are YouTube videos embedded on this site...and, well, there's nothing I can really do about preventing Google from tracking you when you load YouTube videos. Sorry about that.

I'm also planning on adding SSL to the site, eventually, but I haven't gotten around to it yet.

This blog's not a business. Occasionally somebody buys something through an Amazon Associates link, or buys my book (thanks!), but I've got a day job; I'm not here to make money. I write stuff here because I like to write stuff. Sometimes people like it, and that's cool, and it's cool to know that people are reading. But that's as far as my interest in analytics goes.

I don't resell data; I don't do SEO or A/B headlines or clickbait or any other kind of crap to try and drive people here -- hell, I hate all that shit. But I like looking at site stats once in awhile to see where people are coming from, where somebody's mentioned me, and to laugh at search terms like "did stan lee bone at jack kirby's wife".

So I'm looking for a new stats package. Server-side; just for me, not Google.

Meanwhile, I am looking for ways to use Google as little as possible, not just on this site but in general. I think I can probably get a few more posts out of that subject.

Updated 2022-02-28: Updated script for the new Techdirt comment engine.


Updated 2021-04-30: Fixed a bug that was preventing some replies from being hidden.


Updated 2019-09-11: Minor update because the site layout has changed slightly and the old version was no longer working.


Updated 2019-04-11: General cleanup; change to OOP.

Remove some techniques that are no longer needed since recent Techdirt update; add handling for some new types of predictable troll behavior.

Better blocking of flagged users who aren't logged in.


Updated 2018-08-19: Hide comments that have already been hidden by user flagging (this is mostly useful if the hideReplies boolean is set true).


Updated 2018-08-15: Added hideLoggedOut. If set true, then the script will hide any user who isn't logged in, unless their name is in the whitelist array.

Added hideReplies. If set true, then when the script hides a comment it will also hide all the replies to the comment.

If you set both hideLoggedOut and hideReplies to true, then the Techdirt comments section gets much quieter.


Updated 2018-08-09: Some doofus has been impersonating me. Script will now automatically flag and hide posts by fake Thad.

In addition to hiding posts if their subject line is too long, the script will now also hide posts if the username is too long. Additionally, the script can automatically flag posts if the subject or username exceeds a specified length.

This thing's gotten complicated enough that I think it's probably subject to copyright now. I've added a license. I chose a 3-Clause BSD License.


Updated 2018-06-20: Ignore mixed-case and non-alpha characters.


Updated 2018-03-06: Fixed case where usernames inside links were not being blocked.


Updated 2018-03-04: Added function to hide long subject lines, because some trolls like to write manifesto-length gibberish in the Subject: line.

There is now a maxSubjectLength variable (default value: 50). Any subject line exceeding that length will be hidden. If you reply to a post with a subject line exceeding that length, your reply's subject line will default to "Re: tl;dr".


Updated 2017-07-12: Added @include.


In my previous post, I mentioned that I spend too much of my life responding to trolls on Techdirt.

With that realization, I whipped up a quick Greasemonkey/Tampermonkey script to block all posts from specified usernames.

// ==UserScript==
// @name          Hide Techdirt Comments
// @namespace     https://corporate-sellout.com
// @description	  Hide comments on Techdirt, based on user and other criteria.
// @include       https://www.techdirt.com/*
// @require       https://c0.wp.com/c/5.9.1/wp-includes/js/jquery/jquery.min.js
// ==/UserScript==

const $ = jQuery;

// Boolean settings:
// if true, hide all posts from users who aren't logged in
const hideLoggedOut = true,

// if true, hide all replies to hidden posts
  hideReplies = true;

// List of users whose comments you want to hide -- collect 'em all!
const blacklistedUsers = [
  'btr1701',
  'Koby',
  'Richard Bennett'
],

// If an anonymous post begins with one of these strings, hide it
blacklistedStrings = [
  'out_of_the_blue',
  'Nothing to hide, nothing to fear'
],

// List of users whose comments you don't want to hide
whitelistedUsers = [
  'Chip',
  'Thad'
];

// global variable for storing gravatars of non-logged-in posters who have been blocked
let blockedGravatars = [],

// global variable for storing comments that aren't hidden
comments = [];

// check all non-hidden comments for a blocked gravatar
// (check each time a gravatar is blocked)
function checkCommentsForBlockedGravatar(blockedGravatar) {
  for(let i=0; i<comments.length; i++) {
    if(comments[i].gravatar === blockedGravatar) {
      comments[i].gravatarBlocked = true;
      comments[i].removeComment();
    }
  }
}


// Comment class
// Constructor
function Comment(node) {
  this.container = node;
  this.body = $('> .comment-body', this.container);
  this.nameBlock = $('.comment-author', this.body);
  this.name = $('> .fn', this.nameBlock).text();
  this.linkNode = $('> .url', this.nameBlock);
  this.loggedIn = this.linkNode.length > 0
    && this.linkNode.attr('href').startsWith('https://www.techdirt.com/user/');
  this.gravatar = $('> img', this.nameBlock).attr('src');
  this.gravatarBlocked = false;
  this.flagBtn = $('.report-button', this.body);
  this.alreadyHidden = this.container.hasClass('flagged');
  this.alreadyFlagged = this.flagBtn.hasClass('has-rating');
  this.postContent = $('.comment-content', this.body).text().trim();
  
  // If I click on the "Flag" button, remove the comment
  var that = this;
  that.flagBtn.one('click', function() {
    that.removeComment();
  });
}

// Functions
Comment.prototype = {
  constructor: Comment,
  
  checkForBlockedGravatar: function() {
    if(this.loggedIn) {
      return false;
    } else if(this.gravatarBlocked !== true) {
      // only need to find gravatar in blockedGravatars array once;
      // once this.gravatarBlocked is set true, then it will always be true.
      this.gravatarBlocked = blockedGravatars.includes(this.gravatar);
    }
    return this.gravatarBlocked;
  },
  
  blockGravatar: function() {
    this.gravatarBlocked = true;
    blockedGravatars.push(this.gravatar);
    checkCommentsForBlockedGravatar(this.gravatar);
  },
  
  removeComment: function() {
    if(hideReplies === true) {
      this.container.remove();
    } else {
      // replace comment with 'removed'
      // -- because replies will still be visible, this is necessary
      // so you can tell there's a missing post that they're replying to.
      this.body.text('removed');
    }
    if(!this.loggedIn && !this.gravatarBlocked) {
      this.blockGravatar();
    }
  },
  
  badStart: function() {
    for(let i=0; i<blacklistedStrings.length; i++) {
      if(this.postContent.startsWith(blacklistedStrings[i])) {
        return true;
      }
    }
    return false;
  },
  
  check: function() {
    if(
      this.alreadyHidden
      || this.alreadyFlagged
      || this.checkForBlockedGravatar() === true
      || blacklistedUsers.includes(this.name)
      || (this.loggedIn === false && hideLoggedOut === true && !whitelistedUsers.includes(this.name))
      || (this.name === 'Anonymous Coward' && this.badStart())
    ) {
      this.removeComment();
      return true;
    }
    return false;
  }
};

$('div.comment').each(function() {
  // skip comment if it's already been removed
  if(document.contains($(this)[0])) {
    const cmt = new Comment($(this));
    if(cmt.check() === false) {
      comments.push(cmt);
    }
  }
});

License

Copyright 2017-2021 Thaddeus R R Boyd

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Further Thoughts

(Note: The script was much smaller when I originally wrote this part of the post.)

This is a blunt instrument; it took about five minutes to write. It lacks subtlety and nuance.

Blocking all anonymous posters on Techdirt is not an ideal solution; most anons aren't trolls. (Most trolls, however, are anons.) I apologize to all the innocent anons blocked by this script.

I could make the script more precise. Techdirt's trolls are creatures of habit with certain noticeable verbal tics (more on that below); if I had a good parser, I think I could whip up a scoring system that could recognize troll posts with a high degree of accuracy.

The question is, how much time do I want to spend on that?

On the one hand, "five minutes in a text editor" is the appropriate amount of time for dealing with forum trolls. Anything else seems like more effort and attention than they deserve.

On the other hand, it's a potentially interesting project, I've always wanted to spend some time studying natural language processing, and any programming project is time well-spent if it teaches you a new skill.

So I haven't decided yet. Here's the script as it stands, in its initial, blunt-instrument-that-took-five-minutes form. If I update the script, I'll update this post.

Chip Tips

Lastly, as I can no longer see anonymous posts, this means I will likely have to give up my beloved sockpuppet, Chip, the man who hates all government regulations and loves to eat leaded paint chips. To anyone and everyone else who wants to keep the spirit of Chip alive, you have my blessing to post under his name.

A few tips on how to write as Chip:

  • Never use the backspace key.
  • Remember to add random Capital Letters and "quotation marks" to your posts, in Places where they "don't" make Sense!
  • Most sentences should end with Exclamation Points!
  • I told you So!
  • I have "lots" of Solutions! So many I can't Name a single "one"!
  • Sycophantic Idiots!
  • Every Nation eats the Paint chips it Deserves!

Boy, my regular readers are going to have no fucking idea what I'm talking about in this post.

Come back tomorrow; I plan on having a post about online privacy that should be a little less niche.

I've been meaning to blog more.

I like blogging. I like writing about shit. People seem to enjoy reading it. My friends keep telling me I should start blogging again (hi Friday!).

And I've been reading Nathan Rabin's Happy Place and really enjoying what Rabin has to say, and his enthusiasm about just being able to write about whatever he feels like.

But the kicker? Oh man.

The other day, I was checking replies to my Disqus posts.

And -- in response to a post I had written in the AV Club comments section five months ago, concerning the Black Panther: World of Wakanda comic -- some nice young fellow had written this:

Your blog sucks. Go back to sucking Ken Penders' dick.

Sonic the Hedgehog fandom is weird, you guys.

So okay, dude's obviously a troll; a quick gander at his posting history shows basically everything else he's ever written on Disqus has been arguing with atheists.

But the Penders thing? That's not random. It's far too specific.

My most recent Penders post was in 2015. At the time of this writing, it is on page 4 of this blog. So this is not a guy who decided, at random, to troll me, clicked on my name, and picked one of the posts on my blog to talk shit about.

And neither is this a guy who just now saw my Penders posts -- saw a link to them, found them on Google, whatever --, got incensed by them, and decided to write me a nastygram. Even assuming the gentlemen in question failed to notice the "Contact" link at the top of the page and instead, inexplicably, decided to look up my Disqus profile, he would have replied to one of my recent Disqus posts, not one that was five months old.

No. This is a dude who saw my posts about Ken Penders at some earlier date. Maybe as far back as 2013. And remembered them. And remembered my name. And, when he was randomly reading the comments section of an AV Club article, saw my name and felt the need to tell me off because, four years ago, I wrote some blog posts explaining that Ken Penders had a valid legal case against Archie Comics and Sega (or, as it's known in Sonic Fanboy-ese, "sucked Ken Penders' dick").

You know what? That is weirdly fucking flattering. I made an impact on this guy. People read my blog, and it matters to them.

I mean, sure, this guy is a troll and, clearly, a Sonic the Hedgehog fanboy -- those dudes are intense. I am sure he is not a representative member of my audience.

But the thing about writing whatever the hell I feel like is, I never know what's going to resonate with people.

The most attention I've ever gotten was when the online comic book press picked up on my posts about the never-finished-or-published 1990s Final Fantasy comic -- which, at that point, were already more than two years old.

And, in that same vein, my Final Fantasy 7 retrospective series continues to be popular. (Or at least did the last time I looked at my site stats. I've removed Google Analytics from this site -- that's a subject for another post -- but I'd like to get a new stats tool set up, because I like seeing what people are reading, where they're coming from, and what search terms they're using to get here.)

But these creators' rights pieces seem to get a pretty good amount of attention, too. People used to link my post on Marvel v Kirby all the time. And I once got a very nice E-Mail from Marc Tyler Nobleman for my Not My Batman post and its recognition of Bill Finger. (By the way: Batman & Bill is good; you should watch it.)

And so I'd like to get on back to yammering on about just whatever the hell it is I feel like yammering on about at the moment. Because what the hell; if I don't yammer here, I'm just going to yammer somewhere else, and frankly I spend far more time responding to trolls in the Techdirt comments section than a healthy person should.

I don't know if I'll manage 5-day-a-week posting like I used to. Maybe I will, maybe I won't. (Today I am posting on a Saturday. Whee!)

Course, if I do start blogging regularly again now, there's probably something to psychoanalyze in my doing it in response to our good friend Mr. "Your blog sucks" up there. I think humans are wired to notice criticism more than praise, and I suppose I'm no exception.

But what the hell; like I said, I've been planning to get back to blogging for awhile now anyway. And as criticism goes, I'm pretty sure this is the most fun hate mail I've ever gotten. Even better than the last unsolicited hate mail I got from a disgruntled Sonic fan, which was over 20 years ago and, in keeping with the whole "casual homophobia" theme, contained the phrase "You hump Robotnik's ugly butt!"

Sonic the Hedgehog fandom is weird, you guys.

You've probably heard by now that the US Congress just repealed Obama-era regulations preventing Internet service providers from selling their users' browsing data to advertisers. I'll probably talk more about that in future posts. For now, I'm going to focus on a specific set of steps I've taken to prevent my ISP (Cox) from seeing what sites I visit.

I use a VPN called Private Internet Access, and a hardware firewall running pfSense. If that sentence looked like gibberish to you, then the rest of this post is probably not going to help you. I plan on writing a post in the future that explains some more basic steps that people who aren't IT professionals can take to protect their privacy, but this is not that kind of post.

So, for those of you who are IT professionals (or at least comfortable building your own router), it probably won't surprise you that streaming sites like Netflix and Hulu block VPNs.

One solution to this is to use a VPN that gives you a dedicated IP (I hear good things about NordVPN but I haven't used it myself); Netflix and Hulu are less likely to see that you're using a VPN if they don't see a bunch of connections coming from the same IP address. But there are problems with this approach:

  • It costs more.
  • You're giving up a good big chunk of the anonymity that you're (presumably) using a VPN for in the first place; your ISP won't be able to monitor what sites you're visiting, but websites are going to have an easier time tracking you if nobody else outside your household is using your IP.
  • There's still no guarantee that Netflix and Hulu won't figure out that you're on a VPN and block your IP, because VPNs assign IP addresses in blocks.

So I opted, instead, to set up some firewall rules to allow Netflix and Hulu to bypass the VPN.

The downside to this approach is obvious: Cox can see me connecting to Netflix and Hulu, and also Amazon (because Netflix uses AWS). However, this information is probably of limited value to Cox; yes, they know that I use three extremely popular websites, when I connect to them, and how much data I upload and download, but that's it; Netflix, Hulu, and Amazon all force HTTPS, so while Cox can see the IPs, it can't see the specific pages I'm going to, what videos I'm watching, etc. In my estimation, letting Cox see that I'm connecting to those sites is an acceptable tradeoff for not letting Cox see any other sites I'm connecting to.

There are a number of guides on how to get this set up, but here are the three that helped me the most:

OpenVPN Step-by-Step Setup for pfsense -- This is the first step; it'll help you route all your traffic through Private Internet Access. (Other VPNs -- at least, ones that use OpenVPN -- are probably pretty similar.)

Hulu Traffic -- Setting up Hulu to bypass the VPN is an easy and straightforward process; you just need to add an alias for a set of FQDNs and then create a rule routing connections to that alias to WAN instead of OpenVPN.

Netflix to WAN not OPT1 -- Netflix is trickier than Hulu, partly because (as mentioned above) it uses AWS and partly because the list of IPs associated with AWS and Netflix is large and subject to change. So in this case, instead of just a list of FQDNs, you'll want to set up a couple of rules in pfBlockerNG to automatically download, and periodically update, lists of those IPs.

That's it. Keep in mind that VPN isn't a silver bullet solution, and there are still other steps you'll want to take to protect your privacy. I'll plan on covering some of them in future posts.

The other day I wrote a Letter to the Editor to the Arizona Republic. I don't know if it made the print edition, but it's up on azcentral.com.

The letter was in response to an op/ed by Lisa Loo, titled Do judges justice. Finish marking your ballot. I appreciate Loo's message; down-ballot races are important, and your vote counts for a lot more, proportionally, than your vote for President.

But it can be damned difficult to find information on down-ballot candidates and initiatives; the less high-profile and glamorous the race, the harder it is to learn about it.

Loo points to Judicial Performance Review (azjudges.info), which scores judges on a variety of criteria.

The problem is, without context, those scores are just numbers; they don't mean anything if no explanation is provided.

So here's my letter to the editor, quoted in full:

I appreciated Lisa Loo's op-ed on the importance of studying up on judges and filling out the complete ballot, but it's easier said than done.

I know Jo Lynn Gentry is the only judge to receive failing marks, but I have been unable to find any explanation of why. Low scores out of context lack meaning, and I'm reluctant to cast a vote without an explanation for why I'm casting it.

It's not just the judges; a number of down-ballot candidates and local initiatives are obscure and have little information available. (Should TUHSD be allowed to sell two lots of property? I have no idea!)

What can we as voters do to educate ourselves when so little information is available?

The Republic didn't respond with any good answers for these down-ballot races.

A commenter named Jay Martin added this:

Exactly, I've been scouring why such a low score for hours and the only thing I can think of is that she ruled against blocking Prop 205 from the ballot and people against the measure are now upset at this.

Prop 205 is the ballot initiative to legalize marijuana. (Sort of. It's not full legalization, and it heavily favors existing vendors, basically setting up a cartel. Suffice it to say, I'm voting Yes because any move to stop putting people in prison for marijuana use is a step in the right direction, even if this isn't the ideal way of doing it.) County Attorney Bill Montgomery challenged it and tried to prevent it from getting on the ballot; Judge Gentry dismissed his challenge.

Could that be the reason Gentry has received such low marks?

In a word, no. Gentry's dismissal of the 205 challenge happened two months after Judicial Performance Review released her low scores.

So I have no idea why she Does Not Meet Expectations. And I'm not willing to vote to remove her without a reason. So I guess I get to decide between voting to keep her or not voting on her either way.

I still don't know what to do about that TUHSD thing, either, but I've got a friend who works at Marcos; I guess I should text him and ask if he knows what the deal is.

In 2006, I made a mistake.

I was working for a small company in north Phoenix. (That was not the mistake. ...Well, actually, it was, but not the one I'm here to talk about today.) And I represented that company in a networking group of local small businesses.

One of the people in the group was Sam Crump. I'm not used to using people's real names when I tell stories like this, but Sam's a public figure, so I'm going to go ahead and make an exception in this case.

Sam owns a law firm. I can't tell you anything about it from personal experience, but I hear good things.

And in 2006, Sam decided to run for the state legislature.

Sam's politics are not my politics; he would later describe himself as a "Tea Party Republican," though people weren't calling themselves that yet. I wouldn't have voted for him. But I liked him; he was a nice guy, and so when he asked us all to join his mailing list, I went ahead and wrote my E-Mail down.

Never put your E-Mail address on a political mailing list. Not for a politician you agree with, and certainly not for one whose views you find appalling. No matter how much you like him as a person.

Now, I don't know for sure that Sam or his people sold or gave away my E-Mail address to some group that collects E-Mail addresses for various fringe Republican candidates. It could be just a coincidence. But it's an E-Mail address I don't give out to a lot of people, it's the only E-Mail where I regularly get right-wing spam, and it just so happens that I started getting right-wing spam at that address after giving it to a local right-wing politician. Maybe whatever godforsaken list that address got put on got it from someplace else. But if I had to guess, I'd say they got it from Sam.

In the past, I've gotten spam for Arizona political candidates including Pamela Gorman and Joe Arpaio. But the latest politician who won't leave me the fuck alone is a woman named Calandra Vargas, who is running for Congress in Colorado Springs.

I have never set foot in the state of Colorado.

In fact, I've explained that to Ms. Vargas, or whoever's reading her inbox (if anybody), multiple times, in between clicking the Unsubscribe link at the bottom of her E-Mails.

The campaign's response to my first unsubscribe request, a few weeks ago, was to send me three more fucking E-Mails. When I got them, I clicked the Unsubscribe link again, and sent a reply letting Ms. Vargas, or whoever's reading her inbox (if anybody), know that if I received any more E-Mails from her campaign I would report her to the FCC for violating the CAN-SPAM Act.

I got another E-Mail from the Vargas campaign today.

Calandra Vargas is a politician, so she's probably not used to dealing with people who keep their promises. But I'm a man of my word, and I filed that complaint. And if I hear from her again, I'll file another one.

Here's the FCC's guide to reporting spam. If you're getting unsolicited E-Mails from politicians who won't let you unsubscribe from their lists, they're breaking the law.

From: Doris
Subject: AOMEI Freeware Review Invitation (corporate-sellout.com contact form)
06/11/2016 11:15 PM

Dear admin,

This is Doris from AOMEI Technology Ltd. I am writing for inviting you to evaluate our free backup and restore software - AOMEI Backupper Standard, the simplest free backup software. It has been upgraded to version 3.2 now, supporting Windows 10, Windows 8.1, Windows 8, Windows 7, Vista, and XP.

As a freeware, our Backupper has many advantages which most of other free backup software lack, such as incremental backup, differential backup, schedule automatic backup, create bootable media, PXE boot tool, dissimilar hardware restore and file synchronization etc.
Download Link: [direct link to an executable file]
Learn more: [some generically-named website]

Could you please spare your precious time to test and review our freeware? Or could you please take a look at that and pass on your comments to me, any of your suggestion will be much appreciated.

I am eagerly looking forward to your reply.

From: Thad Boyd
Subject: Re: AOMEI Freeware Review Invitation (corporate-sellout.com contact form)
06/13/2016 10:01 PM

What's that, Doris? You want to know if I'd be interested in writing up a nice blog post about how AOMEI Technology Ltd. is a dodgy company that advertises its products by spamming people's contact forms? Why, I would LOVE to!

Has it really been over two years since my last Zappa post? Well, time to dust off the most-used tag on this here blog.

If you're a Zappa fan, you've probably already heard about the Who the Fuck is Frank Zappa? Kickstarter. But in case you haven't:

Alex Winter (best-known as Bill from the Bill & Ted movies, but more frequently a director these days) is making a documentary about Frank. And as part of the process, he's helping Joe Travers to preserve and digitize the Zappa Vault.

Winter recently explained in Update #18 that the first million dollars raised in the Kickstarter campaign will all go to preserving the Vault, and that he won't put any Kickstarter dollars toward the documentary until and unless it passes $1 million. I think this shows he's got his priorities in order; I definitely want to see the documentary, but I agree with him that the most important step in preserving Zappa's legacy is preserving his work and making sure we don't lose it to degrading tape and film.

The Kickstarter runs through April 8. There are add-on rewards available, too, which don't require you to pledge to the Kickstarter and which will still be available after it ends.

You know, I've always wanted a Zappa for President T-shirt.