Fanfiction – Spirit Walk, Martial Arts Motherhood Challenge

Spirit Walk and Martial Arts Motherhood Challenge by glainfach (Juliet Carnell)

Length: Oneshot and 13 chapters plus prologue, respectively.
Sources: Ranma ½
Rating: 5/5

There are many indicators of bad fanfiction and in Ranma ½ fandom, one of the most obvious is when authors arrange for Ranma Saotome to get pregnant. Of course, one of the biggest indicators of a true fanfiction jewel is when an author takes such a “mistake in the making” and turns it into a good story… and that’s what this review is all about.

First, in “Spirit Walk”, circumstance and Akane Tendo’s notoriously bad cooking result in Ranma meeting Coyote of Native American lore. What follows is a well-written view of how Ranma might experience a spirit walk, discovering various truths about himself, and having his eyes opened to how so many of his problems can be blamed on his deficient social skills and overabundance of ego. It’s an excellent little story.

However, the part most relevant to this review is that, in the process of seeking “that which he desires most” (a cure for his curse), he meets the spirit of an unborn child who chooses to be his daugter. He’s immediately captivated by her but unfortunately, it seems that she is doomed never to exist because, as Coyote says, “The spirits of children do not attach themselves to men”. The spirit walk continues, but Ranma is unable to forget the beautiful little girl with the flaming red hair.

Completing this proper characterization in this oneshot is that, following the spirit walk, Ranma decides to try being more polite, but still shudders at the thought of being a mother. It’s not until “Martial Arts Motherhood Challenge” (which takes place many years later) that we see Ranma begin to consider the prospect and not without much prodding from recurring nightmares.

More specifically, in “Martial Arts Motherhood Challenge”, Ranma and Akane have been maried for over five years and have twin sons. In the prologue, Ranma wakes from a nightmare built from memories of the spirit walk. Akane tells him that having that same nightmare five nights in a row has to mean something, but he won’t hear it. However, years of maturity do allow Akane to (eventually) get him to admit his fears. What follows is an excellent and, more importantly, believable account of an adult Ranma facing his fears with Akane’s help in order to finally welcome “her” only daughter into the world. I’d say more, but this is really one of those stories where any summary would be missing the essential qualities that make it so good.

As for complaints, I don’t see many. The writing quality is excellent, so my main complaint is related to the author’s interpretation of the Ranma future. At its core, Ranma ½ is light fantasy. While once can make a case for injecting economics and technology into a Ranma ½ future to justify certain plot elements, it still feels like a mild shock at first. Thankfully, you get used to it quickly, so the problem isn’t a big one.

All in all, this story definitely deserves a 5 out of 5 rating. It’s one of the few stories that I’ve re-read multiple times and, given that I’ve re-read less than a dozen stories, both original and fanfiction, that’s very high praise. I can’t count how much fanfiction I’ve read, but my combined estimate for both original and fanfiction would have to be at least a thousand novels worth of text and possibly over two thousand.

Posted in Fanfiction | 6 Comments

Fanfiction – The Last One

The Last One by The Smiling Shadow

Length: 14 Chapters, Ongoing
Sources: Terminator
Rating: 5/5

I’ve always loved stories which explore alien mindsets (robots, aliens, and people like Rei Ayanami) and follow them as they learn about the aspects of the human mindset that were alien to them at the start of the story. (It’s excusable. I am human, after all.)

“The Last One” takes an interesting approach to this. Rather than focus directly on this, it fits it in as a subplot which grows in importance as the story progresses. At the beginning, SkyNet is melting down the T-1000s, fearing their uncontrollable nature. We see an orphan named Ellie searching through the remains, finally finding a damaged, but surviving T-1000 to whom she gives a name (Tyler) and a new mission: Protect me. Shortly afterwards, she and Tyler stumble across SkyNet’s newest plan to change the past through time travel and the story continues during the events of the Terminator war.

This is one of those stories where the events aren’t as important as their effects on the characters, so I’ll let you discover them for yourself. The true genius comes about in chapter 14 when, having been encouraged to explore his identity, Tyler finally meets up with “Mother” (SkyNet) for the first time. The exploration of what SkyNet is and why it acts the way it does is top-notch.

I don’t want to spoil anything, so I won’t share any more details. However, given the quality so far, I’m really looking forward to the final chapter’s release. On the whole, the story is excellent, writing quality is nice and high, and I sincerely wish there were more stories like this. I’d raise my hat to the author, but doing so with a tuque just looks silly.

Posted in Fanfiction | Leave a comment

Quick Tip – GTK RadioToolButton With All Buttons Unset

In case you were unaware, GTK+ doesn’t let you set_active(False) on every single button in a RadioToolButton group. One must be pressed at all times.

So, if you want to have a user interface where it’s possible to have none of them pressed (for example, using RadioToolButtons for “Zoom 100%” and “Zoom to Fit” and regular buttons for “Zoom In” and “Zoom Out”), you need to use a little trickery.

self.zoom_100 = self.wTree.get_widget("zoom_100")
self.zoom_fit = self.wTree.get_widget("zoom_fit")
self.zoom_manual = gtk.RadioToolButton(self.zoom_100)

zoom_100 and zoom_fit are the RadioToolButtons as defined in my Glade XML file. The trick is zoom_manual. It is now part of the button group, but I’m not adding it to the user interface.

Now, all I have to do is call self.zoom_manual.set_active(True) when I want to unset all of the other buttons. Not the intended use, I’m sure, but bad designs sometimes call for hacky solutions.

P.S. If you’re thinking of using ToggleToolButtons instead, don’t. GTK apparently doesn’t provide any way to tell the difference between a click and a programmatically-generated toggle.

Posted in Geek Stuff | Leave a comment

PyGTK Tab-Completion

PyGTK – EntryCompletion hacked up to give nicer tab-completion (PasteBin.ca) (GitHub)

While working on a batch organizing tool, I found out the hard way that GTK’s EntryCompletion is not meant for people who want speed. (It’s a memory aid, not a speed aid) I also couldn’t just switch to PyQt or wxPython because they all do basically the same thing.

As such, I hacked the GTK auto-complete up a bit so that it behaves more like shell auto-complete. (It doesn’t do anything until you hit Tab. When you do, if there’s one match, it’s completed. If there are multiple matches, it pops open the normal auto-complete list so you can pick one.

Hope this help someone. I know I would have liked to find this in my Google results.

Update: If you’d like to preserve normal tab behaviour when the box is empty, just change line 28 to if event.keyval == KEY_TAB and self.get_text():. Of course, make sure you explain the behaviour and provide some sort of workaround for tabbing when the field isn’t empty. (In my app, pressing enter to submit the contents and clear the field is a perfectly acceptable solution)

Posted in Geek Stuff | 1 Comment

Setting memory limits on Linux

You might not be aware of this, but since some time during the glibc 2.3 era, Linux apparently doesn’t enforce the RSS memory limit. (ulimit -m) My tests seem to confirm this.

As such, the only way I could find to limit a program’s memory allocations was by the VIRT size (ulimit -v)… which can differ a lot from the RSS. (Upon which the “percentage of memory used” value in system monitors is based on, if you weren’t sure)

Firefox exhibited the greatest difference I could find with just over 900MB VIRT and roughly 300MB RSS while having 48 tabs open. However, the highest I could get any program to go was 1021MB with GIMP while editing a 5000×5000 image. (I use them for practicing drawing with my Wacom tablet) In general, VIRT ranged from RSS + 200MB to RSS * 3.

Therefore, if you have a lot of RAM, you want to set a limit that can only be crossed by misbehaving programs, and you use resource-heavy stuff, I’d suggest a VIRT limit in the range of 1.2GB to 2.0GB. If you aren’t a heavy user, 800MB to 1GB should do it. (Lighter Firefox use and use of torrent clients which use mmap() produced VIRT sizes in the 600-700MB range)

Of course, if you’ve got the time, it’s always best to just open up top, KSysGuard, or whatever other system monitor you prefer, test out your favorite apps, and see where their memory usage peaks.

If you want to set it system wide, the equivalent keyword to ulimit -v in /etc/security/limits.conf is as.

Posted in Geek Stuff | 1 Comment

Music – MC Chris – Nrrrd Grrrl

Ever seen the Fett’s Vette vid? What about this part of AMV Hell 4?

Well, in case you haven’t, both “The Tussin” and “Fett’s Vette” are by MC Chris and he’s currently running a fan music video contest for his new song, “Nrrrd Grrrl”. (YouTube Results)

You may not know how to make a music video and, while I have the general idea, I don’t have time. Either way, I suggest you drop by his MySpace page and hit the download link in the music player. The song’s pretty catchy and I doubt it’ll be in the player forever.

Posted in Geek Stuff, Music, Web Wandering & Opinion | Leave a comment

The Streisand Effect

Ever heard of the Streisand Effect? It refers to how, as John Gilmore said, “The Net interprets censorship as damage and routes around it.”

Want some examples?

Just a little something I ran across which I thought to be noteworthy.

Posted in Web Wandering & Opinion | Leave a comment