Recommended “Politics in Harry Potter” fics

Today, I’m rounding up the Harry Potter fics which I think do the best job of making Wizarding politics and/or governance a major focus of the story.

…and when I say a “major focus”, I don’t mean “very important to the plot” or “Harry Potter uses some tricks to win emancipation” or some other recurring trope. I mean stories where the politics, nature, or history of wizarding governance are a significant portion of what the story is “about” rather than just being a well-developed means to an end.

Bear in mind that I don’t actively seek out these sorts of fics, so I welcome suggestions for stories I might have missed. Also, I’m not particularly pleased with how this post came out, stylistically, but I don’t want to give this the whole “essay that you’re being marked on” treatment, so please excuse any writing that doesn’t flow as naturally as usual.

That said, let’s get to it…

Long Live The Queen by offsides
Length: 174,577 words
Status: Complete
Have you ever wanted to read a “Harry Potter lays the legal smackdown on the wizarding government” fic that was actually good? If so, this is the fic for you.
The story begins when on the train ride home after Voldemort’s return, Harry’s frustration with the ministry is draws an off-handed “There’s not a lot you can do about it mate, not unless someone dies and makes you King,” from Ron, which prompts Harry and Hermione to realize that there might actually be an authority higher than the corrupt wizarding government to appeal to.
Realizing that it might be possible to get Sirius a royal pardon that must be obeyed by the wizarding government, they try to acquire the Ministry of Magic’s founding documents and make a rewarding discovery: The Ministry of Magic is magically bound to obey British law at the time of its founding, including the Magna Carta and the Habeas Corpus act.
Given that the slight change in events allowed Harry to get advance warning of his upcoming trial, it’s very clear that the only reason the wizarding government isn’t in danger of corrective actions for “gross violations” up to and including complete dissolution of the Ministry of Magic is that the Crown has been unaware of the violations.
What follows is a completed story broken into two acts:
Act 1 has Harry and Hermione seeking a solution to the problem the Ministry presents, making an appeal to Queen Elizabeth, and making plans for how to deal with things.
Act 2 follows the aftermath of the Ministry of Magic being dissolved by order of Queen Elizabeth, and the resulting reconstruction of the institutions of wizarding society.
I don’t want to spoil too much, but I’ll end by saying that I like how this story develops Percy Weasley’s character, I like one of the little touches involving Professor McGonagall, and I like how much effort offsides put into researching the British government and building a reasonable-seeming view of how much Queen Elizabeth knows about her more secretive subjects.
As a final note, I enjoyed this story enough that I’ve re-read it.
The Queen Who Fell To Earth by Bobmin356
Length: 302,411 words
Crossover: Dragonriders of Pern
Status: Complete, with two sequels of similar length
When a suicidal Harry Potter enters the first Triwizard task, intending to let the horntail kill him, he instead becomes the first human to impress a dragon hatchling since a gravid, suicidal Pernese queen accidentally set the record for time-jumping uncounted millennia ago …in doing so, burning away Voldemort’s shade and touching off a psychic chain-reaction, sparking a resurgence of draconic sapience across the world.
The story then follows Harry and company as the narrative divides its “Harry finding a place to belong” theme between growing into being the leader of a new political faction (as the dragons will accept none other) and working to develop an analogue to the Pernese system of weyrs which is appropriate to the changed setting.
This series is an interesting case because of how it combines wizarding and mundane politics and how the non-magical politicians are used to add a thread of “believable non-drama” to the political interactions which makes it feel more like reality. (Contrary to what soap operas would have you believe, everything doesn’t have to be drama and intrigue all the time. Sometimes, trying to honestly earn the loyalty of a potential political ally makes for a good story too.)
As is sadly the case with many stories, the author is in a rush to set up for the story, so the first chapter is unarguably contrived. However, if you can overlook that, this is one of only three cases I can remember where a story or series over half a million words long was something I ended up coming back to re-read.
If you can accept the initial contrivances, the series has a feel to it that I can’t remember seeing anywhere else in the world of Harry Potter fanfiction, the tone is an interesting mix of Harry Potter, Pern, and generic “contemporary” elements, and I enjoy reading about the world that Bobmin356 has built.
Give it two or three chapters and see what you think.
Sympathetic Properties by Mr Norrell
Length: 493,451 words
Status: Incomplete
The plot to this story begins when, at the beginning of Chamber of Secrets, Harry Potter is a bit more sympathetic to Dobby’s plight, and tries to find a way to buy him from whoever his current family is. (Thus, the title.) That leads to a letter inquiring about one who might be able to deal on his behalf, which, in turn, touches off an informal sting operation, resulting in an audit of Harry’s account manager after he tries to give Harry the brush-off.
Harry is quickly introduced to Lester Lichfield, his family’s old bailiff, and the politics and intrigue ensue. I won’t go into too much detail, but I will say that it results in some very tense relations between the Goblins and the Ministry of Magic, and the uncommonly early-in-the-plot (but satisfyingly in-depth) investigation and political neutering of a manipulative Dumbledore so that the political scheming of multiple people can serve collectively as the antagonist, rather than any one person. (Something we see far too little of in fanfiction. The real world is complicated!)
As a character, Lichfield deserves a shout-out, because I enjoy scenes which show what he’s up to and that’s not an easy accomplishment for an original character. I also enjoy seeing the actual details of how Gringotts employees are exploiting loopholes in the laws/bylaws/etc. to accomplish goals. That kind of effort on the part of an author is always fun and Mr Norrell is particularly focused on world-building here.
That said, the story also features a Harry-Hermione pairing touched off by Dobby not provoking the Dursleys, which gives Harry a proper opportunity to read his letters. To his surprise, in one of Hermione’s, she admits she’d like to get to know him better. (A twist elegantly reconciled with canon via her response to his brief apology for not getting their letters, where she has clearly lost her nerve.)
While the story isn’t especially focused on humour, it does incorporate the occasional bit, with one of the more quotable examples being Harry’s opinion that his hand-me-downs from Dudley make him look “like a deflated rhinoceros”.
This story is also noteworthy in that Mr Norrell is intentionally aiming to avoid the existing “Harry goes to Gringotts and everything becomes better” tropes. If you want an exploration of goblin society and Gringotts company politics, intrigue both within Gringotts and between Gringotts and the Ministry, as well as world-building for the greater environment of European wizarding politics, this is the story for you.
However, as a final caution, keep in mind that this is a bit of a slow-burning fic at times and the chapters can get pretty long. If you find yourself putting it down, try coming back later and reading a little more. Just because you’re not riveted from start to finish, doesn’t automatically mean the fic isn’t for you.
Posted in Fanfiction | Leave a comment

Game Review – Duck Game

TL;DR: How many people remember Jump ‘n’ Bump… because Duck Game is the same concept, interpreted by the gaming world of 20 years later… and it’s fun.

Introduced to me by my brother, Duck Game is a tongue-in-cheek pixel-art party game which feels a bit like a non-turn-based analogue to the Worms series. Up to four players (either via couch co-op or online multiplayer) choose goofy team costumes and destroy each other in a one-shot-kill free-for-all.

…so, let’s get to the highlights:

The Good

  • The controls are responsive and, when played with an XInput-compatible controller, feel quite intuitive.
  • The art definitely knows what it wants to be and evokes a strong sense of “VGA DOS platformer” (eg. Jazz Jackrabbit) with a hint of Terraria (the trees) or SNES games (certain background assets) at times.
  • The music, while not something I’d buy the soundtrack for, does its job well and reminds me of genuine 90s chiptunes that I might find in a stroll through the MOD Archive.
  • Like the Worms games, it’s got a wide variety of entertaining weapons, including a net launcher, a black powder rifle with associated smoke and loading times, and the ability to kill other players by throwing terrain objects such as boulders.
  • The game isn’t just fun, it clearly puts a lot of effort into letting the players goof around to inject their own sense of humour. Examples include:
    • A dedicated button to quack which gives me fond memories of playing with the “Meep Meep” and Tongue buttons in Road Runner’s Death Valley Ralley for the SNES.
    • Some very ridiculous team-identifying hats, including hamburger-head, so-ugly-they-wear-a-paper-bag, and a Jazzpunk-inspired combo… each with its own quack animation.
    • A period after you win each bout when you can do silly things like throwing other players’ corpses off the level or killing yourself without consequence… and it’s neither too short nor too long.
    • The ability to goof around on the winners’ podium screen, doing things like stealing someone else’s trophy.
  • After each match, the game displays a sports commentator who presents some highlights and a tongue-in-cheek score readout.
  • It has a level editor
  • It’s an XNA 4.0 game so, with a few minor workarounds, it plays beautifully in Wine on Linux… something I always like to draw attention to. (That said, I experienced a crash while trying to show the recap on Wine 1.9.16, so I suggest 1.9.23-staging instead.)

The Bad

  • When I say “party game”, I mean it. There are no A.I. players offered and the only single-player mode is a challenge arcade.
  • Having to pull the pin on the grenade with one button, then throw it with another takes some getting used to.
  • The default keyboard bindings are awkward and I encountered an in-game hint that suggested the arrow keys when I actually had to use WADS.
  • I found the degree to which the zoom varies to be quite distracting when I wasn’t sitting right up close to the screen, so some players may need to use an actual couch and big-screen TV for any couch co-op play.
  • The level editor’s support for backgrounds isn’t WYSIWYG, doesn’t really have any tool modes except “place individual block”, and the block palette is inefficiently designed. (I really wish the author had just used Tiled instead.)
  • I know of no non-Steam options for network multiplayer.

The Ugly

  • The camera zooms automatically and it’s far too aggressive. If you’re in the single player arcade lobby or all of the players are clustered together, expect bigger pixels and less visibility than even an old 320×200 DOS game.
  • After you die, you have to wait and twiddle your thumbs while the remaining players duke it out. Expect novice players to spend a lot of time watching rather than playing.
  • Currently only available through Steam.

So, what’s my verdict? More visibly flawed than most games I play, but definitely worth it if you can arrange the time to play it with one or more other human beings.

The camera-zoom is so extreme in single-player mode that I found it unplayable, but you quickly learn to flee to opposite edges of the level in multiplayer mode to force it to zoom out.

The control is smooth and highly responsive, both the game itself and starting a new level are fast-paced (as long as you don’t have more than two players), and I could easily waste an afternoon on it with my brother if our schedules didn’t so rarely coincide.

I’d have preferred if there were alternative play modes which mitigated the “you’re dead but they’re not” wait such as “first to X kills, players revive/respawn” or “dead players come back as ghosts to distract the living”, but that’s a nitpick which is easy to work around by sticking to two-player matches.

All in all, this is one of those games where, if any one of the players is good at goofing off, the game gets a lot more fun and I highly recommend trying it if you have a friend who has it.

Posted in Reviews | Leave a comment

Amateur Preservationist Tip of the Day: Guarding Against Uncaught Battery Leaks

Since I just had to open an eBay return request for a perfect-looking Super Nintendo cartridge that had been ruined by a leaky battery, I decided to do a thorough inspection of all of my cartridges to determine both the state of their batteries and how to best store them to limit the damage a leak could cause.

In doing so, I’ve discovered that, when their cartridges have batteries, Nintendo seems to have standardized on putting them in the top-right corner of the cartridge (when looking at the front label).

I’ve confirmed this for the following types of PCBs in my collection:

  • Super Nintendo cartridges with support for saved data (as opposed to password systems, which require no battery) but no add-on DSPs
  • Stunt Race FX (which I’m assuming to be typical for SuperFX-based SNES games)
  • Grey (GB), Black (GB/GBC), and Clear (GBC-only) Gameboy games with save support
  • The handful of Gameboy Advance games which don’t use EEPROM or Flash memory
  • The handful of Nintendo 64 cartridges which rely on battery-backed RAM for saving

Given this research, my advice for people who can’t solder is simple: Store your cartridges is one of these three orientations:

  1. On their side (ie. like books in a shelf) with the edge labels visible and the front label facing to the left. (This is a good choice for Gameboy games in clear clamshell cases, as well as loose SNES and N64 cartridges.)
  2. Vertical, with the label upside down (This is what happens naturally if you modify a Nintendo DS keep case so that a classic Gameboy game can fit into the GBA game slot.)

If you must store your games lying flat, you want any leaking chemicals to drip away from the circuitboard, so…

  • Store SNES and N64 games face-up (the battery is on the rearward side of the circuitboard)
  • Store Gameboy games face-down (the circuitboard sits flat against the back of the shell with all the components in the gap between it and the front cover.)

This will ensure that, if the batteries do leak enough to flow beyond the surface of the battery, gravity will pull the corrosive compounds in the direction which avoids as much important stuff as possible.

For SNES and N64 cartridges, it will provide a clear path to the edge of the circuitboard with nothing but the battery terminals and factory test pads in the way.

For battery-backed GBA cartridges like Wario Land 4, which put the battery right on top of the mask ROM inside a very cramped cartridge, the same basic rules apply, but it’s more important that the cartridge not lie diagonally.

(If the GBA cartridge is stored face-up or too far off a 90° angle, “follow gravity around the curve of the battery, then fall straight down from the lowest point” could cause corrosive fluid to land on the ROM or the nearby capacitor, rather than the empty bits of the circuitboard near the edge.)

P.S. I’ve also discovered that there’s no obvious pattern to which N64 cartridges have batteries. Zelda: Ocarina of Time, Super Smash Bros., and Harvest Moon 64 have them, but everything else in my collection, earlier or later, same company or different, uses batteryless storage.

Posted in Geek Stuff | Leave a comment

Recommended “Harry Potter in Sci-Fi Settings” fics

Last Updated: 2017-08-13 (Added “Harry’s Trek”)

So many things happen “yesterday” that we don’t act on. “Yesterday”, I re-read a Harry Potter fanfic… it took two yesterdays to finish. So “yesterday”, when I realized that it would make a good seed for another themed collection of fanfic recommendations, I acted on it… but ereyesterday, I had already made a blog post (and I wanted to use “ereyesterday”), so I decided to delay this by a couple of days.

Enough silly word-play. Today’s list is my favourite “Harry Potter dumped into some crossover future world” fics.

In most of these, the general plot will be “Harry winds up in a future without wizards and, as one of his goals, tries to bring magic back.”

As before, this mix of quality and following a theme means that each entry will epitomize some specific combination, so more than one entry per fandom will be the exception in this list. (To be fair, often because finding any good fics is difficult.)

Best of the Best

Browncoat, Green Eyes by nonjon
Length: 298,538 Words
Status: Complete
Crossover: Firefly/Serenity
This time, I decided to put the best first.
Having defeated multiple dark lords over the course of his life, when Harry Potter outlived his wife and decided to alleviate his boredom by putting himself into stasis, bound to the Weasley family line, he never expected to awake to a world where Earth has been abandoned, and a muggle descendant who would make Percy Weasley proud inherited the ring.
He promptly escapes from the government that thought he could be a useful tool to seek out this River Tam, discover the truth for himself, and determine what became of the wizarding world.
This is a nonjon fic, so it’s got some really fun and creative stuff to it, both in the world-building and the wit, I’d recommend it to anyone.
Harry Potter: Geth by mjimeyg
Length: 276,717 Words
Status: Complete
Crossover: Mass Effect
This fic is a bit hard to classify. It’s got a bit of fix-fic to it, in that the introduction of Harry makes the Mass Effect series play out in a more favourable way, but it doesn’t really have that limited appeal for me that most fix-fics have.
That said, I still enjoy it enough that I’ve re-read it a couple of times… the appeal is just too diffuse to put my finger on a single thing I like about it.
The basic premise is that, during the final battle with Voldemort, Hermione hit Harry with an obscure luck spell, only to later discover that it doesn’t necessarily bring good luck for the one it applies to. As a result, an interaction between Voldemort and Harry’s spells sends him to a point 400 meters above the surface of Rannoch. The Geth proceed to pull their own Lazarus Project and recruit him as their emissary.
Entertaining character interactions, some enjoyable OCs, and Harry’s “saving people thing” ensue.
Gods Among Us by arturus
Length: 189,956 Words
Status: Incomplete
Crossover: Battlestar Galactica (2003) with Stargate: SG-1 coming in very late
The first chapter of this post-Hogwarts fic begins with Hermione Granger, apprentice curse-breaker, asking Harry to help excavate a tomb where, true to his luck, Harry reveals an undiscovered passage by accidentally speaking parseltongue when he flippantly says “Typical, eh lads?” to a couple of snake carvings.
What follows is the discovery of a mothballed Furling ship, the accidental awakening of the onboard A.I., a startled attempt to apparate out, an emergency jump calculation by the A.I. to prevent resonances in the jump drive from causing a catastrophic explosion, the resulting failure the geriatric components in many key systems, and a Harry and Hermione, left unconscious but alive by life support failure, being picked up by a patrol from one of the surviving ships outside Galactica’s refuge fleet.
As with any well-structured fic, this setup doesn’t extend beyond the first chapter and Harry and Hermione wake to find themselves stranded with humans not of Earth and a ship nobody knows how to repair.
After a peaceful resolution to an initial misunderstanding, it is decided that they will be given a place on the ship and keep a low profile while they try to find a way home… a plan that goes out the window when an emergency forces them to use their magic in plain sight to save three people’s lives.
I really like the rather unique feel of how it integrates Harry and Hermione into things, but I love how, rather than being a story where Harry and Hermione take front and centre stage in the colonial drama, they merely serve an important role in a much deeper narrative where the cylons and figures from a deeper lore are the main characters for once.
I’d highly recommend this to anyone who’s OK with reading unfinished stories. (With the caveat that the first chapter needlessly uses bad Harry Potter clichés so, if don’t like those, you may want to just start reading from chapter 2 and treat the synopsis I wrote as chapter 1. You won’t miss anything important.)
The Voyage Home by Kinsfire
Length: 56,505
Status: Complete
Fandom: Star Trek (pre-Voyager and Voyager)
During the battle in the Department of Mysteries, Harry breathes in a load of dust from shattered time turners. He wakes up in 2358, where he discovers that muggles have replicated various magical effects via technology, prompting the statute of secrecy to finally fall, and that wizards and witches have even founded their own colony, New Londinium.
However, despite all that, there is still hope that he will be reunited with his friends. Records show that he somehow returned to the past… a future past which he decides is best brought about by completing his education on New Londinium, then joining Starfleet Academy.
…he winds up serving on Voyager when it gets pulled into the Delta Quadrant.
This is another story like Harry Potter: Geth in that there aren’t really any scenes or aspects I can point to as being amazing… it’s just a worthwhile read with an interesting idea for the romance subplot. (The ongoing “benign Moriarty incident” with the Hermione hologram from his re-creation of Hogwarts.)
That said, it does have two significant flaws that need to be mentioned:
First, in the early parts of Harry’s time on Voyager, it’s too eager to use “Harry induces canon characters to do canon things” or “Harry prevents a canon story arc” as a lazy way to hurry to the meat of the story and that gets irritating.
Second, Kinsfire’s ability to write a high-quality Star Trek story seem directly proportional to how far the plot distances itself from canon events.
(In fact, given how quality dips when Voyager comes into the picture, then slowly climbs back up, I get the impression that Kinsfire underestimated the effort required to keep recycled elements interesting.)
Also, the story spent enough time on the setup between “Harry arrives in the future” and “Harry is stationed on Voyager” for me to get a feel for what it would have been like if the whole fic followed that “generalized Star Trek story, not intersecting with canon events” pattern …and I’d have liked to see how that introduction could have done as a complete, Voyager-free fic.
All in all, at times, it was difficult deciding whether to put this at the bottom of the “best” or the top of the “runners-up” but the deciding factor was how transient the parts I object to are and how unfair it would be to penalize a story for my attachment to another story that could have sprung from the same beginning.
Harry’s Trek by kb0
Length: 66,125 Words
Status: Complete
Crossover: Star Trek: The Next Generation
Here’s the story to read if you want a “Harry on the Enterprise” story that’s just generally good. No brilliant bits of philosophical insight or genius bits of world-building… just a good fic.
The setup is simple. A wormhole dumps Harry and a bisected Voldemort’s body on the bridge of the Enterprise, fresh from the battle for Hogwarts, just in time for Harry to express relief at Voldemort’s state and pass out.
What happens next proceeds in a fairly Star Trek fashion. Medical scans and later conversation reveal that, in this story, wizards’ and witches’ bodies are saturated with anaphasic radiation and expect to replenish their supplies from Earth’s ambient field. Harry keeps magic secret but, with the OK from Troi, the crew and some enjoyably-done OCs start to befriend him.
The story then can be seen in two phases: Revealing Harry’s magic to others, and finding him a new norm to settle into.
The former is begun when the Borg show up to try to reclaim Picard and, rather than simply let Picard self-destruct the Enterprise to prevent its assimilation, Harry chooses to break secrecy by apparating over and catching the Borg by surprise by firing the strongest curse he can at some parts which look sort of like the ones Geordi showed him in engineering.
The latter, when Harry starts to form a relationship forming with a half-Klingon, half-Romulan girl after he saves her life when a damaged emergency forcefield generator gives out.
My memories of the details of Star Trek characterization have had close to 20 years to fade and I never saw many episodes of The Next Generation to begin with, so I can’t judge how in-character people are, but I found this an enjoyable read, so I’d suggest that you give this a try and draw your own conclusions if this summary interests you.

Runners-up

The Forever Mage by Darth Marrs
Length: 102,957 Words
Status: Complete
Crossover: Star Trek: The Next Generation
This is a story you’ll either love or hate.
On the one hand, it’s the only Star Trek fic I can remember which acknowledges the macro-level social commentary inherent in the historical progression of the Star Trek universe… but, on the other hand, it’s a rather heavy-handed polygamous shipfic with some Harry Potter clichés in it.
The basic plot is that, in the years following the ST:TNG movies, a young lady and her three friends are left a last request by her adoptive grandmother, a woman so ancient that nobody knows how old she really was. That request? Please go to a remote location in Scotland which was bombed during the Eugenics wars and perform a ritual to “memorialize the passing of the last of a bloodline”.
“Naturally”, what results upon calling forth “The Lord of the Light” is a young, naked, amnesiac Harry Potter who must try to discover his identity and the nature of the strange abilities he knows how to use, but not why.
In the process, he will start awakening the magic within five young women and Beverly Crusher, help the Federation rediscover and memorialize a lost chapter in the story of the Eugenics wars (that Colonel Green was actually a squib of the Greengrass line and wizarding genocide was his goal), and begin the long, hard task of bringing a forgotten branch of humanity’s evolution back from extinction.
Flawed as it is, I appreciate the author’s world-building and I especially love the artistry of the scene at the war memorial. There’s a spark to this story that feels like, with help from the right authors, it might have grown into another Browncoat, Green Eyes.
The Next Lord of Kobol by jbern
Length: 104,608 Words
Status: Incomplete
Crossover: Battlestar Galactica (2003)
This is a story with a lot of potential, but both its flawed pacing and how little progress has been made on the story arc prevent it from being considered for anything but runner-up.
The basic plot is “Harry wastes 6 chapters on what should have been one, then he gets thrown through the veil and finds himself on Caprica where the actual story starts and he has to build a life for himself while trying to also prepare for a vague threat he was warned about.”
My advice is to read the scene where Harry summons Athena via the resurrection stone at the end of chapter 4 (for context), then start reading from the latter half of chapter 6 onward. That way, you get what a professional editor would have cut down to a prologue and first chapter. (It’s simply not acceptable to waste an entire first act worth of text before the driving conflict shows up and things finally take on the form the rest of the story will follow.)
If you skip all of the needlessly verbose setup, this is an engaging fic about Harry living in the Colonies in the decade up to when canon would have the cylons attack. As a “decent fic focusing on pre-annihilation colonies” life blended with “Harry Potter in a sci-fi setting”, I quite enjoy it.

…and, in case anyone’s still wondering, here’s why I didn’t include these fics which represent or contain memorable HP crosses for their respective fandoms…

…not to mention, none of them really have the feel I was going for.

Posted in Fanfiction | Leave a comment

Fanfiction – Truths Revealed Lies Exposed

Title: Truths Revealed Lies Exposed by VFSNAKE
Fandom: Star Wars
Status: Complete
Rating: 4.5 out of 5

I don’t normally read Star Wars fanfiction, since I never really got into the extended universe as a kid, but every fandom can produce at least one thing I might be interested in.

This story is built around a simple premise: What if young Leia had overheard her adopted parents talking about her biological father and brother, then took a calculated risk when faced with interrogation by Darth Vader.

It is also one of the small number of stories that I’ve read a second time.

While the need to keep Palpatine and the moffs in the dark results in this story following the rough details of the original trilogy canon, it does its best to be original in every other way possible.

Motivations are changed or built upon, many many new scenes are added, focusing much more on the rebels who got no significant screen time in the original roles, and it incorporates characters who were retconned into the timeline, such as Qui-Gon’s force ghost, Mara Jade, and Ahsoka Tano.

In general, It makes for an engaging blend of the expected and the unexpected which serves as a backdrop while the drama and intrigue take centre stage.

However, while all of that is just “a good read”, there are two elements which manage to go beyond that and their elegance is what prompted me to write this review, despite it occupying relatively little “screen time”:

WARNING: SPOILERS AHEAD

Once Anakin’s plans are revealed to the reader, it sets up a poetic “For want of a nail, the republic was lost. Given that nail, the destroyer will restore it.” symmetry to close off the unaltered canon events:

For fear of losing his family, Anakin Skywalker destroyed the republic. Given his family, he will rebuild it.

I find that especially clever when paired with Mon Mothma’s descent into a Palpatine-like role in the story at the hands of her own flawed convictions.

Just as the Jedi council’s refusal to see their own faults spelled their downfall. Mon Mothma’s refusal to reconsider her preconceptions about Vader and his role in Padme’s death leaves her the leader of the withering terrorist organization that the Rebel Alliance becomes.

Posted in Fanfiction | Leave a comment

Concentrated Feels

Last Updated:
2017-08-03 (Added “Day is Done”)
2017-08-04 (Elaborated about “Gates of Dawn”)

No matter whether we stand unmoved in the face of tragedy, or cry at the drop of a hat, we all have those moments which stand out in our memories as having touched us like nothing else.

For me, it’s music and certain types of deeply poetic insight that reaches through my emotional armor and, even then, only incredibly rarely. So, I decided, what better excuse for a blog post than to list the handful of pieces which brought a tear to my eye. …because, highs or lows, it’s emotion which makes life worth remembering.

NOTE: I’m not the greatest at listing my own memories, so I will extend this as I remember more things.

Poetic Insights

A Reading from Pale Blue Dot by Carl Sagan
This beautiful telling of our place in the universe, set to music from Sagan’s original Cosmos documentary series, was the first YouTube video to move me, and it’s something I wish everyone could hear at least once in their lives.
A Universe Not Made For Us by Carl Sagan (ed. Callum C. J. Sutherland)
It should come as no surprise that the second video on this list is also by Carl Sagan.
In this case, what moves me is the ending, where, after a slow build up, it finishes with “If we crave some cosmic purpose, then let us find ourselves a worthy goal.”
The Story of Human Rights
At first, this is a good, but otherwise fairly ordinary educational video… but it’s the reading of the Eleanor Roosevelt quote, at the end, set into all of the context the video provides, which does the trick:

Where, after all, do universal human rights begin? In small places, close to home – so close and so small that they cannot be seen on any maps of the world. Yet they are the world of the individual person; the neighborhood he lives in; the school or college he attends; the factory, farm, or office where he works. Such are the places where every man, woman, and child seeks equal justice, equal opportunity, equal dignity without discrimination. Unless these rights have meaning there, they have little meaning anywhere.

Music

’39 by Queen
IMPORTANT: I strongly recommend you listen to this song before reading my description and again after, since guessing what it’s actually about is a lot of fun. With that said, onward…
This bittersweet piece is about a group of space explorers who return home in triumph to find all of their loved ones dead of old age. I always get a tear in my eye when the final verse rolls around and changes one of the recurring couplets from “Write your letters in the sand for the day I take your hand” to “All your letters in the sand cannot heal me like your hand”
Shy Heart by Ponyphonic
Don’t let the fact that this is technically a My Little Pony fan-song turn you off. It never explicitly mentions the series and there are plenty of other people, both real and fictional, who fit this moving piece just as readily.
In this song, it’s hard to point to a specific part which always bring a tear to my eye and a hitch to my voice, but the portions of the chorus with a touch of vocal harmony and the final few bars of the violin solo are especially beautiful.
Day Is Done by Peter, Paul, and Mary
For those who have never heard it, this stunningly beautiful Vietnam-era protest song needs no war to remain poignant. Comforting a fearful child and being faced with trying to explain why sadness exists in the world are timeless aspects of the human condition, as is the sense of hope a parent feels in their child’s innocent optimism and the worry over the world they will inherit. Add in audience participation during the chorus and this song has an emotional power which ensures its status as a timeless classic.
For something I found less moving but no less beautiful, I’d also recommend “Lemon Tree” and their version of Blowin’ in the Wind.
Gates of Dawn by Secret Garden
This one is somewhat conditional. It doesn’t do anything for me anymore, but I did like it so much that I practically listened to it on repeat until I got sick of it. I remember that it used to move me at least some of the time.
The song is, in essence, a musical expression of the sense of spiritual awe we feel when we look at the majesty of the world around us and wonder.
Whether or not it moves you, it can’t be disputed that it’s a very beautiful piece.
The Jurassic Park Theme by John Williams
…and, I’ve saved the best for last. In the movie or on its own. The “big reveal” portion of this soaring salute to the power of human vision and ingenuity moves me so much that I have trouble keeping my eyes open.
(Though I do have to qualify that. Not all recordings do it for me. Sometimes, the people playing the instruments just don’t manage to convey that sense of emotion in how they play those notes at the climax of the melody.)

How about you? What hit you in the feels more than anything else? Share in the comments and maybe we can build up a list guaranteed to move any visitor.

Posted in Web Wandering & Opinion | 1 Comment

Rust: Looping on a member variable without mutably borrowing self

The Story

Late last night, I stumbled upon a rather clever hack in one of my Rust projects.

I’d been working on an iterator which implements grapheme-aware CamelCase word-splitting when I decided to do some cleanup and ran cargo clippy rather than the much quicker cargo test I’d been using to iterate on it.

Not-surprisingly, given how much I’ve been letting myself get carried away with my hobby projects and “coding while half-asleep”, it popped up some warnings, but this is the one which started things off:

warning: this loop could be written as a `for` loop
 --> src/util/naming/camelcase.rs:260:9
 |
260 | / while let Some((byte_offset, grapheme)) = self.in_iter.next() {
261 | | // Extract the base `char` so `classify_char` can call things like `is_uppercase`
262 | | let base = grapheme.chars().nth(0).expect("non-empty grapheme cluster");
263 | |
... |
280 | | }
281 | | }
    | |_________^ help: try `for (byte_offset, grapheme) in self.in_iter { .. }`
    |
    = note: #[warn(while_let_on_iterator)] on by default
    = help: for further information visit https://github.com/Manishearth/rust-clippy/wiki#while_let_on_iterator

Sounds reasonable, so I tried the suggested syntax and got a new error:

error[E0507]: cannot move out of borrowed content
 --> src/util/naming/camelcase.rs:260:40
 |
260 | for (byte_offset, grapheme) in self.in_iter {
 | ^^^^ cannot move out of borrowed content

Well, I may be tired out of my mind, but I recognized what that error meant in theory, so I tried adding &.

error[E0277]: the trait bound `&unicode_segmentation::GraphemeIndices<'_>: std::iter::Iterator` is not satisfied
   --> game_launcher_core/src/util/naming/camelcase.rs:262:9
    |
262 | / for (byte_offset, grapheme) in &(self.in_iter) {
263 | | // Extract the base `char` so `classify_char` can call things like `is_uppercase`
264 | | let base = grapheme.chars().nth(0).expect("non-empty grapheme cluster");
265 | |
... |
282 | | }
283 | | }
    | |_________^ the trait `std::iter::Iterator` is not implemented for `&unicode_segmentation::GraphemeIndices<'_>`
    |
    = note: `&unicode_segmentation::GraphemeIndices<'_>` is not an iterator; maybe try calling `.iter()` or a similar method
    = note: required by `std::iter::IntoIterator::into_iter`

Now, my tiredness bit me. It never occurred to me that a unicode_segmentation::GraphemeIndices needs to be mutably bound to work, nor that “not implemented for &” said nothing about whether it was implemented for &mut.

Completely stumped, I popped over to  #rust where, after blindly trying several helpful suggestions, I finally tried &mut self.in_iter.

That would normally have worked… except for one small problem:

error[E0499]: cannot borrow `*self` as mutable more than once at a time
   --> game_launcher_core/src/util/naming/camelcase.rs:277:40
    |
262 |         for (byte_offset, grapheme) in &mut self.in_iter {
    |                                             ------------ first mutable borrow occurs here
...
277 |                 CCaseAction::Skip => { self._next_word(byte_offset, true) },
    |                                        ^^^^ second mutable borrow occurs here
...
283 |         }
    |         - first borrow ends here

error[E0499]: cannot borrow `*self` as mutable more than once at a time
   --> game_launcher_core/src/util/naming/camelcase.rs:278:45
    |
262 |         for (byte_offset, grapheme) in &mut self.in_iter {
    |                                             ------------ first mutable borrow occurs here
...
278 |                 CCaseAction::StartWord => { self._next_word(byte_offset, false) },
    |                                             ^^^^ second mutable borrow occurs here
...
283 |         }
    |         - first borrow ends here

error[E0499]: cannot borrow `*self` as mutable more than once at a time
   --> game_launcher_core/src/util/naming/camelcase.rs:279:54
    |
262 |         for (byte_offset, grapheme) in &mut self.in_iter {
    |                                             ------------ first mutable borrow occurs here
...
279 |                 CCaseAction::AlreadyStartedWord => { self._next_word(prev_offset, false) },
    |                                                      ^^^^ second mutable borrow occurs here
...
283 |         }
    |         - first borrow ends here

The code calls &mut self methods inside the loop body and, because the loop returns before exhausting the iterator, I can’t mem::replace it out of the binding.

In short, I had stumbled upon the one way to do this, on my first try, completely by accident, and, were it not for a naïve Clippy lint, I would have never realized how special  this syntax is.

It was around that point that the wheel-bound hamster powering my brain woke up long enough for me to start making the connections and ask the last few questions necessary for it to all make sense…

The Reasoning

The problem here is a collision between two characteristics of Rust’s design:

  1. for works via the IntoIterator trait, which means that, as far as the compiler knows, releasing and re-borrowing the resulting iterator would discard the iteration state and start over. (ie. There’s no magic in the compiler to to recognize when it’s already got an iterator.)
  2. My self._next_word takes a mutable borrow over all of &self …which will fail if for is still holding a reference to one of its members.

The clever trick behind while let Some(...) = self.in_iter.next() is that it bypasses IntoIterator. As such, the compiler can be certain that self.in_iter won’t go away between iterations, and can release the borrow.

As a result, you’re left with something that functions like a for loop, but only holds onto the item which the iterator returned, leaving self free to be borrowed, in its entirety, by all and sundry.

So, there you have it. If you’re writing a struct which holds onto an iterator and your for loop is making things difficult by blocking method calls, try bypassing IntoIterator. Get an iterator manually, then reformulate your loop to use while let Some(...) instead.

If Clippy complains, add #[allow(while_let_on_iterator)] and get on with your day.

P.S. Don’t worry about the “coding while half-asleep” part. I write my unit test suites and audit/refactor the previous day’s work while wide-awake and alert. 😉

Posted in Geek Stuff | 1 Comment