"That which is overdesigned, too highly specific, anticipates outcome; the anticipation of outcome guarantees, if not failure, the absence of grace."
-- William Gibson, All Tomorrow's Parties
December 10, 2007

Y'know, there aren't many products out there that make me wish I was a 12 year old girl.

See Also: Better Days, the new Serenity comic series slated for March.

[via danelope]

9:18 PM | Linkwhore
December 15, 2007

I have been a big fan of Patch Check Advanced, as it makes patching Solaris systems not an incredible pain in the ass.

Noted on the news section there is pcapatch, which evidently aims to safely automate pca patch installation.

I suspect I might be a big fan of that as well.

10:59 AM | Systems Administration
December 16, 2007

To be clear, my understanding of everything I'm about to say is very basic. It's all built on implementing work others did a few months ago, and reading up last night and this morning. If I say something ridiculous, I call nubs.

(As an aside, it appears that TCL supports USDT probes; news to me!)

Bryan Cantrill mailed me the other day after finding my previous post regarding DTrace and Perl via a post by Sven Dowideit. Bryan noted that Alan's patch pre-dated Adam Levanthal's work on is-enabled probes, which are highly useful for dynamic languages: Code is only executed when DTrace is actively tracing a given probe.

When it isn't, there should be no perf hit; the caveat seems to be that when tracing is enabled when using is-enabled probes, the hit is going to be higher than the previous standard static probes.

In the current state of DTrace in Perl (as far as I am aware), there are only two probes: sub-entry and sub-return. Compare to Joyent's work on Ruby, which has about a dozen (the diff for Ruby is over 20,000 lines, though, so obviously there's a lot more going on than just throwing some USDT probes in). When you are only interested in having what objects are being destroyed, for instance, you don't want to have the function probe toggled.

So this morning after reading a very helpful USDT example, I went ahead and modified Alan Burlinson's patch for is-enabled probes.


[20071216-10:56:50]:[bda@drove]:[~/dtrace/perl]$ diff -u perl-5.8.8-dt-alanb/cop.h perl-5.8.8-isenabled/cop.h
--- perl-5.8.8-dt-alanb/cop.h Sat Dec 15 17:15:14 2007
+++ perl-5.8.8-isenabled/cop.h Sun Dec 16 10:56:49 2007
@@ -126,6 +126,7 @@
* decremented by LEAVESUB, the other by LEAVE. */

#define PUSHSUB_BASE(cx) \
+ if (PERL_SUB_ENTRY_ENABLED()) \
PERL_SUB_ENTRY(GvENAME(CvGV(cv)), \
CopFILE((COP*)CvSTART(cv)), \
CopLINE((COP*)CvSTART(cv))); \
@@ -180,6 +181,7 @@

#define POPSUB(cx,sv) \
STMT_START { \
+ if (PERL_SUB_RETURN_ENABLED()) \
PERL_SUB_RETURN(GvENAME(CvGV((CV*)cx->blk_sub.cv)), \
CopFILE((COP*)CvSTART((CV*)cx->blk_sub.cv)), \
CopLINE((COP*)CvSTART((CV*)cx->blk_sub.cv))); \

Yeah, that was really it. I know, right?

So, now, what do my numbers look like for running the Perl test suite?

Note that all I'm doing is firing on sub-entry and sub-return with no other processing, in destructive mode (otherwise DTrace bottoms out due to systemic unresponsiveness).

static libperl, unpatched:

real 5m42.162s
user 2m28.597s
sys 0m30.161s

dynamic libperl, unpatched:

real 6m31.771s
user 3m16.823s
sys 0m31.698s

dynamic libperl, patched, standard probes, not instrumented:

real 6m33.610s
user 3m12.911s
sys 0m33.445s

dynamic libperl, patched, standard probes, instrumented:

real 9m1.302s
user 3m15.186s
sys 2m47.087s

dynamic libperl, patched, is-enabled probes, not instrumented:

real 6m44.823s
user 3m18.589s
sys 0m43.765s

dynamic libperl, patched, is-enabled probes, instrumented:

real 9m27.597s
user 3m16.791s
sys 3m6.972s

Not that big of a difference, really.

What's really interesting (to me, anyway) about the above are how dynamic libperl and both sets of patches take basically the same amount of time to complete. Compared to my previous "tests" took an extra ~40s as opposed to 10s. Here I am using Sun Studio 12; previously I had been using gcc. I imagine that might make a difference.

I suspect, though, that a number of further factors are at play: the fact that the Perl test suite's behavior is (hopefully?) nothing remotely akin to what you'd see in production, the fact that we're only instrumenting a single set of probes as opposed to having entry points in other places for comparison... Most importantly, though, I imagine whatever changes were made to Ruby might have analogies here as well.

Still, I'm interested enough now to start digging through Joyent's Ruby diff and investing Perl's internals to determine other probe points.

Maybe in a week or so I'll have something worth showing off to #p5p as Rik suggests.

Or my C ignorance will bite me horribly and I'll be forced to commit seppubukkake to save.. face?

10:57 AM | Systems Administration
December 17, 2007

Visual Call Graph using DTrace

Hello, awesome.

[via quasi]

5:57 PM | Systems Administration
December 28, 2007

In the end, the argument we are having between the candidates in the last seven days is not just about the meaning of change. It’s about the meaning of hope. Some of my opponents appear scornful of the word; they think it speaks of naiveté, passivity and wishful thinking.

But that’s not what hope is. Hope is not blind optimism. It’s not ignoring the enormity of the task before us or the roadblocks that stand in our path. Yes, the lobbyists will fight us. Yes, the Republican attack dogs will go after us in the general election. Yes, the problems of poverty and climate change and failing schools will resist easy repair. I know — I’ve been on the streets; I’ve been in the courts. I’ve watched legislation die because the powerful held sway and good intentions weren’t fortified by political will, and I’ve watched a nation get misled into war because no one had the judgment or the courage to ask the hard questions before we sent our troops to fight.

But I also know this. I know that hope has been the guiding force behind the most improbable changes this country has ever made. In the face of tyranny, it’s what led a band of colonists to rise up against an Empire. In the face of slavery, it’s what fueled the resistance of the slave and the abolitionist, and what allowed a president to chart a treacherous course to ensure that the nation would not continue half slave and half free. In the face of war and Depression, it’s what led the greatest of generations to free a continent and heal a nation. In the face of oppression, it’s what led young men and women to sit at lunch counters and brave fire hoses and march through the streets of Selma and Montgomery for freedom’s cause. That’s the power of hope — to imagine, and then work for, what had seemed impossible before.

Sen. Barack Obama's remarks

9:55 PM | Life
December 30, 2007

A couple months ago I re-watched the Hollywood version of The Hitchhiker's Guide to the Galaxy. I'm sure I had all sorts of really interesting things to say about it, but I've managed, again, to scourge the awful from my mind.

All that's left is this screencap dumped into the mess of ~/Desktop, which should adequately exemplify how I feel about the bloody mess they made of it:

(And weirdly, just noticed that the guy who played Zaphod is Victor in the adaptation of Palahniuk's Choke. The things that get by you when you leave the cult.)

5:44 AM | Movies

I finished Assassin's Creed the other morning. I wasn't sure I was going to bother, really, as I'd beaten the first eight missions before going on vacation and had left it feeling somewhat less than ambivalent. As everyone has been hyping, it has gorgeous graphics, and an interesting, unique storyline. Unfortunately the actual gameplay is mediocre at best.

The basic premise is that you're the descendent of a fedayeen assassin who operated during the first Crusade in the Holy Land. Your ancestor's memories are locked away in your RNA and a corporation has kidnapped you to get at information about a specific series of events.

Ignoring the whole genetic memory thing, the premise is really, really cool. You get the scifi stuff, the Near Future Megacorp of Doom stuff, and you get to run around doing awesome shit in a period no game has touched... and it's gorgeous there.

Also, Kristen Bell voices Lucy, an apparent lab assistant in the Now. Kristen Bell is yay.

Unfortunately the gameplay itself is... stilted. Perhaps it's just the hype engine at work, but I was really not impressed. After Altair (the aforementioned ancestral assassin) has done exactly the wrong fucking thing for the half-dozenth time, leaving you Totally Screwed, well, it becomes very tedious.

Free-running, which is to say, a simplified parkour mechanic, is actually really fun when it works. You hold down the free-run button and just Go. Up walls, over roofs, all over the place. Mostly Altair does the right thing, except when he doesn't, it's almost always when it matters most, leaving you Totally Screwed.

You're meant to assassinate nine figures, somehow linked together, on both sides of the conflict. You're meant, supposedly, to plan each assassination in detail, sneak through the city or over the rooftops, and then strike your blow and melt away.

This rarely, if ever, happens. Mostly you end up fighting a half dozen or more soldiers before, after, or during, killing your actual target. And the sword fighting leaves a lot to be desired. Mostly you'll end up waiting to counter when an enemy attacks, though spamming and randomly hitting the counter button works just as well, frankly. Instead of fighting, you can always just run away. Those are basically your options here: Tedious fighting, or somewhat fun fleeing (until Altair slams into a wall or refuses to grab the chunk of masonry you're telling him to grab, and you get a rock thrown at you. And you fall down. Again).

The planning part of the assassinations amounts to the same three mini-games over and over. Pickpocketing, interrogations, and eavesdropping. To mix it up, one of your assassin buddies (who either come in bootlicker or asshole versions) will give you either stealth assassination missions (kill n people without raising an alarm in t minutes) or ... or you get to run around collecting flags for them. So they will hopefully impart some useful piece of information about your current target. It's never useful, either.

Another mini-game allows you to save citizens. This gives you access to moving hide spots (scholars) or vigilantes, who will impede guards chasing you. Basically there are citizens the guards are harassing, and you kill the guards, and then the citizen licks your ass. While the citizen is licking your ass, you cannot control the camera, run, or do anything else.

When the citizen is done licking your ass, you do not get control back until the camera shows you whatever you unlocked: Scholars or vigilantes.

The citizens say the same four or five things every time, and you do this mini-game dozens of times. You can't skip the dialogue. You have to listen to their blathering the same shit over and over and there's nothing you can do about it.

The stealth assassinations would be fun, except that the NPCs are all retarded. There are basically six types of NPC:

  • Town crier: These people are meant to inject some sense of scale into the game. They say the same speech over and over, either about Saladin, Richard, or the Christian God. Over. And. Over. (Weirdly I don't think I ever heard a speech actually citing the Prophet or Allah explicitly.) If they are not repeating these incredibly obnoxious lines, which can be heard halfway across town, they are going to end up being an interrogation mission. That way you know you shouldn't kill them as soon as you get into the city so you don't have to listen to them; you'll need to beat them up and kill them later. You can confirm this because they are always talking about your target. Subtle.
  • Citizen: They respond to you, but only if you act oddly (climbing walls in front of them, running into them, killing someone). Supposedly you can use them for cover, but I didn't find this to be the case. If the guards are on the look-out and you aren't blending, they'll find you regardless of who's surrounding you. See below for further commentary on how ridiculous blending is.
  • Guard: They patrol or guard stuff, and have some sort of Guard Sense which can discover you even if you haven't done anything recently except walk by them. Unless you're "blending". You don't even have to be moving to blend. Or in a crowd. Your powers of awesome are so great you can blend into a crowd without a fucking crowd.
  • Beggar: Always women. Always annoying. They run up and impede your progress. They say the same fucking annoying thing over and over. And forget it if you are trying to listen to someone else while they're around, because their idiotic repetitive speech will drown it out. Punching them or throwing them will draw attention to you, but no one will do anything. They also have a really annoying habit of throwing rocks at you when you're climbing, then running away. They do not harass other NPCs, just you.
  • Drunk: Somewhat rare, they share many aspects of the beggar. Except they push you. Usually into guards. Which cause the guards to realize "hey that guy's an assassin! Get him!" They do not harass other NPCs, just you.
  • Madman: Tend to cluster in areas where they will cause the most annoyance. They stumble around, muttering to themselves, only to realize that while you're 20 feet away they should run over and push you into a guard or the guy you're tailing. Why? The voices told them to. They do not harass other NPCs, just you.

And that's it. There are also "thugs" you can steal knives from, or get into fisticuffs with, but whatever. They're basically citizens.

The problem with the beggars, the drunks, and the madmen is that they are useless game mechanics. They are moving obstacles that are there for no other purpose than to screw you over. If they harassed other NPCs, they could be useful, as they are generating a distraction you can use. But they go out of their way to bother only you: This breaks the player's immersion in the game, and is simply not fun at all to deal with. I don't mean to harp on it, but it made me really angry when I would have to do a mission over six times because the area was littered with crazed morons all intent on giving me a push when it was least convenient.

Some people will suggest that they're part of the terrain, meant to be managed, except their very nature is not realistic or fair. It's just obnoxious because apparently the missions, on top of being repetitive as hell, are simply not difficult. So how do you manage them? You either kill them all beforehand, which can be time-consuming and generates a large guard presence in the area, or you somehow avoid them. Usually by climbing walls or running, both of which draw attention to yourself.

They should just be less stupid, and they aren't. They just cause you to fail missions repeatedly for no good reason, or waste a bunch of climb cleaning them up before doing a mission you've basically done a dozen times before. And in cleaning them up (read: killing them), you're playing the game wrong. Part of the Creed is not harming the innocent. While really fucking annoying, crazy people are innocent enough in context.

And speaking of failing missions. When you fail an "informer" mission (stealth assassination, flag gathering), typically because some crazed jerkoff has shoved you into a guard, you get to run away (or fight a bunch of guards for a while) and hide. Then go back and talk to the informer again. You can't skip the dialogue. You have to listen to their blathering the same shit over and over and there's nothing you can do about it.

After the fourth time failing a mission and having to listen to the guy, I just gave up. Screw it. It's not like whatever useless piece of information he had was worth it, anyway.

The problem with all of this is that I really liked the plot! It was just so incredibly annoying getting at it that I almost didn't bother beating the damn game. The machinations of the Templar in the Holy Land, exactly how the assassins fit into everything, what the Templar treasure was... and how it all fit into what you're going through in the Now. I really did want to know what was going on.

But I had to dig through this tedious, mediocre game to get at it. I didn't even mind the long cutscenes and the ridiculous "hit the button to change camera angles when the screen flashes funny" gimmick.

I am pretty sure I was playing the game "right", too. I was trying to act like an assassin: Not drawing attention to myself, being stealthy, not getting into big swordfights... but the problem is, the stealth element is lacking. You can't drag bodies out of the way, where they won't alert the guards. You can blitz through the game and it doesn't really affect the world at all. Eventually everyone forgets what's going on, no one is paranoid about the guy with all the sharp cutlery strapped to his back. There's no good reason to play an assassin as opposed to a berserker except the game is called Assassin's Creed.

I think the only real assassination I managed to actually pull off was Sirbrand. I snuck up to his pier after half a dozen attempts on jumping on these very suspiciously placed stanchions (detection there was way off, so even if you lined it up right, you'd end up jumping in the wrong direction and oh, assassins apparently can't swim, so you die. Yay!) in the harbor, climbed up onto his ship, and shivved his ass. Then ran away back into Acre before anyone even noticed. Everyone else I ended up playing the tank for some reason or another. Usually something stupid.

Finally you get your pay-off: You unlock the last memory, you discover what happened to the Templar treasure, get the skinny on what your assassin brothers are up to, you get the full brief on what Templar, Inc are up to in the Now, your captors run off to pilfer more ancient mind-altering treasure, and... oh. You can see crazy symbols drawn all over the lab where you're being kept. Drawn in blood by a previous subject.

"I wonder what it means?!" your character cries.

And cut to credits.

Mediocre gameplay coupled with a crappy cliffhanger ending makes me not very happy. And yes, I read all the emails, so the whole previous-subject-going-nuts thing made sense. It was just a .. dumb place to end the story.

And the worst of it, all of this should have come out in QA.

"Hey, those NPCs are really stupid."

"Hey, there's no real stealth involved here."

"Hey, the mission diversity is... not there."

"Hey, uh, the NPCs SAY THE SAME SHIT OVER AND OVER AND YOU CAN'T SKIP IT."

"Hey, uh, if you're going to make people fight, maybe fighting should be fun."

This was a really ambitious game, and it could have made it with a bit more polish. But it doesn't have it, and it's made all the more frustrating and flawed because of it.

Meh.

(One other thing that confused me: From the reading I've done since the game came out, it seems that Saladin and Richard respected each other at the very least. Richard's comments in the game were basically the opposite. It was somewhat disconcerting.)

To speak, briefly, about the core thematic elements... The plot is a contemplation on free will. Two basic philosophies are engaged in a shadow war. They both want the same thing (peace, specifically in the Holy Land, but also in a more general context), but have very different ideas about how to get it.

The fedayeen (in this case, the assassins) want an educated populace, mature enough to understand the world and the people around them. The Templar wish to enforce peace, through fear, bribery, reprogramming, and ultimately, through controlling the populace's very minds. With the exception of the fat bastard, everyone you kill believes they are doing the right thing. Not just for their cause, but for the betterment of Mankind. They are unapologetic, absolutely positive that the ends justify the means.

Faith is also touched upon, though certainly not as much as it could have been. A few of your targets, both Christian and Muslim, make some snide remarks about being abandoned; but it's only at the very end that the exact powers of the Piece of Eden are revealed, and Al Mualim drops a few bombs on the believers. A steadier hand on this theme would have been nice, though I suppose given today's climate it's understandable why it was glossed over.

The philosophical conflict, bound together with war between the Saracen and the Crusaders, is far more interesting than the tedium of the game itself. And that's a shame. It's still rare when you get actual depth in this medium, and it's saddening when the concept is failed by implementation details.

6:29 AM | Gaming