Notes on notification-daemon

Just a few brief things I’ve learned about notification-daemon while trying to make mine less annoying:

  • It’s been five years and notification-daemon is still effectively undocumented as far as I can tell (Aside from the odd example, the best you can do is work sideways from Ubuntu’s guide to the API it shares with NotifyOSD)
  • You can change the theme via the notification-properties command
  • You should be able to select which screen corner will play host to notifications via notification-properties but it’s apparently broken and current versions of notification-daemon will always force top-right corner.
  • There’s no setting for controlling which monitor you’re using it on. It will pop up on the one your mouse happens to be occupying, even if that means covering your browser’s Close Tab button and annoying the hell out of you.

Time to expedite my switch to Awesome and tweak Naughty to get what I want, I guess.

Posted in Geek Stuff | Leave a comment

Game Review: VVVVVV

With the Humble Indie Bundle 3 set to end in less than a day (bad timing, I know), I finally got around to writing my review of VVVVVV.

VVVVVV is a puzzle platformer with a special twist. Unlike other platformers, you can’t jump… you can only reverse the direction you fall. (I’m guessing the main character is supposed to be weightless and wearing magnetic boots)

The first thing I have to say is that this is a game that’s firmly targeted at the “nostalgia niche”. Its graphics are an intentional knock-off of games from the Commodore 64 era, the soundtrack is composed of chiptunes, and gameplay, while simple and intuitive, is about as far from “push button to win” as you can get while still keeping me as a satisfied player.

However, you don’t have to be an old Commodore gamer to enjoy it (The SNES was the first gaming system I owned) and it’s actually a very refreshing game as long as you aren’t impulsive or impatient. Some levels require to you to stop and think before you attempt them while others are centered on “more speed, less haste”. This is definitely not a game to be played while tired. However, if you’re well-rested and can think well within levels designed to make you hurry (and to kill you if you get lazy), I found it not only satisfying, but rather relaxing. (Just make sure you’re playing the newer C/C++ rewrite. The old flash version’s collision detection is painfully inadequate.)

I especially enjoyed the scrolling “The Tower” segment… which is a bit of a surprise, given that I hate self-scrolling levels everywhere else in gaming. There was a sort of “DDR Zen” to it (plus catchy music) that appealed to me… aside from that jerk move of putting that second trinket far enough from its branch point to keep me from getting everything in the first run.

In fact, aside from when I got tired and started making mistakes, the whole game had a sort of relaxing flow to it.  All in all,  it’s a very well-designed game built around switching between stopping to think one moment and requiring you to be cool and collected under pressure the next.

While I wouldn’t want that in all my games, in moderation, it’s very refreshing. I suppose I’m starting to understand what some reviewers see in the first Castlevania game. It also helps that there’s so much catchy music in the soundtrack.

Not a long game, but well worth it if you can spare the cash.

Posted in Geek Stuff, Reviews | Leave a comment

A Few Suggestions/Pleas to Authors of Mystery-oriented Fiction

Just a quick couple of suggestions for people looking for something a little more original than The Loch Ness Monster, Atlantis, or Alien Abductions to work into their creative endeavors. (Because they occurred to me while I was wandering Wikipedia and this is my blog)

First, think long and hard before writing stories about lost technology or an Advanced Ancient Acropolis. It’s far too easy to get caught up in the excitement of writing them and misjudge your ability to do them well. (And, more subjectively, I’m getting tired of reading about them too)

Second, please please please don’t write a You Go Too Far! story. Science Is Bad stories are far too common and, given how you probably wouldn’t have time to write without its fruits, it’s, at best, frustratingly hypocritical and ungrateful to add to the pile of fiction implying that all progress is bad. I see your Frankenstein and raise you Plato’s Cave.

Finally, if you’re going to build your story on unsolved mysteries, vive le difference. Open up Wikipedia’s Open problems category and drill down to something like Undeciphered writing systems or Uncracked codes and ciphers or List of unexplained sounds. The more little-known, the better. A good story is fascinating because it’s not too familiar and a good mystery even more so.

If you must go to something like Category:Mysteries which has a high incidence of entries covering likely hoaxes, paranormal events of low credibility, and so on, please try to either stick to the sub-categories that are less hokey (like Lost works and Missing ships) or proceed with extra caution.

I have nothing against a good contemporary sci-fi or fantasy story… but I’m getting really tired of stories where the author has an engaging writing style or captivating characters, but the plot depends on me seriously considering the real-world existence of fairies or unicorns or the big bad wolf. Magical thinking has its place, but don’t over-do it. (I love The Dresden Files, but ridiculously improbable things like Bigfoot bore me when it’s implied that the author believes they’re probably real and expects me to believe likewise.)

As for general writing advice, pick something you’ve never seen used before (or if you don’t, resolve to do whatever you pick better than what you’ve seen) and, as Mark Twain said, “Get your facts first, then you can distort them as you please.”

Posted in Web Wandering & Opinion, Writing | 1 Comment

50+ Naruto Authors Who Did Something Well

I’m not really sure why, but this weekend, I ended up not only noticing a FanFiction.net author’s poll for picking the top 5 Naruto authors from a list of 50, but taking the time to examine all 50 choices. Suffice it to say, the poor quality of almost every choice on the list was beyond embarrassing. (I’m assuming the 50 choices were finalists of some sort, proposed by “the average FanFiction.net user”)

Most of them were the kind of authors I wouldn’t read if you paid me (people who, as far as I can tell, spend their time writing tired, cliché, fix-it or shipper plots that were done to death years ago) and, of the 10 who have actually written at least one story I recognize as something I’d consider worth reading in retrospect, almost none of them are the authors I’d really recommend for their skill, talent, wit, cleverness, and/or ability to keep it up over the course of several fics.

Given that I had a little free time and a decent collection of records on what I’ve read and liked, I decided to compose my own list, complete with the fics that earned them their place. I really didn’t want to sort all 50 from best to worst, so it’s in alphabetical order instead.

Not everything they write is good, but each of them wrote something good at least once and all of them demonstrated that skill and/or luck in Naruto fanfic. (I’m not sure I’d have been able to find 30 authors, let alone 50, if I limited myself to people who wrote more good stuff than bad over the course of their interest in fanfiction)

Enjoy and, if you think I missed someone, please leave a comment so I can check them out.

  1. Aleh (Appreciation)
  2. Andoriol (Naruto: Lord of Konoha)
  3. Angel of Snapdragons (A Drop of Poison)
  4. anothvortex (all four stories)
  5. Asha’man of Fire (Kitsune on Campus)
  6. atom-of-ice (Naruto’s Advice)
  7. Average Naruto (Tomato)
  8. Bloodreaver Alpha (Diary of a Madman: Memoirs of a Nukenin)
  9. brown phantom (Students of the Snake, Naruto’s Kit)
  10. Case13 (Reload, The Art of the Deal… and I’m told his other Naruto stuff is amazing too but it’s still on my to-read list)
  11. Chibi-Reaper (Overlord, Uzumaki Naruto, Sorceror for hire, and various clever ideas that haven’t been written far enough yet to list)
  12. Chilord (Bondage Style!)
  13. ChoppedHige (Nicknames and Shadows)
  14. Crimson Skies (This Time Around)
  15. Denim88 (Cracked Mask)
  16. DisobedienceWriter (Naruto’s Compensation)
  17. dogbertcarrol (Glaring Problems, Play it again, Naruto!)
  18. Dragon Man 180 (Feel Like A Woman)
  19. drakensis (The Night The House of Cards Was Built, Cheaters Prosper)
  20. EdStargazer (Naruto: Captured)
  21. froznfox72 (Geniuses of Hard Work)
  22. gsteemso (The Disorderly Princess and the Fiery Steed)
  23. HitokiriOTD (The Book of Naruto)
  24. Innortal (Shinobi OneHalf, The Naruto Omake Files: Innortal Style)
  25. Jade R. Raven (The Rival)
  26. Jonakhensu (Kyuubi no Cabbit)
  27. Jonque (The Missing Hokage)
  28. Kenchi618 (Better Left Unsaid)
  29. Kraken’s Ghost (Foxhound)
  30. leafygirl (Loophole)
  31. Lord Archive (Between Deception and Truth)
  32. Lucillia (Time MixUp, History Exam, Little Uzumaki, The Consequences of Drunken Experiments, Chickenzilla, 5 Hokages, Underwear the Cat, Pet Names, Yukiko, and various others)
  33. Majin Hentai X (Naruto: Game of the Year Edition)
  34. Minnionette (Switched!)
  35. MockV (A Twist of Chance)
  36. MogTheGnome (The Great Romantic, Naruto, the Spanking Nin, The Imprint, The REAL Sound Nin, and less memorable others)
  37. Nes Mikel (Garden of Sanctuary, Medusa Javelin, Empyreal Paradox)
  38. nobody102 (Scorpion’s Disciple)
  39. notgonnasay09 (Guardian’s Wings)
  40. Nugar (Ask Me No Questions, Anything and Everything)
  41. Orrunan (Uprooted)
  42. Ozzallos (Tales of the FoxCat)
  43. Sarah1281 (It’s For a Good Cause, I Swear!)
  44. Shadow Crystal Mage (Death and the Uchiha)
  45. ShaperV (Time Braid)
  46. Smylingsnake (Oops!)
  47. S’TarKan (Out of Darkness: A Jinchuuriki’s Tale, Team 8)
  48. The Red Dragons Order (Flip Flop and Fly)
  49. TwinEnigma (Secretive, Transcendental Idealism, House of Dogs, Replica, Ad Oculos, Side Effects May Occur, Alternate Hosting, and less memorable others)
  50. yasuhei (Ganbatte ne, Oirokechan)

Runners-up:

Entries in this section didn’t make the top 50 list, not necessarily because they weren’t as good, but because I don’t remember them very well, so I have to take my records’ word for it that they’re good… and I don’t trust my younger self’s judgement without nostalgia to back it up. 😛

Some of them are here due to a lack of quality though. They’re still good… just not quite good enough to match one or more similar authors in the list above.

Note: Before I get any flames about Chunin Exam Day being down here, please keep in mind that I’m perfectly willing to admit that Perfect Lionheart does have a knack for writing catchy stories with strong starts… he just draws them out and gradually changes them until they’re not what I wanted anymore. (I’ve often wondered whether he’s a troll or just arrogant and too full of hubris)

Late-Comers:

This is where I put authors who wrote really good stuff… but I only found it after I’d written the first version of this post.

Posted in Fanfiction | 40 Comments

Tuning TiddlyWiki for Polished Prints

This morning, in typical distracted fashion, I got the urge to start experimenting with using CSS to style a website for printing and decided to use the copy of TiddlyWiki I use for personal organization as the test bed.

I was so impressed by how nicely the results printed out that I just had to share them. The particular pages that most impressed me are private stuff, so I can’t share them, but here’s the TiddlyWiki markup reference:

TiddlyWiki: Screen versus Print

Here’s the full PDF. (Note: There is actually a visible difference between reading the PDF on-screen and printing it. DPI makes all the difference. I was also going to experiment with page margins, but I liked the results so much that I didn’t want to change anything.)

The CSS below works perfectly with a completely un-modified default TiddlyWiki theme… though it does also include a couple of tweaks that only really have an effect if you’ve got certain plugins installed. (eg. CheckboxPlugin)

Depending on how you use TiddlyWiki, you may want to skip the “Hide tag-related floats” or “Page break before each tiddler” lines in your copy. I made sure that, before I hid them, the floats didn’t look too horrifying.

To really exercise the stylesheet, print out a stream of several tiddlers with at least one outline list full of checkboxes and at least one span of text similar to an O’Reilly book. (Roughly a page worth of paragraphs with some technical nouns marked up in italic here and preformatted text there)

UPDATE: After sleeping on my results, several improvements occurred to me:

  • Fixed table heading color in Chrome (Not sure how I missed this one)
  • Adjust things to look good when printing of background colors and/or images is enabled.
  • Create a CSS class that can be applied using {{checkList{ ... }}} to hide bullets if your list starts each entry with a checkbox anyway. (Much prettier TODO lists both on-screen and in printouts)
  • Switch to vertical-align: bottom for checkboxes after more eyeball-testing with Firefox and Chrome
Posted in Geek Stuff | 1 Comment

8 PCs In A Bunker: Ownership, Respect, and Principles in the Steam Era

TL;DR: DRM is you paying to be mistrusted and quietly disrespected; Piracy is an implicit endorsement of someone whose behaviour you disagree with.

(UPDATE 2016-01-14: If you pirate, It also makes it easier for them to blame you for their own bad business decisions. If everyone would just play something else instead of pirating, they’d be forced to ask “What are they doing that I’m not?”)

(UPDATE 2016-10-08: If you like this, I suggest watching Rerez’s 3.5 minute talk about why emulation shouldn’t be a dirty word in the video game industry.)

Every now and then, I’ve had someone look at me in surprise because I refuse to buy games that are only available on Steam. “But it’s so convenient,” they’ll say or, if they know me personally, “What’s wrong with taking advantage of the $1 deals like your brothers do?”

My answer to them is that Steam violates what I refer to as my “8 PCs in a Bunker” policy but, more fundamentally, it’s a matter of ownership, respect, and principles.

Until games started to use phone-home systems like Steam for their DRM, you effectively owned any game you bought. Yes, there was that nasty little stub of code which meant that, if you broke the disc and you hadn’t made a copy and grabbed a crack, you were screwed but, aside from attacking people reselling used copies on eBay like AutoDesk does with AutoCAD, your intuitive expectations for buying something were upheld and agreeing to the EULA was, for home users, effectively a meaningless formality.

Then, along comes Steam with its addictive sales, ultra-convenient game manager, and integrated social framework… pay no attention to that man behind the curtain. What they don’t want you to stop and think about is that, by buying games with phone-home DRM, you’re not actually buying them anymore. Steam and similar systems give the publisher the power to enforce that license agreement we’ve all grown so used to ignoring. You didn’t buy anything; you just paid a one-time subscription fee… and legal departments always make sure that subscriptions can be revoked at the service-provider’s discretion.

Suddenly, Valve is in a position where they have all the power and I just have to trust that they won’t abuse it. Suppose Steam loses out to a competitor someday and closes up shop, I have to have faith that Valve or the game’s developer will release an update to remove the game’s dependence on it. If they’re killing off the brand anyway and the games are a decade old, do you really think they’ll see a worthwhile investment in that?

(UPDATE 2016-03-31: Look at what happened with Games for Windows Live if you need a real-world example.)

Suppose Valve goes public. (If a U.S. company grows big enough, staying privately owned becomes more hassle than it’s worth. That’s what happened to Google.) Suddenly, they’ve got a CEO in charge with a fiduciary responsibility to maximize profit. Once again, mandatory auto-update + Steam required + subscription-style licensing easily becomes “We think you’re a pirate/cheater/pedophile/communist and we’re revoking your account.”

(UPDATE 2016-03-31: And my worries appeared to be correct, because I’m now hearing tales of people who got banned without getting refunded for the single-player experiences they lost access to. Even if they were paying me to play games via Steam, I’m not sure how much monetary compensation I’d need to make up for the stress of having that Sword of Damocles hanging over my head.)

We’ve already seen how little the promise of a DRM-locked eStore is worth when certain online music stores closed up shop and, at best, left it up to you to jump through hoops to preserve your collection. They’ve already got your money. Why should they care about tarnishing a brand that’s being end-of-lifed anyway?

Paying to be distrusted and quietly disrespected just isn’t the kind of relationship I want to have and I don’t like the “guilty until proven innocent” culture it fosters. Besides, if you can suppress the instinctive “Ooh! Shiny!” reaction that Steam sales are so finely tuned to trigger, it becomes very easy to find ways to spend your time that don’t force you to choose between pleasure and principles.

My favorite ways to have fun without feeling dirty include:

Aside from the pleasure of not feeling like I’m whoring myself out to the corporations (to put it bluntly), there’s a certain degree of satisfaction in being able to save my money, spend most of my time entertaining myself for free, and often have something to show for it when I’m done.

Now, some people might argue that, if you “pirate” games, It will also satisfy many of those goals and prevent them from revoking your access to the game, but part of having principles is doing it right, so you can feel good about yourself for not giving into the temptation to weasel your way around them.

I’d much rather feel good about entertaining myself than validate a publisher’s sense of entitlement and give implicit approval (and possibly word-of-mouth advertising) to a game developer who is unwilling to have principles of their own. It also helps that, when I do refuse to buy a game, I can harmlessly indulge baser instinct (some might call it a guilty pleasure) by revelling in doing my part to consign them to obscurity.

(UPDATE 2016-06-50: “Not only am I going to withhold my money, I’m also going to deprive them of any legitimate grounds for complaining about it. That’s much more satisfying.”)

So, with all this philosophical posturing, what exactly is an “8 PCs in a Bunker” policy? It’s something I cooked up in the mid-’90s when I was a poor kid with a lot of smarts and a risk-averse personality to match.

In short, suppose a nuclear war were to break out tomorrow and I was left with only 8 PCs in a bunker, blank hard drives, and a bunch of DVD+R backups. Could I still enjoy what I’d bought to a reasonable degree?

Think about that for a moment:

  • Blank hard drives, so you have to be able to install from scratch.
  • No Steam servers, so you have to be able to back up the installer to DVD and “phone home at least once to verify ownership” won’t work.
  • No phones and no call center, so “phone this number for a manual activation code” won’t work
  • No access to a central matchmaking service or an MMORPG server farm, so you’d better hope that, if they’re needed, the server software was available for download too.
  • Burned DVD+Rs, so if you’ve got old-style “lock it to the installation media” DRM, you’d better already have a crack too.

There are probably other things I took into account when I first designed the policy, but I think you get the idea. It’s an imaginative way to ask myself “Do I own this? Do they seem to trust me?” that covers pretty much any eventuality the publisher is likely to consider worthwhile.

I actually go further with non-games (insisting on open-source software so I don’t have to “take it to a manufacturer-owned service center” when it breaks) but that’s another story.

Update: Tor/Forge now also sells DRM-free eBooks and I should probably mention that, if you like to read to learn, O’Reilly and No Starch Press sell DRM-free eBooks too.

Update: Image Comics is apparently working to remove DRM from their offerings now.

Update: Another source for free eBooks is The Open Library.

Posted in Otaku Stuff, Web Wandering & Opinion | 8 Comments

How to perform a one-off migration into Django ORM

While working on a project I haven’t yet made public, I found myself needing to migrate data into a Django project without being able to use the simple, common “Use inspectdb, then migrate to the new form with South” approach some suggest.

Here’s the simplest sequence of commands I’ve found for performing a migration to an existing app with some possibility for reusing the migration later if necessary:

django-admin.py startproject <throwaway project>
cd <throwaway project>
python manage.py startapp <real target app name>
[repeat for all target apps]
[edit settings.py and tell it about your DB and apps]
python manage.py inspectdb > temp_models.py
[look at temp_models.py and make any adjustments necessary]
[edit models.py for each app and move the relevant bits from temp_models.py]
python manage.py syncdb
python manage.py dumpdata > migrated_data.json
[...and then set up South to prevent future pain] 

Nothing fancy. Just something that saved me some hassle and might do the same for someone else. Here are the actual commands I used for clarification:

django-admin.py startproject gbi_temp
cd gbi_temp
python manage.py startapp gbindex
python manage.py startapp icolinks
python manage.py startapp ffcms_core
vim settings.py
python manage.py inspectdb > temp_models.py
vim temp_models.py gbindex/models.py icolinks/models.py \
    ffcms_core/models.py
python manage.py syncdb
python manage.py dumpdata > migrated_data.json
mv migrated_data.json ../ffcms/
cd ../ffcms
python manage.py loaddata migrated_data.json
Posted in Geek Stuff | Leave a comment