The Role of Anger

Now another note that’s been sitting in my bin of writing advice drafts for a while, that should really be on this blog instead.

When you’re writing a character and they get angry, it’s very important to understand the root causes, both when and why, because anger is a very special emotion, not quite like the others.

While most emotions come naturally, anger is, on some level, chosen as an alternative to just accepting some other emotion… and that’s also why it’s so exhausting. Even if it’s become a habit, when anger tires you out, it’s because of the mental effort involved in forcing your mind toward one state, when it would more naturally try to be in another state you’re trying to reject.

You feel angry because you don’t want to accept what the situation is forcing you to feel, be it embarrassment, or helplessness, or despair, or grief, or any of countless other unpleasant emotions. Anger is the last action available to you in a powerless situation… the one last “f___ you” your brain offers when the alternative is to accept that there’s nothing you can do. (You can be punished for being angry, but nobody can deny you the option to feel it without resorting to medication.)

I’ve had it argued to me that this doesn’t feel quite right for things like impulsive rage, and I’d be thrilled to discuss further, but, for now, I think that this is a good approximation, even if it turns out to not be perfectly correct.

Even if a character’s rage has become so impulsive that it skips right over the emotion it would otherwise be fighting to replace, it’s useful to always think of anger as being in reaction to something that the character would more naturally feel.

This is also why it’s so important to properly understand why a character is feeling angry. It’s not just a question of what makes them angry, but what they’re trying to reject and why they felt it was better to feel angry and compromise their judgment than to accept that other emotion.

John/Jane Doe would feel fear or despair or some other thing because of backstory element A, but, instead, they feel anger or rage or whatever because of backstory element B.

There’s also one other interesting observation that came to me while preparing this: Depending on the situation and how you look at it, you might say that feeling angry is an act of cowardice. The sign of someone who, on some level, isn’t brave enough to confront and accept the emotion it’s replacing. Not always a useful way to look at things… but potentially the lead-up to a novel twist to a character. Anger may exist as part of our motivation structure to solve problems, but society has made it much more common to run into a problem where anger just prevents you from seeking or accepting the help you need.

Posted in Writing | Leave a comment

Fanfiction – Changeling

Changeling by GoWithTheFlo20

This is an interesting case. It’s a Harry Potter – Star Trek: Deep Space 9 crossover that’s quite early in its arc, and has a lot of potential, but it’s also a bit of an “OC named Harry Potter” story.

Specifically, it’s a femHarry story where Harry Potter is a changeling and winds up on Deep Space 9 early in the story arc.

It’s not a bad story by any means, but you can probably get a sense for what I mean when I say that this is an “OC named Harry Potter” story. The story changed Harry’s gender and species, and presents her in a narrative that, while engaging, doesn’t leap to introduce details that are strongly associated with who canon Harry Potter is as a person, and she winds up letting the DS9 crew continue to use the temporary name they gave her… Bu.

Yes, the parts before Harry arrives on Deep Space 9 have a lot of Harry Potter details, but I get a sense that they lean more toward justifying using Harry Potter in a role that already had an identity of its own, rather than establishing that the narrative fundamentally needs who Harry already was.

Sure, “Bu” is Harry Potter because her initial “play dead” response was conditioned by the Dursleys, and she’s got Harry’s hero complex when she refuses to join the Great Link so long as doing so would leave Odo alone again, and she knows enough about glasses to ask the replicator for some test pairs for Weyoun, but that combination of traits isn’t particularly unique to Harry Potter and combining the name “Bu” with the personality she has makes it harder to see why this character should have begun as a femHarry, rather than an interesting OC. (And, to be honest, I can’t remember the story even trying to justify why a changeling Harry would know that much about glasses.)

So, does it need to be a Harry Potter crossover at all? Well, at the moment, the story arc isn’t far enough in to have seen “Bu” do anything a muggle couldn’t do, so I’ll have to give it the benefit of the doubt that magical ability is going to be significant and that’s why it’s a Harry Potter crossover rather than a non-crossover DS9 story.

With all that focused on, what about the good parts? Why did I think this felt worth a review? Well, OC in disguise or not, there’s something about how Harry/Bu and her interactions with others are portrayed which I really like. It’s got that touch of innocent warmth to the tone of the writing that I’ve seen in various “character as a little kid” stories in various fandoms.

It’s also a story with a main character who is very distinctly not human (something else I like)… which it’s already using to good effect for character exploration and development… and, even without the author’s note telling me the intended pairings, I can already feel that it’s going to be a story which explores and develops Weyoun as a very interesting main character.

(Though I am mildly worried about whether the author will be successful at whatever is meant by putting “Garak/Julian” in the pairing chart. As close friendship, yes… but, if more is intended, it may require a kind of character-writing skill that would have noticed and avoided “OC named <canon character>” writing before it happened.)

It’s hard to say more, given how early in its arc it is, but, from what I’ve seen so far, I’d say that it’ll be somewhere between 4.0 and 4.5 out of 5 once it’s got more chapters under its belt and, as long as you’re willing to not be distracted by expectations of who Harry Potter is as a character, it’s something you should check out.

P.S. If you want to see something similar to this done by a professional author, check out the Web Shifters series by Julie E. Czerneda. It’s been at least a decade since I’ve read it, so I can’t write a full review from memory, but I remember enjoying it.

Posted in Fanfiction | Leave a comment

Warning about a new comment spam scam

This morning, I found a message in my comment moderation queue which I thought I should warn people about.

Like most comment spam these days, it listed a genuine-looking e-mail address at a big-name provider, but instead of trying to be SEO spam, the URL field was pointed at the front page of Shutterstock and the message body tried to scare me with claims that they were a certified photographer (what does that even mean?), I had photos on my site that were infringing their copyrights, and if I didn’t take them down, I’d be reported to my hosting provider and/or sued.

Now I find this to be a hilarious piece of scam-work for three reasons:

  1. My site has almost no images of any kind in order to keep bandwidth consumption down
  2. There’s only one image on the entire site that isn’t either part of the bundled-with-WordPress theme I’m using, a screenshot I took of non-photographic content, or a diagram I drew.
  3. That single photo is the picture of me in the sidebar, which was taken by a member of my immediate family out behind our house, not some random stranger on the Internet.

…so why am I bringing this up? Well, the threat tries to drive you to download something off Google Drive which is supposedly a list of what you’ve infringed.

First, that should already be ringing alarm bells. If they could customize the URL, why couldn’t they just say what I’ve infringed in the message like a DMCA takedown message would?

…and why wouldn’t they mention the DMCA or EUCD, which have the force of law behind them, when so many people are over-eager to do so? Probably because sending such a takedown requires you to list what you want to be taken down and swear under penalty of perjury that you hold the rights to it.

(Not to mention, why would a legitimate sender post a comment on a random post with no images in it, rather than using the contact form.)

Second, a line like “Take a look at this document with the links to my images you used at and my earlier publications to obtain the evidence of my ownership.” is classic form-letter spam… though, granted, spam usually just uses in place of actually referring to the site in a way that would require a human to compose.

This is clearly a message that’s trying to come across as written by a human, but has the markers of being submitted by a bot. Obvious botspam if you know what to look for.

In fact, I’ve been meaning to rework my anti-spam code to require filling out an hCaptcha if a message mentions the domain name of the site the message is being submitted to without it being part of a proper URL (i.e. instead of or whatever), because it’s such a common spam tactic to copy-paste the domain into the form letter to make it sound more official.

I decided to see what they were pushing, so I spun up an up-to-date copy of Chromium in Incognito Mode in a sandbox on Linux and pasted in the URL… it immediately asked me to log into my Google Account.

Now, I’m not familiar with Google Sites, but it wouldn’t surprise me if there’s some way for them to get a log of which Google accounts accessed a file that’s been marked private (enterprise customers would want that), and this is some attempt to scrape e-mails to sell to spammers.

I didn’t feel like creating a throwaway Google account just to investigate further, so I left it there.

The takeaway?

Don’t let spammers goad you into revealing your contact information… especially when their messages look so unlike real legal threats.

UPDATE 2021-05-25: Received another one today which actually did do the DMCA boilerplate and didn’t require login to get to the “download proof” button when I opened it in a sandboxed copy of Chromium in Incognito Mode.

Unfortunately, “Your download should begin automatically.” didn’t, no matter how many times I clicked the “Download my file” button, so, unless they’re trying to exploit my browser to infect my system, I still have no idea what the scam is.

…and since they’re still posting random comments on fanfiction reviews with no images (rather than using the contact form), on a blog with almost no images, and all the images are things I own the rights to, and they still won’t say what they claim I’m infringing in the message itself, I’m still convinced that it’s a scam.

(Plus, the DMCA boilerplate seems to be addressing me as “a service provider”, which suggests they copy-pasted somebody’s example of DMCA text that would be sent to a service like or Blogger, rather than to the blogger themself.)

To be clear how serious I am about these people acting in bad faith, here’s a breakdown of all the image files that show up outside the the stock WordPress theme I’ve extended and the common WordPress plugins I’m using, when I check my local backup of my WordPress install:

  1. The site’s favicon, which I created from scratch by clicking pixels together in GIMP.
  2. One photo of me taken by a family member out behind our house.
  3. A bunch of screenshots of open-source programs I created, none of which display photos.
  4. A bunch of screenshots (often annotated) showing the effects of custom CSS userstyles I wrote, none of which depict anything more photographic than a 23px-by-42px thumbnail of a game box in a cropped and annotated screenshot of an Amazon wishlist.
  5. A bunch of Inkscape drawings and flowcharts I did from scratch.
  6. A few cropped screenshots of things like my custom system tray icons and my Conky theme.
  7. One screenshot of a Chameleon Twist error message that is eligible for fair use under the same terms Wikipedia uses to justify their screenshots, and which would certainly have nothing to do with a copyright claim which links to the front page of shutterstock in the comment form’s URL field.
  8. A bunch of old icons for sites like, FriendFeed, StumbleUpon, and Google Code from a plugin I removed ages ago, which I forgot to delete… and those haven’t actually been displayed by the site in a decade… just loose files sitting on the server taking up space.

Unless a WordPress plugin author turned evil and slipped something in as part of a routine update, just so they could extort downstream users, that’s it. Those are all the images I’ve uploaded in the 16 years I’ve been running this blog.

…so don’t pay these scammers any attention. (After all, depending on how a blog is configured, submitting something like this to a comment form may go straight to public display without the author ever getting an e-mail notification. If that’s not spam, then it’s unbelievable, record-breaking incompetence.)

Posted in Web Wandering & Opinion | 2 Comments

Nicer Terminal Commands For Flatpak-Installed Applications

If you’re like me, you probably like to launch your GUI applications from the terminal at least occasionally… or from scripts… or from a quick launcher which doesn’t search .desktop names because you find it annoying to have your intent second-guessed by poor ergonomics in “multiple things match” situations.

However, as shown by the Flatpak developers closing #1188: Improve cli application experience and then locking it because real-world reports of how awkward the current situation is (eg. for invoking a Flatpak-installed copy of Meld from git merge) are apparently “abusive comments”, /var/lib/flatpak/exports/bin is the best we’ll get out of them, and I don’t like typing org.inkscape.Inkscape in the terminal.

I still think Flatpak is the best solution for a lot of other things which I don’t want to have to do myself (especially when paired with using Flatseal to lock down app permissions further), but this is ugly, it’s a usability regression, and it doesn’t even tab-complete well.

Fortunately, since I’m an end-user who doesn’t have to solve all the edge-cases, it’s easy for me to hack together a solution that works in all my use-cases.


  1. Query Flatpak for the list of installed application IDs (flatpak list --columns=ref)
  2. Run flatpak info -m on each application ID and parse out the application’s actual command name (if one exists) from the .ini-esque output (not perfect, since some app developers/maintainers will use/omit launcher wrappers when they don’t expect you to have to type the name, but it gets you 99% of the way. For example, Flatseal‘s actual binary name is com.github.tchx84.Flatseal, not flatseal, and Flatpak is a perfect way to distrust something like JDownloader that you still need to use, but its command is jd-wrapper.)
  3. Add a folder to the end of your PATH containing exec flatpak run ... "$@" scripts named after the extracted command names. (Better than using alias because you don’t have to coordinate re-source-ing the file in each open terminal for updates to apply.)

…and so, I present to you a proof of concept. It’s got shortcomings, but those are all fixable when I have time to come back to it and rewrite it in a language with a proper .ini parser:

Posted in Geek Stuff | Leave a comment

RAR Test Files

Quick question. How many people realized that it’s legally impossible to create a RAR file without using WinRAR, RAR for Linux, etc., all of which are shareware?

At first, that might seem like no big deal, given that we have 7-Zip now… until you realize how difficult it is to be sure you’re legally in the clear if you have something that unpacks RAR files, or RAR-based formats like CBR and RSN and want to distribute some RAR files as part of your test suite.

Well, when Clint from Lazy Game Reviews released a video titled Registering WinRAR in 2021: How Far Back Does It Work?, I decided that I had reason enough to change that, so I bought a WinRAR license for my Windows XP retro-hobby PC (and, since the license allows a home user to share one license between all their devices, also for my Linux desktop PC and my Windows 98 retro PC).

Home users may use their single computer usage license on all computers and mobile devices (USB drive, external hard drive, etc.) which are property of the license owner.

I’m still waiting for my “WinRAR Physical Delivery on CD” (CA$ 13.94 extra) to arrive, but I’ve already used the digital delivery license key to make a nice load of test RAR and CBR files for the batch file corruption checker that I’m writing which shells out to /usr/bin/unrar t on Linux.

They contain either a testfile.txt or a PNG and a JPG, as appropriate, all made from scratch by me, and all designed to be as compact as possible while still being recognizable as the expected file formats. You’re welcome to use them for whatever you want.

P.S. Since I also have Amiga Forever 2016, I’m looking for suggestions for similar “can’t be made on Linux/Windows using 100% gratis software” formats to build up a complementary repo of Amiga test files.

So far, I’ve combined the Amiga Kickstart ROMs I paid for with the freeware’d LZX release from LZX_Y2KF.LHA to make an LZX test file that lsar -t from The Unarchiver’s command-line tools (mirror) can verify.

Posted in Geek Stuff | Leave a comment

Stripping Emoji from File And Folder Names

There’s an annoying little problem that happens sometimes when you save stuff off the web, which the popularity of emoji has brought into the spotlight: Some tools still assume Unicode code points will fit within 16 bits and break with characters outside the Basic Multilingual Plane (BMP for short).

I’ve seen this happen with git gui where I had to adjust the test suites for some Unicode-processing code to use character escapes instead but, in this case, the problem is astral characters in filenames.

If you’ve ever used something like Ctrl+S on a Tumblr page or youtube-dl on a video that uses emoji in the title, you might have discovered that CD/DVD-burning GUIs like K3b run into errors with mkisofs/genisoimage when you try to save such files onto a typical Joliet+RockRidge ISO.

It used to be just one or two, so I’d rename them away manually within K3b before burning the disc but, now, I’m starting to see a lot of them… so I wrote a quick little script that recurses through one or more folders (I forgot the usual “Is this a file? Skip os.walk and go straight to the file handler” code, so no file paths) and renames away any codepoints above 0xFFFF.

I’m not sure what Windows tools might break on non-BMP codepoints in filenames, but I habitually steer clear of anything I know will complicate making scripts portable so it should work anywhere you’ve got Python 3 installed.


Posted in Geek Stuff | Leave a comment

Food For Thought

I was making food and my mind got to wandering.

“Broccoli… sounds like broccoly… same construction as shiny or smelly… what does it mean to have the characteristic of broccol?”

“Cucumber… OK, If the vegetable is a “cucumb-er”, what does the verb ‘to cucumb’ mean?”

“…and I know that broccol-y (having the characteristic of) and broccol-ish (resembling) aren’t the same thing, but where do broccol-esque and broccol-oid fit in? Hmm. This needs more thought.”

Yes, I know broccoli is an Italian loanword and cucumber is a corruption of the Old French cocombre… but that doesn’t stop my mind from getting silly and I wouldn’t want to, because being in that habit is what makes me notice the things that go into my better reviews.

Posted in Web Wandering & Opinion | Leave a comment