Document Actions


Site News

Hi, my name is David, and I'm a tabaholic.

I know I have a tab problem when there are so many of them that the browser just stops rendering the favicon.

See the attached image, as evidence.

I've had this problem for as long as I can remember (which admittedly isn't that long).  At least as long as the existence of browsers supporting the tab concept.  So, really, this is their fault.  For enabling my addiction.

But I recognize the addiction, which puts me at step 1 of the 12 steps, right?  Being a technonerd, I believe steps 2 through 12 are therefore all variations on trying to find some piece of clever software gadgetry that will 'solve' this problem for me by improving the interface with which I manage tabs.  In software, the problem is never that there is too much of something, it's that the interface hasn't tailored itself appropriately to the scale of the information set.


That's my story.  So now I have to go find some plugin for chrome and/or firefox (preferably both) that can haul me out of this tab tarpit.  Because I'm sure as heck not going to just start closing tabs.  That'd be crazy.

hoss @ 20110319:14:31 (Sat)

This is the third and final installment of my ground-breaking and emotionally-charged story of how to use kdiff3 as your graphical differ with other tools.  And I've saved the best for last.  Which isn't saying much.

Subversion proved to be a thorny little bugger when it came to coaxing it into (successfully) using another graphical diff tool.  The reason being that it doesn't adhere to what can only generously be described as the 'standard' command-line arguments for diff tools.  And thus, in contrast to bzr (which merely needed a gesture in the direction of kdiff3), subversion requires a dedicated shell script to convert its command-line arguments into a form compatible with kdiff3.

But first, a few configuration changes in your ~/.subversion/config file:

diff-cmd = /home/<username>/.subversion/
diff3-cmd = /home/<username>/.subversion/
merge-tool-cmd = /home/<username>/.subversion/

Note that there are existing comments in the config file associated with all but the last keyword, but I've omitted them for clarity.

'' is the shell script that we'll describe in a moment.

Replace <username> with the username of the login that you use.  And yes, it really does need to be an absolute path reference ('~/<username>/...' won't work).  You don't have to put the script in your .subversion directory; you could use a shared location, as long as it's accessible by your user account (and any others that you wish to similarly configure).

See the rest of this post for the contents of the shell script.


Dear NHL, Chara deserves to be punished, no matter how much of a swell guy you think he is.

[sigh] Here's another open letter to the NHL.  I'd rather not make a habit of this, but they keep screwing up with such regularity, and on such an egregious scale, that I am compelled to howl at the moon.


Dear NHL,

I'm writing to log my complaint about YET ANOTHER wrong-headed, inconsistent, capricious ruling by the league's disciplinary board.

I am disgusted and disappointed that Zdeno Chara received no fine, no penalty, and no further disciplinary action for his hit on Max Pacioretty on March 8, 2011.

The hit was intentional, period.  It was not an 'accidental injury'.  Chara knew precisely what he was doing, and chose to do it when he did, where he did, and in the manner he did, resulting in an extremely dangerous act that produced a life-threatening injury.

This is just another example of the league giving players a free pass to disavow themselves of the consequences of the conscious choices they make on the ice.

Chara doesn't have to be a 'dirty' player for this incident to merit a lengthy suspension.  Chara made an extraordinarily poor decision during the course of play, and he absolutely must be held accountable for it.  It doesn't matter whether or not he intended to severely injure the other player.  He's still responsible.  In society, if we convict someone of manslaughter, we don't just let them go free - they're still held responsible for the consequences of their choices and actions.  And we punish them for those actions as a way of compelling that person (and everyone else) to be more attentive to similar circumstances in the future.

The league continues to embarrass itself and to erode the value of its product, and in so doing to alienate fans such as myself who love the sport but find themselves increasingly at odds with a league that continues to not only condone but encourage (through the absence of discipline) bad (if not borderline criminal) behavior, unprofessionalism and poor sportsmanship.

(Note: I selected 'NHL Consumer Product Marketing' in the feedback form because you don't offer anything that looks more appropriate for feedback regarding overall league stewardship, and I figure if any one cares that decisions are being made that tangibly undermine the commercial value of the league, it'll be the marketing department.)

(Note also: I am neither a Bruins fan nor a Canadiens fan.  I'm a hockey fan, at least for now.)

Dear NHL, congratulations on your epic fail.

The following is an open letter to the NHL.


Dear NHL,

Please note that I'm neither a Penguins fan nor an Islanders fan.  I'm a hockey fan.  But I'm not sure I can continue to support the NHL after the way it completely and utterly failed, in every conceivable way, during and after the game between the Penguins and Islanders on February 11, 2011.

I literally cannot find words strong enough to convey just how badly the NHL conducted itself.  And that includes everyone: players, coaches, officials, and not least of all the league's disciplinarian.

The officials acted as though they'd never done a professional game before.  It was a farce, like some Pro Wrestling event, where the refs play their clownish role and allow themselves to be distracted while someone gets hit over the head with a folding chair.

The players earn the majority of the disdain.  Matt Martin didn't fight Talbot, he sucker punched him in a blatant attempt to injure him severely.  The fact that he did it on frozen water doesn't redefine his actions; it doesn't magically turn felony aggravated assault into 'sport'.  Trevor Gillies... wow, where do I start?  He exhibited classic criminal psychopathic behavior.  And there was absolutely nothing professional or athletic about Michael Haley's contributions.

And just so this doesn't sound completely lop-sided in favor of the Penguins... Even if they actually held the moral high ground in this episode, any team who keeps perennial hooligans like Rupp and Cooke on the roster is complicit in the league's problems.  But make no mistake, it is indeed the Islanders whose heads should be hanging lowest in shame.

The worst part, though, and the thing that has me brushing up against my threshold of tolerance for the league's failings, is the abject mockery of discipline and sportsmanship administered in the aftermath by Colin Campbell.  I reject all the usual platitudes that excuse Campbell's inconsistency and spinelessness.  Please change the title of his job, because whatever it is he's doing, it sure isn't disciplining.

How, in the holy name of all sportsdom, does Matt Martin earn merely a 4 game suspension?  He assaulted another person without provocation, completely outside the bounds of the sport.  His actions were totally inexcusable and warrant no less than a suspension through the end of the season.  Yeah, you read that right: the entire rest of the season.  And that's being kind.  Honestly the number that popped into my head was '50 games'.  Consider this: what if he was just slightly better at his goonery and connected the sucker punch that he threw?  What if Talbot's career was ended?  What if his ability to function as a normal human being was ruined?

In short, what if Martin is Bertuzzi and Talbot is Moore?  That thought should spook you.  It should make you pucker up and fear for the very existence of the league.  How many of those kinds of reprehensible episodes do you think the league can absorb?  Well, unless you want to find out, you'd better stop tolerating them.

I know what you're thinking though: "Oh, this wasn't as bad as a that.  You're comparing apples to oranges."

Am I?  You tell me what the difference is between the two, that justifies giving Martin an impotent little slap on the wrist.  Especially when Bertuzzi actually got off easy.  Every time he steps on the ice in an NHL game it's a huge neon sign proclaiming the league's disregard for both sportsmanship and the safety of its ONE AND ONLY asset: the players.  Bertuzzi should have never been allowed to earn another dollar doing anything affiliated with the NHL, or frankly with hockey at any level.  Being a professional athlete is a privilege.  Privileges can be lost.  It won't make them destitute.  They'll just have to go do something else for a living, like every other person on the planet.

So a 4 game suspension for Martin is just a joke.  It's absurd.  It's insulting.  But worst of all, it's a crystal clear message of condonation.  There is absolutely no place for what Martin did, and there should be absolutely no tolerance for it.  A 4 game suspension says, "This is marginally unacceptable behavior, please don't do it too often."  The message should have been, "This is totally unacceptable, under every conceivable circumstance, and you've just lost the privilege of participating in the NHL, for a very long time."

And please explain how Haley escapes from his oafish antics untarnished?  What, I guess anyone can just stroll down and fight goalies now, is that it?  Well if I'm a coach I know what I'm doing the next time I play my division rival: exactly what Capuano and Snow did, yank up some no-talent, ham-fisted, throwaway thug from the minors and sic him on the opposing goalie.  Playoffs, here we come!  Sadly, you instead lob a rote 10 game suspension at Godard, ironically the stiffest penalty of the entire affair!  I guess when Campbell can just look up something in the book and say, "Hey, it's not my decision.. it's the rule!" then he finally discovers the guts to act the part of stern guardian to the league's high morals.

I have a 2 year old son who will very soon be starting his (hopefully) life-long love affair with sports.  I'd been imagining him on the ice soon.  But the utterly loathsome behavior that was on display, and the irresponsibly soft reaction from the league, has me seriously questioning whether I want my son to play hockey.  The NHL is steward to the sport's reputation, and that reputation just moved a lot closer to the kind of thing that I would prefer to completely exclude from my life, and that of my family and friends, and any decent human being.

hoss @ 20110201:16:03 (Tue)

This is part 2 of my !epic 3-part series of how to use kdiff3 when something else wants to launch a graphical diff tool.

This part is even more pathetically non-epic than part one because it's basically just a rehash of a previous post on how to use xxdiff with bazaar.

But no matter, it's worth doing just to get the right words into the site's search index.

As demonstrated previously, it's trivially easy to get bazaar to use the graphical diff tool of your choice, assuming the tool has reasonable support for command-line arguments.  I discovered that Meld does not, which is why I'm now using kdiff3.


Anyway, just add the following to your $HOME/.bazaar/bazaar.conf file:

diff = diff --using kdiff3

That fixed diff, and the following fixed merges:

external_merge = kdiff3


hoss @ 20110201:15:13 (Tue)
Using kdiff3 for etc-update

This is the first part of a 3-part series (of configuration trivia), wherein I describe how to use kdiff3 in a situation where you need to automatically invoke a graphical diff tool.

This part deals with gentoo's etc-update tool, which is used to reconcile changes made by portage to various configuration files (typically located in /etc, hence the name).

etc-update defers to /etc/etc-update.conf for some of its behavioral configuration, including the manner in which it invokes a diff tool.

So to use kdiff3, just edit /etc/etc-update.conf to include the following:


diff_command="sudo kdiff3 %file1 %file2"
merge_command="sudo kdiff3 --merge --output %merged %orig %new"

Be sure to also comment out (with a leading '#') any existing line that has one of the keywords listed in the above assignments.

And that's it!

Note that the 'sudo' part is necessary because kdiff3 is subject to some kind of KDE policy that protects against root use of GUI apps.  Or something... I never quite found a straight answer, but I know it won't launch if you're root without using sudo.


hoss @ 20100923:12:13 (Thu)
GOG's Marketing Gamble

Good Ol' Games recently exited their (two year) beta in a very duplicitous manner, by pretending or insinuating that they were shutting down, only to relaunch a few days later with a revamped website.

Opinions of the stunt cover the spectrum from 'marketing genius' to 'f*** off and die'.

Someone started the requisite thread on the GOG forums asking: Did’s PR Stunt Succeed Or Go Too Far?

Copied below is my contribution to that thread.


Yes.  It did both.  It 'succeeded' in the sense that it garnered the attention they were seeking, but it did so at the expense of the very people whose loyalty, enthusiasm, and good ol' fashioned money had allowed the service to even prosper in the first place.

Some are lauding it as a clever 'low budget, high impact' marketing campaign, but I would counter that it was only 'low budget' in terms of immediate capital cost.  What they may have saved, monetarily, was bartered against the collective good will of their existing patrons.  And that's a dangerous trade.

Attention is not the only currency that should be used to measure marketing.  When the true ledger is eventually balanced, some attention-getting schemes just aren't a smart bargain.

I've been a GOG member from almost literally day one, and I'm not at all impressed with this stunt.  In a few short days they burned through a huge amount of the surplus faith and affinity I had towards them.  I hope it was worth it, I really do.

I'm still here, and I'm not going to stop buying games from GOG, and that's another facet of the 'success' of the stunt - it wasn't so heinous that it burned the bridge with me (though I'm sure it did for some).  But going forward, when I buy games from GOG, I'll be doing so not because I genuinely like GOG, the way I did before.  I'll do it because they remain the least evil option in the war of hostility and exploitation being waged against game consumers.  They were always that, and it's the core reason why I rooted for them and will continue to root for them.  But for now, anyway, they've become _just_ that.

The sting of being treated callously, of being staked as collateral against the promise of greater market share, will take a good long while to wear off completely, if it ever does.


GOG is become like the politician that you believed in, but whom you discover has been cheating on his wife.  He may still vote the way you want him to vote, and wave the ideological flags you want waved, but you can't be proud to support him like you once did.  Something was lost.  Trust, perhaps.

And some will surely say (and already have), "pfft... you're blowing this way out of proportion.  This wasn't a big deal.  Get over it."   It wasn't a big deal, true, not in the grand scheme of things.  But it revealed something real that disappoints me nonetheless.  GOG demonstrated its willingness to wager us in a bet for growth and media attention.  That's changed my opinion of them, possibly permanently, and the change saddens me.


[edit: I attached an image from the GOG forums that I felt hilariously summarizes the whole episode.]

Occassionally you'll want to verify that your gigabit network is actually running in gigabit mode.  Or, to futureproof this little post, maybe we're talking about kajigabits.

Anyway, normally there are little mode LEDs on your network hardware that indicate what speed it's operating at.  However, if you aren't in a position to physically see these little lights on the back of your network card or router, or you are but you're too lazy to get off your cushy chair and go look, here are a couple of quick and totally unintuitive ways of examining things using nothing but your trusty shell.

  1. Use mii-tool (as root):
    • mii-tool -v eth0
    • Look at the 'negotiated' value.  It'll indicate what speed the interface is using.  'FD' means 'Full Duplex'.  'HD' means 'Half Duplex'.  For example, '100baseTx-FD' means 100mbit Full Duplex.
  2. Use tcpdump (as root):
    • tcpdump -v -i eth0 -c 1
    • Look at what it says for 'link-type', although I'm not convinced this is an accurate method for speed reporting.  But tcpdump is awesome for other stuff, and maybe I just don't know how to interpret what it's saying.
  3. Use dmesg:
    • dmesg | grep eth0
    • Look for a line similar to one of the following:
      • eth0: link up, 100Mbps, full-duplex
      • e1000e: eth0 NIC Link is Up 100 Mbps Full Duplex
    • It may be that your dmesg buffer doesn't go back far enough to include that.  If so, try one of the other methods.  Or I guess you could cycle the interface down/up, and then peak at dmesg again.
  4. Use ethtool:
    • ethtool eth0
    • Look for the 'Speed:' value.  Lots of other good info is listed as well.  This technique  is the one that produces the most self-explanatory output, but it probably also the least likely to already be available on your system.


Obama's 2011 budget included a revamp of NASA's objectives.  Namely, aborting the Constellation program, and prioritizing core research into scientific and mission-enabling technologies.

Apparently, some (and I stress some, not all) astronauts have gotten their panties in a twist over this.

Here's my response to them:  Get over it.  And get over yourselves.

Armstrong, along with astronauts James Lovell and Eugene Cernan, called the proposal “devastating”...

Yeah, devastating to their egos, maybe.  News flash:  NASA doesn't exist just so we can lob meatsacks through the exosphere.  Manned space travel is sexy, sure, but contrary to popular cultural aggrandizement, it's not an end unto itself.  The mere existence of astronauts, that is, being able to say "humans physically go to space", is not self-justifying.  Sorry, Neil.  Emotional side effects notwithstanding, it accomplishes nothing.  More to the point, manned space travel has proven to be so error-prone and so expensive (and, arguably, so fruitless) that the long-standing single-minded obsession with it has become the Moby Dick of our collective efforts in space.

Pursuing manned space flight comes at such a high cost that it can only be done to the almost complete exclusion of all other space-related endeavors.  And that alone is the reason not to do it.  There are simply too many other legitimately valuable, achievable, cost-effective, and pertinent things we can be doing instead.

The availability of a commercial transport to orbit as envisioned in the President’s proposal cannot be predicted with any certainty, but is likely to take substantially longer and be more expensive than we would hope.

Really?  It'll take longer and cost more than we think?  Guess what, Einsteins, that's precisely why Constellation got the ax, since it was already obviously well on its way to being a classically bloated space program.  That little maxim you just spouted about the unpredictability of developing manned space transport technology, as embodied by its predictable difficulty, is why we need to get OUT from under that burden for awhile, rather than heap more of it onto ourselves.

It appears that we will have wasted our current ten plus billion dollar investment in Constellation and, equally importantly, we will have lost the many years required to recreate the equivalent of what we will have discarded.

Yes, sure, call it 'wasted' if you like.  Even so, I'd rather waste 10 billion than 50 billion.  Stubbornly holding course for its own sake is called throwing good money after bad.  A more formal name for it is 'Loss Aversion', 'Irrational Escalation of Commitment', or the 'Sunk Cost Fallacy'.  Whatever you call it, it's a thoroughly proven way to make a bad situation worse.

For The United States, the leading space faring nation for nearly half a century, to be without carriage to low Earth orbit and with no human exploration capability to go beyond Earth orbit for an indeterminate time into the future, destines our nation to become one of second or even third rate stature.

Oh No!!!   What will the neighbors think?

Surely we don't measure ourselves, nationally, globally, spiritually, or even anthropologically, by the capacity to put a handful of ourselves into the vacuum surrounding our little spinning rock.  Please tell me we don't.

Even worse, still, is the insinuation in their argument that investment in manned space flight is for the purpose of underpining the reputation of the United States as ... what, the Big Man Around Town?  Are we still comparing penis size with the Russians?  I thought we'd mostly matured out of that adolescent puffery.  Guess not.  Apparently we need big rocket ships so that there's no confusion in anyone's mind just who's running the show down here.

That particular concept is what's called "Conspicuous Consumption" in sociology.  And it's basically just the human economic equivalent of biology's ornamental sexual dimorphism.  Are we really nothing more than nature's most obnoxious bowerbird?  (Sadly, evidence convincingly suggests precisely that.)

Without the skill and experience that actual spacecraft operation provides, the USA is far too likely to be on a long downhill slide to mediocrity. America must decide if it wishes to remain a leader in space.

I'd much prefer that we choose to be a leader ON the Earth.  Again, this 'mediocrity' scare tactic is only according to the people-in -space yardstick.  And frankly I think there are far more valuable metrics against which we should judge ourselves.  The bitter truth is that by those measurements we're already mediocre.  Our education levels continue to embarassingly backpedal.  Our physical health is among the lowest of any industrialized nation.  I shouldn't need to even point out the dire state of our financial health.  We have a well-deserved reputation as the most environmentally hypocritical country on the planet, as we point fingers and make haughty speeches on one hand, while clinging tooth and nail to our totally unsustainable and hyper-consumptive lifestyle (which, by the way, we're also busily trying to shove down the throat of every as-yet-unsubjugated culture left on the Earth).

So, no, I don't think we need to be wasting our time, energy, resources, and opportunities irrationally prolonging our long and glorious tradition as the planet's reigning Buck Rogers.

hoss @ 20100305:11:21 (Fri)

Activision, through their Sheriff of Nottingham - Infinity Ward, are stripping long-standing consumer benefits with the PC version of Modern Warfare 2.  Purchasing the game is nothing less than a declaration of your willingness to loss those benefits, and you're communicating that fact not just to Activision, but to all of the publishers who are watching closely to see just how little they can offer gamers in exchange for their money.  And don't pretend for a moment that this is just about PC gaming.  The trend in all of gaming is away from game ownership and towards gaming as a rented service.

The publishers' utopian wetdream is a market where the gamer owns nothing.  Instead, you pay explicitly for every hour of gameplay you experience, and even then are only allowed to play within the strict and permanent boundaries erected by the publisher.  And when the publisher decides you should stop playing an old game because it is no longer profitable enough, they terminate it and offer you the 'choice' of renting a new game, or nothing at all.

I've read a lot of commentary that is dismissive if not outright disparaging of the passionate furor exhibited over the MW2 issue, saying things like, "what's the problem, just let the market decide."  Yes, absolutely, the market should decide, but don't "let" it happen.  Realize that you, as a game-purchasing consumer, *ARE* the market.  The market is nothing but the cumulative purchasing decisions of all consumers.  The only power you have as a consumer is to accept or reject the exchange offered to you.  If you choose to purchase MW2, you are personally endorsing the continued erosion of value that gamers receive in their exchange with publishers.

A lot of people think that they can complain about issues like this, but then buy the product anyway, and somehow that influences publishers to react to their complaints.

The only thing that influences them is WHETHER OR NOT YOU BUY THE GAME!

Bitching about something and buying the game anyway is equivalent to buying the game and saying nothing -- it's equivalent even to buying the game and saying "Great job guys, keep up the good work and be sure to strip away more of my consumer benefits next time."   Because the only thing they hear is the sound of you purchasing the game - registering yet another gamer tacitly accepting reduced benefits, lowering the standard by which all publishers measure the market for all games.

There are more games than I could play in a lifetime, and no single one of them is great enough that it's worth trading away the freedoms that I want to enjoy as a gamer.  The only way I can compel publishers to respect and uphold those freedoms is by using my own incremental market vote to communicate the value of those freedoms.  And to hope that others do the same in sufficient volume to convince publishers in no uncertain terms that it's more profitable to provide these consumer freedoms than it is to take them away.

So, no, I won't be buying Modern Warfare 2.  Not on the PC, not on the console, not at all.  Just like I didn't buy Spore or Mass Effect or a multitude of other games that were wolves in sheep's clothing, threatening my freedoms as a gaming consumer.  And no, I didn't just pirate them either, so I could have my cake and eat it too.  Like I said, there are more games than I could ever play, and I don't bat an eye when I choose to skip any one of them as a statement of principle.  Fun is fun and there is no sole dispenser of it, nor is there any shortage.  I don't need MW2.  I'm not a heroine addict, unable to resist debasing myself just for the next high.  Or to put it another way, if I am a heroine addict, there are plenty of other dealers offering perfectly good heroine at reasonable prices, that won't make me fellate them in the alley and shoot up right there using their own dirty needle that they charge extra for.

Fixing Plone's default image type mapping

I found out the hard way that by default, plone maps all image/* mimetypes to the ATImage content type.  That's bad.  Why?  Because plone's UI for ATImage instances is heavily reliant upon the presumption that the object can be shown *AS* an image.  While browsing.  With a browser.  And that's just fundamentally untrue for the vast majority of image/* mimetypes.  From relatively commonly-encountered stuff like image/x-psd, image/x-xcf, image/x-dib, to crazy things like image/x-niff and image/fax-g3, they all end up as ATImage objects in plone, despite the fact that none of them are directly renderable as an image by the browser.  For all intents and purposes, they are nothing more than files, and there's a perfectly good content type for that, with a perfectly appropriate UI: ATFile.  There are really only a handful of image formats that are conducive to rendering inline in http content, and even that subset is constrained within plone to the few that can be processed by PIL (in order to automatically generate multiple versions of the image at various resolutions).

Having all image/* files stored as an ATImage is, in fact, not the end of the world.  Your plone site won't blow up or anything.  But, as I said, the UI is just wrong for them.  Browsing to them gets you a page template that's expecting an <img> front and center, and offers no direct link to download the raw file.  So to actually download this 'image' file that you can't see, you have to know a bit of plone magic and manually craft a URL that coaxes the file out of plone.  Hardly a desirable user experience.

So, my solution to this problem was to just tweak the mimetype-to-content-type mapping in plone so that only types that were legitimately presentable as images would be stored as ATImages, and all of the rest would default to ATFile.

This was easily accomplished by visiting the content_type_registry in the ZMI at the root of plone and doing the following:

  • Change the existing major_minor entry for image/* to use ATFile.
  • Add a new extension entry directly above the original image/* and specify the few file extentions that should be ATImages: jpg jpeg png gif.

See the attached image for what it should look like when you're done.

After this change, I get exactly the behavior that makes sense, at least to me.  Formats that can be presented and managed as a viewable image to a user browsing the site are stored as ATImage objects, and all other image formats are stored as ATFile objects.

I brought this topic to the plone user forum and mostly just got harassed by the forum's resident bouncer, who I still contend wasn't paying enough attention to grok the issue.  Oh well.  What I did makes perfect sense for an upstream default fix, and if that never happens, I'll just re-apply it for each version of plone I use that exhibits the original policy.

Apparently Gentoo recently enabled a per-package license approval feature for portage.  As with most things Gentoo, the feature was discovered unceremoniously when I tried to do 'emerge -uDavt world' and it complained loudly in new and confusing ways.  But a quick investigation shed light on the issue, and I set about making the small changes necessary to become compliant.

Basically, Gentoo now maintains a (comprehensive) list of licenses with which any given portage package might be associated.  And portage treats the licenses as opt-in, meaning that it doesn't presume that you're willing to accept them.  Also, just like use flags, there is an emerge variable (ACCEPT_LICENSE) that can be set for all packages in make.conf.  It defaults to '* -@EULA', which means all licenses are accepted automatically except any within the 'EULA' group.  A full list of licenses and groups is available in /usr/portage/profiles/license_groups.  Overrides to this variable can be made on a per-package basis using a dedicated file: /etc/portage/package.license.

I elected to leave ACCEPT_LICENSE at its default, and use the package.license file to individually manage non-free licenses.  Thus I needed to create a package.license file with the following contents:

dev-java/sun-jdk dlj-1.1
app-emulation/virtualbox-additions PUEL
net-im/skype skype-eula

Obviously, those were only necessary because I have (or want to have) those packages installed.  Your package.license file might contain completely different entries.  With those exceptions in place, emerge went on its merry way and so did I.  Note that this process doesn't alleviate the need to say 'yes' to certain package licensing verbage at emerge-time. 


Unrelatedly, as of 20100131, the gentoo overlords have removed, saying thus:

Eselect-opengl package now strips the file. This file was broken and
thus we proceeded with its removal. It brings slight inconvenience on you fellow
users. After emerging the new version =app-admin/eselect-opengl-1.1.1-r2 please
emerge one more package dev-util/lafilefixer and use it for fixing all various
compilation issues by running as root:
# lafilefixer --justfixit
Note that not-running this command will bring you compilation issues so you
should really pay attention to this message and act upon it.

Oh, act upon it I did.  By taking precisely the suggested actions.

hoss @ 20091003:12:50 (Sat)

I guess once the proverbial writing on the wall is large enough, even the zealots find it hard to continue pretending they can't see it.

What am I talking about?  The realization that Apple, like Microsoft, Intel, Dell, and every other behemoth company (tech or otherwise), eventually bends to the crushing demand for year-over-year stock growth.  And when you're so big you create your own weather, the only way to manifest continued growth is to become a psychopathic, malignant entity hell-bent on squeezing the market for that extra shred of revenue even if it means the ruin of civilization.  Morphing from plucky, idealistic, everyman's company, fighting the good fight, to card-carrying agent of evil is not a transition that's instantaneous, but neither is it subtle.  If you're not so busy kneeling at the obelisk, head bobbing back and forth, watering eyes squeezed shut, while you try to suppress the gag reflex, you generally can see your beloved company changing quite apparently.  

With increasing frequency, Apple is demonstating just how far down the slippery slope they've slide, and that they're accelerating rather than arresting their descent.

And I don't blame them, not specifically anyway.  Or, rather, I'm not in the least bit surprised.  They're playing the corporate market-share game, and it's a ruthless, bloody, lawless-behind-closed-doors, game that is unfortunately the only game in town.  Don't hate the playa, as they say.  Well, I hate both the players and the game.  Our economic systems, global and national, reward and encourage evil.  Expecting corporations to not be evil under those circumstances is pure folly.  And expecting the systems to change when they're controlled directly by the entities benefitting from them is equal folly.

For those who haven't been paying attention, here's a decent summary of the stuff Apple's been doing: Jason Calacanis makes the "Case Against Apple in Five Parts".

And of course the Google Voice App rejection fiasco is proving to be very effective at snapping many out of their hypnotic coma of Apple idolatry.  Even so, some want to argue that it was just "out of character" for Apple, whereas I say that it was a textbook bellwether indicator, and there's every reason to expect more of the same.

One bit of irony in this that isn't lost on me is that the other half of the controversy (Google) is itself an entity tetering on the edge of morality.  Which direction it will ultimately sway is not a mystery.

[UPDATE] Still not sure?  Still hoping Apple's culture-shaping brand power hasn't taken root as a festering infection within its proverbial core?   Well, apparently Apple is convinced it owns the concept of an apple, as in the fruit.

hoss @ 20090811:19:27 (Tue)

I still get Gamasutra's Game Developer Magazine, though it's just a 'webzine' now unless you pay for it, which I do not.  Anyway, the fact that I'm still subscribed means they think I'm a game developer, or at least they pretend to not notice and/or care that I'm not, and as such they include me on their regular surveys (salary, publisher reputation, etc..).  I just recently filled out the publisher survey, and since I figure my input to them will dribble into a black hole, I wanted to capture my signature industry vitriol here for posterity's sake.

After having the chance to numerically rate all of my most loathed publishers as low as possible, I was then given the opportunity to say a few words.  So I did.


Recent behavior regarding perceived rights to broadcasting of starcraft games is indefensible and reprehensible.  Also, the imminent monopolization of all games to is a blatant erosion of consumer rights.


They're not in the games business, they're in the extortion business.  They treat their own paying customers as the enemy.  EA is the poster child for what's wrong with mainstream game development and publishing.


Do they do anything new anymore, or are they just busy milking the back catalog?


Hurry up and die.  Microsoft is a cancer on gaming.  XBox Live is like eugenics for gamers, breeding out all the wholesome qualities of gamers and leaving only purely hedonistic selfish sociopaths.


Consciously and systematically alienating real gamers in the relentless pursuit of the profitable calculus effect of 'casual' crap.


Is it any wonder nobody ever sends me Christmas cards?


hoss @ 20090723:17:28 (Thu)

Finally fed up with the awful RAM consumption of the firefox 3.0.* branch, I decided to roll up my sleeves and convert to the Amazing New Wonderfabutastical 3.5 branch.

But it's not marked stable yet on gentoo, so I had to get out the ~x86 divining rod and navigate through the minefield of getting a major package and all its dependencies unmasked.

Here, for your viewing pleasure, is the result of that exercise.


media-video/vlc -nsplugin
app-office/openoffice -nsplugin


www-client/mozilla-firefox ~x86
x11-libs/cairo ~x86
net-libs/xulrunner ~x86
dev-libs/nspr ~x86
dev-libs/nss ~x86



Given all of that, a mere 'emerge -uDavt mozilla-firefox' should dutifully install the new browsing nirvana on your system.  At least, it did for me.

And, at least thus far, I'm thrilled.  Firefox runs leaner and meaner and nearly all of my plugins remained usable.

This is all transient minutia, since I imagine it'll only be a few more months perhaps before all of this percolates into the stable tree.

hoss @ 20090723:16:18 (Thu)

I'm acclimating myself to bazaar, in anticipation of migrating all of my subversion repositories to it in the near future.  One of the first things I desperately needed to do was get bazaar to use xxdiff for diff'ing and merging, since I xxdiff so much.  Turns out it was trivially easy -- much easier than the hoops I had to jump though to get svn to use xxdiff.

I just added the following to my $HOME/.bazaar/bazaar.conf file:

diff = diff --using xxdiff

That fixed diff, and the following fixed merges:

external_merge = xxdiff

Aliasing is documented in the bazaar user's guide, but the external_merge option wasn't discovered until I did some googling.  It looks like it started out as a plugin, but is now included natively in bazaar.

hoss @ 20090628:01:26 (Sun)
Hail to the king, baby.

3D Realms closed.

Zero Punctuation ripped on the whole sordid story.

Honestly... I guess I don't care.  My prevailing emotion is a sense of tragedy over the cumulative amount of time, energy, resources, and most of all opportunity wasted over the whole affair.  Sure, it's a running gag to compare all of the things that have happened in the same time that DNF hasn't.  But that just highlights the gross mismanagement involved.  What saddens me is what could have happened.  I have no doubt that very smart, talented, capable, and creative people were involved in the development of DNF at every step.  Not necessarily all of the people, but I imagine the vast majority.  And what we, as gamers, have to show for their collective efforts is precisely zilch.  What they toiled for didn't need to be a Duke game, I honestly didn't care, but it should've been something that saw the light of day, enriched the gaming landscape, and validated their devotion and hard work.

I wanted to let the dust mostly settle before registering my feelings on the matter, as I was one of those that initially felt that things looked and smelled a lot like a very coy marketing stunt - the perfect setup for what would've been the announcement of all gaming announcements.

Instead, it was the just the obituary it claimed to be, and the only spectacle left is the inevitable lawsuits as the sharks circle in to fight over the carcass.

hoss @ 20090401:21:48 (Wed)

Here's another look behind the curtain of independent game development, this one courtesy of Vic Davis of Cryptic Comet, recounting the tale of Armageddon Empires.  This is both similar and categorically different than Jeff Vogel's success story.  Vic basically caught lightning in a bottle, experiencing an exponential upsurge of interest in his little nichey strategy game due to what amounted to a perfect storm of new games journalism.  But it wasn't entirely, or even mostly, luck (though getting the Penny Arcade firehose pointed at you doesn't hurt).   He took a decidedly non-mainstream approach to supporting his game:

  • Keep your mouth shut until you've got something people can play and buy.  Allowing a gamer to go instantly from 'never heard of it' to 'oh - it's done and I can buy it for $10' has a tremendously powerful effect.  Hype has to be sustained, and that's why mainstream marketing budgets are so huge, they have to finance the hype crescendo.  Curiousity is an itch and being able to scratch it immediately can turn casual interest into a sale.
  • Never stop updating.  The product launch is just that - the 'launch' of an extended voyage.  It's not lighting the fuse on a sales bomb, seeing how much you can get in the first month after release, after which both you and the customers flee from ground zero.
  • Make customer support personal and visible -- do it yourself on community forums.  This will directly stimulate peer-to-peer word-of-mouth sales recommendations (what the article calls the 'infection vector').  An interesting point was that Vic didn't host his own forums (on his company's website), opting instead to defer the game's individual community germination to existing broader community sites.  This put both his personal support of the game and the players' buzz about it in a more 'infectious' environment - he wasn't bootstrapping a new community out in some uncharted corner of the internet.  He set up camp smack in the middle of the very people for whom he was designing his game.  And as mentioned in the article, he recognized the importance of being genuine and not acting like a viral marketing person masquerading as a native.  He was honest and helpful and it paid off.

The end result was that he turned an unflinchingly hardcore, niche, turn-based strategy game (made with Macromedia Director of all things) into a smashing indie success.  And he's off and running on his next title.  Godspeed!

hoss @ 20090329:20:09 (Sun)

Jeff Vogel of Spiderweb Software has been kind enough (and narcissistic enough) to undertake a bit of blogging on the topic of independent game development.

Which is cool.  Don't take my narcissistic comment the wrong way - everyone who blogs is narcissistic.  It's cool because the more attention indie game development can get, particularly successful indie game development, the better.  And I don't necessarily think there are really any trade secrets worth hoarding here, so why can't successful indie developers pull aside the curtain a bit more?  Indie game development is hard work, besodden with failure and ruin, and almost utterly devoid of accolades.   And in that sense, it's not really any different than mainstream game development.  It's also risky business, but perhaps one 'secret' is that it might actually be less risky than mainstream game development.

Jeff's been making a steady living doing games for over 15 years.  That's a pretty stout achievement, particularly given the nature of the games he does.  He makes butt-ugly old-school RPGs only die-hards will love.  But the 'trick' is that there are evidently enough die-hards to make the exercise profitable.  Predictably and consistently profitable.  Having read the two recent posts Jeff made as 'tell-all' confessionals of the financial numbers behind one of his recent games, I wanted to distill some of the key disclosures that were made.  Again - these aren't trade secrets.  It's common sense stuff for anyone who's not totally drunk on EA and Microsoft's relentless propaganda.

  • The Long Tail is a real thing and it works.  If you're not beholden to pay back someone else's huge initial capital investment, you can ride the tail to profitability.  For the purposes of this discussion, the long tail is the steady, word-of-mouth driven sales sustained well after initial release, in contrast to the 'blockbuster opening weekend' effect that mainstream games tend to rely on to make it into the black, financially.  I've referred to this as the 'spike economics' of the game industry, and mainstream developers and publishers alike live and die by it.  Indies can't, because it requires huge (i.e. expensive) marketing campaigns, and it needs a steady diet of game releases allowing for the occassional blockbuster to pay for both itself and all the non blockbusters that 'missed'.  Note that this model may ultimately prove to be the undoing of mainstream game development as well, but that's the a story for another day.
  • Time is the most valuable thing you have.
  • Making multi-platform games is like printing free money.  You're already doing the design and implementation work.  If you take the right approach from the beginning, it's only a marginal amount of 'extra' work to get one implementation to work on multiple platforms and you've just hugely broadened the size of your potential customer base.  Which is critically important when your customer base is niche to begin with.  Which brings us to...
  • Serve an underserved niche.  Mainstream game development is like a whale - it has to eat an ungodly number consumers just to stay alive.  For that reason, many particular kinds of gameplay just get shoved aside categorically by the big publishers because the games simply don't exhibit the scale of consumer popularity necessary to offset the increasingly bloated development budgets.  And so the world is rife with cliques of gamers whose true desires go unmet by the industry at large.  And it is precisely these gamers that will forgive your pitiful little game its glaring deficiencies compared to a AAA mainstream game, if only your game scratches their specific itch when none others will.  As Jeff put it: "You have to write something that they can't get easier and cheaper elsewhere."   Because if they can they will.  You may eventually nurture some consumer loyalty, but you'll have none initially, and never enough to offset the fundamental disadvantages you'll face as an independent.  Like any successful organism, you have to discover an unclaimed part of the ecosystem.
  • "Big budget games will ALWAYS look better."  And "graphics are expensive. Really expensive."  Moral of that story - don't even try to match mainstream graphics quality.  You'll lose, and you'll just go broke/crazy trying.  Your time and budget (which is mostly time) are better spent pursuing the handful of unique things that are going to attract that underserved niche.  Good graphics aren't unique, and definitely aren't underserved.  Yes, a certain percentage of people will ceaselessly hate on your game for how crappy it looks.  Screw 'em.  They're not buying your game anyway.