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”)
See Also: Recommended “Sci-Fi Discovers Harry Potter” fics

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”)
2017-12-24 (Added the Civilization 6 launch trailer)
2018-03-21 (Added “I Am Australian” and “Gentle Arms of Eden”)
2019-09-09 (Added Fantasia 2000’s segment for Stravinsky’s Firebird)
2020-07-15 (Added Joe Scott’s presentation of the Voyager Golden Record)
2026-03-15 (Added “The Mary Ellen Carter”)
2026-03-27 (Added “Proud Corazón”)

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 fact, it’s an edited down chapter from the same source: The audiobook release of Pale Blue Dot)
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 (of this initial batch) for last. In the movie or on its own.
Where so much music tries to be a tribute to our sense of wonder, or the accomplishments of a single person or small group of people, this piece is a soaring salue to the power of our vision and ingenuity as a species… and the “big reveal” portion 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.)
I Am Australian by The Seekers (written by Bruce Woodley and Dobe Newton)
I may be Canadian, but this is what a patriotic song should be. Not only did it bring a hitch to my voice and moisten my eyes the first time I heard it, it painted a picture I wanted to be part of while in the grips of the experience.
The atmospheric backing track that it leads with does a beautiful job of setting up the atmosphere but the two things which really make the track are Judith Durham’s characteristically gorgeous and powerful voice and the feel the song exudes of being “a family of disparate cultures” without the choice between jingoism and cheap ego that American patriotism seems to exude.
Gentle Arms of Eden by Dave Carter and Tracy Grammer
Another one that I’ve listened to a lot, yet, whenever I come back to it, it still manages to hit me. Specifically, when it begins the chorus with that line, “This is my home. This is my only home. This is the only sacred ground that I have ever known.”
It just feels like a warmer, more emotional expression of the sentiment in the famous excerpt from Sagan’s Pale Blue Dot which I linked to further up this list.
That said, while that’s the part which really hits me, I also love the overall narrative expressed. To me, it feels reminiscent of (yet distinct from) both Gates of Dawn and the latter half of the second verse of “I Am Australian”, where Judith Durham is singing about the environmental characteristics which make Australia what it is. (from “I’m the hot wind from the desert” through “The spirit of this great land. I am Australian.”)
The Mary Ellen Carter by Stan Rogers
While I’d already heard many Stan Rogers songs, I’ve always been a bit slapdash about discovering new music and I first encountered this in an excerpt of an interview on a Brick Immortar video where a survivor of a sinking said this song helped him hang on.
I don’t want to spoil anything so all I can say is that you’ll know the part that puts a hitch in my voice when you hear it.</dd
Proud Corazón From Coco (the Disney movie)
I’ll admit I probably shouldn’t be seeing songs that spoil movies before the movies, but, hey, I’d already read the Wikipedia article about it and, with that much context, this song certainly didn’t hit lightly.
I won’t say too much about it for people who haven’t seen Coco yet and don’t want anything spoiled, but it definitely made me feel, and I’ve seen others say the whole movie is like that.

Other

The Civilization VI Launch Trailer
Set to an instrumental version of Christopher Tin’s Sogno di Volare (“The Dream of Flight”) (the game’s title theme), the launch trailer for Civilization 6 is probably the only trailer of any kind to ever bring a hitch to my voice and a tear to my eye with its combination of triumphant music and narration about the nature of the human spirit… and I’m apparently not the only one as Christopher Tin himself was moved to tears when they were recording the backing track.
The Firebird segment from Disney’s Fantasia 2000
I chose not to file this under “music” because the animation is so essential to the emotional effect that just listening to Stravinsky’s Firebird on its own wouldn’t do it for me.
For those who haven’t seen or don’t remember Fantasia 2000, the segment follows a spirit of nature, awakened from a drop of meltwater by a stag, as she brings about spring. Tragically, her curiosity about why her greenery won’t grow on the mountain (volcano) looming over her forest prompts her to accidentally awaken the spirit of destruction within. It proceeds to consume her forest and her with it, but life springs eternal. After being breathed back into existence from the ashes, she discovers that her tears still bear the power to summon forth new life, prompting a triumphant and emotionally moving climax where she regrows the entire forest and covers the slopes of the now slumbering volcano in greenery.
Maybe it’s just because all the work I put into my synopsis caused it to hit me harder than usual, but this was the first time I’ve ever had a piece of media graduate from making my eyes wet to actually having to wipe a tear off my cheek, and I’m surprised it took me so long to remember to add it to this list.
The Golden Record segment from Voyager At 40: Humanity’s Eternal Message In A Bottle | Answers With Joe
…because Joe managed to put together the most moving presentation of what’s encoded on the Voyager Golden Record that I’ve yet seen.

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

Recommended Battlestar Galactica “Earth-contact” fics

Last Updated: 2019-09-13 (Added “The Phoenix and the Wolverine”)

I’ve always enjoyed first-contact fics, because they’re a good way to stir up groups of people and see how they react. No plan survives contact with the enemy and no worldview survives first contact.

…but, in the case of Battlestar Galactica, having them find an Earth of comparable social development is often even better, because they’re not just going in with any old expectations, they have deeply held preconceptions about what they should find.

That makes for a rather unique “flavour”, but, like any slice of a fandom you look for, there’s a big gulf between the rare cream of the crop, and everything else.

…so, without further ado, here is my list of those special “Earth-contact” fics which deserve a read:

Best of the Best

The Consequences Of Not Being Polite by The Sidhe
Length: 266,212 Words
Status: Complete
Crossover: None
Strongest Element: Managing to feel like a sci-fi novel
In this fic, the fleeing colonial refugees are discovered by a forward patrol from an Earth at least a thousand years more advanced and slowly pushing back an equally advanced enemy descended from terran velociraptors.As is the case with most good “one side could curb-stomp the other” stories, this is a story about exploring and adjusting the worldviews of the less advanced factions, with the cylons also eventually coming to the table after Cavil’s failed attempt to ally with the raptors instead.I think one of the biggest reasons this appeals to me is how much effort the author puts into developing the backstory for the setting, which gives it a fairly strong “sci-fi novel” feel to it, rather than the generic “fanfic based on a sci-fi TV show or game” feel that I get from most fanfics.I’ve re-read this at least twice and I’d recommend that you give it a try if you’re even remotely interested in contact fics that don’t focus on combat.

Another story I can suggest with the same broad strokes but different details is Pandora’s Scions by NorJC. Sadly, it’s unfinished, and it’s not as memorably creative in its world-building, but it’s still novel-length, an enjoyable read and, starting about two thirds of the way through, it starts to offer up some memorable scenes exploring the Cylons as people.

Reunions Are A BitchDeleted by Bob Regent
Length: 349,784 Words
Status: Incomplete
Crossover: Stargate: SG-1
Strongest Element: Capturing the complexity and misunderstanding which drive wartime politics
In this Stargate SG-1 crossover (which had to be renamed on Fanfiction.net), after making contact with the Prometheus, the leadership of the Twelve Colonies decides that it would be good business and good politics to “reunite with the 13th colony”, by force if necessary.What I like about this story is that it’s a believable blending of the two settings with sort of a Cold War-esque dynamic:

  • Earth’s almost-nonexistent but much more advanced space defences barely fight off the massive Colonial fleet, but a few nuclear missiles do wind up hitting the planet.
  • The first act of the story leaves both sides assuming the other is much more prepared to counterattack and scrambling to build up defences.
  • World-changing events happen because of honest mistakes, ill-considered decisions, and greed.
  • Cylon infiltrators in Earth POW camps eventually ask for asylum.

An engaging fic which is one of the handful I’ve re-read over the years. Definitely one I’d recommend despite it being unfinished.

Gods Among Us by arturus
Length: 239,661 Words
Status: Incomplete
Crossover: Harry Potter, Stargate: SG-1
Strongest Element: World-building, lore, and exploring the cylons as characters
While not an Earth-contact fic in the strictest sense, given that Harry Potter and Hermione Granger come to them and their origins are kept secret until well into the story, this certainly fits all of the more abstract criteria much better than many other fics on this list.
The gist of the plot is that Harry Potter and Hermione Granger wind up on on one of the Colonial refugee ships as a result of finding a mothballed Furling ship which they accidentally activate, but the setup isn’t overly important and the flaws in chapter 1 are irrelevant once chapter 2 rolls around and they’re in space.
What makes this story so special is how satisfyingly deep its focus on the cylons and its world-building really are. While it does technically star Harry and Hermione as the main characters, it would be more accurate to say that, once the story gets going, they are revealed to merely be important players in a much larger narrative.
If you like lore, this is the fic for you. If you ever wished the cylons had been developed more as characters in general, this is the fic for you. If you like Galactica crossovers that don’t feel like the crossover characters are trying to steal the show, this is the fic for you.
Going Native by Rap541
Length: 156,591 Words
Status: Complete* with sequel
Crossover: Star Trek: The Next Generation
Strongest Element:Keeping a personal focus despite the scale of things
“What if Felix Gaeta were a Starfleet officer, stranded in the Beta quadrant on his first mission, and had to build a deep cover identity?” That’s the question that spawned this fic.
The story starts in a counselling session with Deanna Troi after the fleet has already made contact with the Enterprise, then bounces around from person to person (both Federation and Colonial)… something that it does quite well.
A big part of that success is probably down to this being half a first contact story, focused through the individual characters involved, and half a story about exploring this interpretation of Felix Gaeta as a character. The combination provides a nice balance that, while having similarities to The Consequences of Not Being Polite, is still quite different.
It’s a bit on the angsty side, but still a good read and it’s got its own uniquely clever ideas for various cylon-related things.
* This story is complete but isn’t marked as complete. As I remember, it predates Fanfiction.net’s support for supplying such metadata.
The Phoenix and the Wolverine by clavina
Length: 583,657 Words
Status: Incomplete
Crossover: X-Men, Star Trek (post-Voyager)
Strongest Element: World-building, lore, characters in general
This is one that is good for all the same reasons as Gods Among Us.Same abstract plot of taking a male and female hero who care for each other from the 20th-century and dropping them in a ship in the path of the Colonial fleet. Same heavy focus on the cylons as characters. Same heavy supply of world-building.What makes this one distinctive is how it accomplishes that.

First, it’s a multi-cross, combining X-Men, Star Trek, and Battlestar Galactica into a fused universe where the Eugenics Wars of Star Trek canon grew out of an attempt to create non-mutant super soldiers to “solve the mutant problem”.

Second, it uses Q Junior from Star Trek as a way to make the idea of a powerful author self-insert a bit more plausible… especially when the rest of the Q decide that he’s overstepped and lock him into the abilities he was professing when claiming to be the Emergency Medical and Engineering Hologram for the ship he built.

Speaking of the ship, there’s another difference. In Gods Among Us, the Furling ship used up its energy and Harry and Hermione don’t know how to use it. In this, you have a fully functional Federation-design ship helping the Colonials.

I don’t want to go into too much detail, but I will say that it’s good with its characters in general, from portraying Logan as intelligent but having no patience for machinations to having the Xavier’s computer start to develop into an A.I. in his own right.

It is a bit sloppy about its technicals early on (Sometimes, it talks about exiting hyperspace rather than exiting warp and it does have the occasional typo such as “of cause” or “wrap drive”.) but it’s not as bad about it as Contact at Kobol and I enjoy it very much.

Runners-up

These are stories which, while they’re good, don’t quite make the cut for reasons I’ll explain on a case-by-case basis:

Worldwar: Discovering the Balance by AlbertG
Length: Multiple Volumes
Status: 3 completed stories, 1 Incomplete
Crossover: Stargate: SG-1, Harry Turtledove’s Worldwar
Strongest Element: Focusing on individual OCs who have to deal with the violation of their expectations.
The main reason this story is a runner-up is that it’s hard to truly characterize it as a proper “BSG: Earth-contact” story.While the Colonies do come to play a major role and one volume does focus entirely on them, the story starts with the Worldwar-SG1 aspects and the Galactica stuff not only feels like an alternative take on RAAB, this story is supposedly intended to be set in the same multiverse and I feel like a reference to one of the other AlbertG-Bob Regent stories in the shared meta-setting only cheapens it by needlessly referencing an off-screen-and-before-story-start war with the Vorlons.That said, it’s still a story I liked enough to re-read. The basic plot is:

  1. A while before the story started, the Prometheus did encounter The 12 Colonies, but they parted without the colonies finding out where Earth is.
  2. The Race from Turtledove’s books arrives a few decades later than in canon and get a big shock when, instead of conquering the knights on horseback that they planned for, they’re met by a starship more advanced than their fleet in every way.
  3. The Race, being The Race, are forced to cope with a species that can crush them and refuses to acknowledge their ownership papers for “Tosev 3”, when they’ve not had to deal with the universe violating their expectations for ten thousand years.
  4. Because Gaius Baltar didn’t get fooled, the last handful of Cylon refugees wind up fleeing into Earth’s solar system by accident, where they successfully petition Earth for asylum.
  5. Earth manages to drive off the pursuing Colonials with no losses.
  6. The rest of the plot ensues.

If you want something that’s got similar elements to RAAB, but is mainly focused on forcing foreign cultures to face the fact that their expectations are wrong and then have them slowly develop relations with Earth as that happens, you’ll like this. I like how it develops its original characters to achieve said goals.

Contact at Kobol by wilkins75
Length: 478,758
Status: Complete
Crossover: Stargate: SG-1
Strongest Element: Having a boots-on-the-ground-oriented approach to a war without boring me into losing interest
If you wanted something similar in concept to RAAB, but with things escalating to a boots-on-the-ground invasion of The 12 Colonies, this is your story. I’ve always found following soldiers on the ground to make a story more boring, so I think the fact that I was willing to read this story to the end speaks well for it, even if I’ve yet to read it again.The main difference between this and the other SG-1 crossovers is probably that it takes place a little further in the future, when Earth has had time to study Asgard technology a bit and are about to reveal the Stargate so they can ease overpopulation in countries like India via a colony they’ve just finished building on a planet they’ve named Valhalla.The first encounter between Earth ships setting picket stations and a Colonial patrol along the Cylon border ends in disaster when the colonials mistake them for Cylons and lose several battlestars in the resulting skirmish.

While cooler heads do manage to arrange a diplomatic contact, relations eventually devolve (partly due to the discovery that Earth’s new colony is actually Kobol) and this eventually precipitates a war, which then gets stoked when a screw-up by a Colonial battlestar results in Disneyland Valhalla getting nuked.

I don’t want to spoil too much, so I’ll leave you to read the other memorable details yourself.

The main flaw I should mention is that it could use a second proofreading… but the typos aren’t excessive and it’s still perfectly readable.

UPDATE 2017-11-14: There is now also a sequel in progress which is better-proofread and mixes in Harry Turtledove’s Worldwar with a satisfying amount of focus on an apparently OC world that humanity chooses to help liberate from The Race.

Finally, I’ll point to Valkyrie by GreyWolfKnight as a completed self-insert that, while not about contact with Earth, is a well-written story that has it as part of the climax… just in case you or I need help re-identifying it and can only remember that aspect.

Posted in Fanfiction | Leave a comment