My skin gets irritated when I shave. It gets irritated when I don't shave. I've tried electric razors and I've tried cartridge razors; the past few years, I've been using a Merkur 25C safety razor with Bic double-edged blades (which I settled on after a comparison of double-edged razor blades).

A couple of weeks ago, I developed a shaving rash, on the left side of my face, around and under my chin. I've been trying to get it to clear up, but haven't had much luck yet. (I'll try not to use the word "rash" again for the remainder of this post.)

I found some articles with titles like How to Get Rid of Razor Burn Fast, Simple Ways to Prevent Skin Irritation After Shaving, and How to Prevent Shaving Rash (hey, that one's not my fault; it's the title of the page). I also found my way to /r/wicked_edge, Reddit's Home for Traditional Wetshaving. It's...quite the rabbit-hole.

The users of Wicked Edge have some opinions on things. First of all, they don't much care for William's Mug, the cheap shaving soap I've been using, though several of them say that, if you add enough water to it, it foams up more and isn't so bad.

I tried that. I grew out my beard for a few days and then, when I couldn't take the itching anymore and it looked like the redness was clearing up, I shaved again. True to the Wicked Edge users' recommendation, more water meant better foam. But after a couple days, my chin started to flare up again. So I'm going to have to try something else.

And oh! there are so very many things to try. Blades! Soaps! Oils! Moisturize more! Moisturize less! Use alum! Use witch hazel! Stop using astringents! Lotion-based aftershave, alcohol-based aftershave, stop using aftershave! Ultimately, the challenge is that everybody's different, and what works for one guy won't work for every guy.

For now, I'm growing the beard back out, hitting the irritated skin with tea tree oil (a couple of drops on a wet cotton pad) and aloe vera (straight from the plant) a couple of times a day and hoping it'll go away soon. Once that happens, I've got some new stuff to try.

I saw several recommendations for Voskhod razors as providing a smooth shave without being too sharp; I'm going to try those. I know my technique needs work; I'm in a habit of pressing, which I need to unlearn because I know that's contributing to the irritation.

I also saw a number of soap recommendations. Consensus seems to be that the best soaps are tallow-based, but I'm not big on animal products; fortunately, there are lots of recommendations for vegan soaps, too. I ordered a few samples from Maggard Razors; I'll try them out, see if any of them work, and plan on reporting back later.

A few months back, I tried to start blogging regularly again.

It lasted five days and five posts, at which point I started experiencing some debilitating thumb pain (carpal tunnel?). The thumb pain's not gone but it's under better control, so maybe I'll take another crack at it.

As I noted at the time, there were a couple things that inspired me to give another shot at regular blogging. One was an angry Sonic the Hedgehog fan who was so incensed by a years-old series of blog posts about Ken Penders that he just had to tell me about it when he came across my name in an entirely unrelated conversation. (Since then I've actually toyed with the idea of reposting my old, 1997-era Sonic the Hedgehog comic reviews here, but unfortunately I haven't been able to find them. They were on the same hard drive as KateStory Book IX, which I went to all that trouble to recover nine years ago; I suspect the files are still somewhere in my giant stack of hard drives but I haven't been able to find them.)

But another big inspiration was a blog called Nathan Rabin's Happy Place.

I first became a fan of Nathan Rabin about a decade ago, when he was the head writer of The AV Club and writing a column then called My Year of Flops. Every week for a year, Rabin reviewed a movie that was a commercial failure and evaluated whether it was really as bad as its reputation suggests.

I love bad movies. I love good movies. I love movies that other people don't love. My Year of Flops was right smack-dab in my wheelhouse.

My Year of Flops was eventually completed and released as a book. But the column continued after that first year, under the title My World of Flops; it expanded beyond failed films to include failed books, albums, and recently even a failed presidential campaign.

The AV Club is no longer the kind of site that does features like My World of Flops. So Rabin has started his own, Patreon-supported blog, Nathan Rabin's Happy Place. He's still writing My World of Flops, and other, similar features where he examines lesser-loved media (like Cannon Films). He also talks about other stuff, from politics to brutally honest discussions of his life experiences, including financial hardships and struggles with depression.

But my favorite of his features right now is The Weird Accordion to Al. Rabin literally wrote the book on "Weird Al" Yankovic (it's called Weird Al: The Book), and now he's taking a song-by-song look at Al's entire discography. (As of this writing he's up to Talk Soup from Alapalooza.)

I love Weird Al. I've loved Weird Al for over 25 years. Hell, all this talk about Weird Al has me thinking maybe I'll write some posts about Weird Al. (They won't be as good as Rabin's. But they'll have the added benefit of being about me.)

If you're a "Weird Al" Yankovic fan, you owe it to yourself to read The Weird Accordion to Al. And hey, if you like what you see and can spare a little money for it, kick in on Nathan's Patreon.

It's not just that Nathan's work is enjoyable, insightful, and frequently funny. It's also that his enthusiasm for his blog is infectious. I read a post where he talked about how easy it's turned out to be to write blog posts every day, and I got to thinking, shit, I used to do that for free, I enjoyed it so much. And I thought, y'know, maybe I should start doing that again. I'm going to be writing about whatever the hell's on my mind anyway, whether it's here or on Brontoforumus or The Avocado or the Techdirt comments -- so what the hell, why not here?

So thanks, Nathan Rabin, for giving me the bug again. I don't think I'll manage the same pace I did back in '11-'13 (seven posts a week about Frank Zappa, five posts a week about other stuff), but I'm still going to try and post more often.

And I'm sure those Sonic the Hedgehog comic book reviews are around here somewhere.

In 2004, in the summer before my last year at NAU, I worked at USGS, on the Astrogeology Team. What I did there was nothing special, but it was a pretty special place to be, especially at that time.

I worked on a package called ISIS, Integrated Software for Imagers and Spectrometers. It was software for processing high-resolution photos we received from sources including the Lunar Orbiter, the Mars Rover...and Cassini.

Cassini entered Saturn orbit shortly after I started working there. It was an exciting time. I got to spend a lot of time looking at images that looked a lot like these:

Enceladus features
Enceladus features.
I grabbed this image from FiveThirtyEight. Original source is, obviously, NASA.

My work on ISIS wasn't anything high-level or complicated. I edited makefiles, so that the ISIS source code (a mix of C and FORTRAN) would compile for different platforms. If memory serves, we supported Windows, OSX, Solaris, and x86 GNU/Linux.

My work wasn't glamorous, and I'm sure it's all long-gone for the codebase. But I was thrilled just to be on the team, to be part of something like that -- getting photos back from Saturn.

It's been more than thirteen years, and I've had nearly that many jobs, since my time at USGS. But I still feel that connection to the work and to the project. In all that time, every time I've see a headline about Cassini or Saturn, I've checked out the article. My favorite part is always the pictures.

Today, Cassini concludes its journey, burning up on entry into Saturn's atmosphere, transmitting data back for as long as it can.

It's been a good run. And I'll never forget the small part I played in it.

I've got some kind of carpal tunnel or arthritis or something going on, and my right thumb's been bothering me for days. I'm going to try and spend less time typing until it gets better.

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 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     http://corporate-sellout.com
// @description	  Hide comments on Techdirt, based on user and comment length.
// @include       https://www.techdirt.com/articles/*
// @include       https://www.techdirt.com/blog/*
// @require       https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js
// ==/UserScript==

// Maximum length of Subject and Name before hiding/flagging contents
const subjectLengthToHide = 50,
  subjectLengthToFlag = 80,
  nameLengthToHide = 26,  // length of "Anonymous Anonymous Coward"
  nameLengthToFlag = 30,
      
// Boolean settings:
// if true, hide all posts from users who aren't logged in
  hideLoggedOut = true,
  
// if true, hide all replies to hidden posts
  hideReplies = true,

// After this date, anyone posting as "Thad" who is not logged in is an imposter
  fakeThadDate = new Date('2018-08-01');

// List of users whose comments you want to hide -- collect 'em all!
var blacklist = [
  'Anonymous Coward',
  'MyNameHere',
  'Richard Bennett',
  'John Smith',
  'ROGS',
  'JEDIDIAH'
];

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

const clearInput = function() {
  $('#replysubject').val('Re: tl;dr');
};

// Convert string to all-lowercase and remove non-alpha characters
function trimString(str) {
  str = str.toLowerCase();
  return str.replace(/[^a-z+]+/g, '');
}

// get div that contains username / login information from comment
function nameBlock(cmt) {
  return $('.commentname > div', cmt);
}

// Check whether user is logged-in
function isLoggedIn(cmt) {
  return $('> :nth-child(2)', nameBlock(cmt)).text() === 'profile';
}

// Check whether post has already been hidden by the community
function alreadyHidden(cmt) {
  return $('> .abusivecomment', cmt).length > 0;
}

// Flag a comment
function flag(cmt) {
  var flagBtn = $('.report-button', cmt);
  if(!flagBtn.hasClass('down')) {
    var clickEvent = document.createEvent('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    flagBtn[0].dispatchEvent(clickEvent);
  }
}

// Hide replies to a comment (requires threaded view)
function hideRepliesToComment(cmt) {
  var next = cmt.next();
  if(next.hasClass('nest')) {
  // Comment has replies; remove them.
    next.remove();
  }
}

// Check if user is not logged in and name length exceeds nameLengthToHide
function longName(cmt, name, loggedIn) {
  if(!loggedIn && name.length > nameLengthToHide && !whitelist.includes(name)) {
    // If name exceeds nameLengthToFlag, flag post
    if(name.length > nameLengthToFlag) {
      flag(cmt);
    }
    return true;
  }
  return false;
}

// Determine whether poster is Fake Thad
function fakeThad(cmt, name, loggedIn) {
  if(loggedIn === true) {
    // logged-in; user is not fake Thad.
    return false;
  }
  
  if(name === 'thad') {
    // Poster is "Thad", but is not logged in.
    // If post is newer than fakeThadDate, poster is Fake Thad.
    var dateString = $('i', nameBlock(cmt)).text();
      
    dateString = dateString.split(' @ ')[0];

    var date = new Date(dateString);
    if(date > fakeThadDate) {
      flag(cmt);
      return true;
    }
    
    // Post is older than fakeThadDate; do nothing.
    return false;
  }
  
  // User is not logged in and name is not exact match for 'Thad'.
  // Check whether it contains 'Thad' as a substring.
  if(name.includes('thad')) {
    flag(cmt);
    return true;
  }
  return false;
}

function checkName(cmt) {
  var fullName = $('.commentname > div > :first-child', cmt).text(),
    trimmedName = trimString(fullName),
    loggedIn = isLoggedIn(cmt);
  
  if(alreadyHidden(cmt)
    || longName(cmt, fullName, loggedIn)
    || blacklist.includes(trimmedName)
    || fakeThad(cmt, trimmedName, loggedIn)
    || (loggedIn === false && hideLoggedOut === true && !whitelist.includes(fullName))
  ) {
    if(hideReplies === true) {
      hideRepliesToComment(cmt);
      cmt.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.
      cmt.text('removed');
    }
    return true;
  }
  
  return false;
}

function trimSubject(cmt) {
  var subjectNode = $('.commentsubject', cmt),
    subjectText = subjectNode.text(),
    len = subjectText.length;

  if(len > subjectLengthToHide) {
    subjectNode.empty();

    var cmtId = cmt.attr('id').substr(1),
      replyLink = $('#cmmt_link_' + cmtId);

    replyLink.click(clearInput);
    
    // If subject exceeds subjectLengthToFlag, user is not logged-in, and post is not a reply, then flag.
    if(len > subjectLengthToFlag && !isLoggedIn(cmt) && !subjectText.startsWith('Re:')) {
      flag(cmt);
    }
  }
}

for(var i=0; i<blacklist.length; i++) {
  blacklist[i] = trimString(blacklist[i]);
}

$('.cmt').each(function() {
  var cmt = $(this);
  
  // skip comment if it's already been removed
  if(document.contains(cmt[0])) {
    var removed = checkName(cmt);

    if(!removed) {
      trimSubject(cmt);
    }
  }
});

License

Copyright 2017-2018 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.