<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Hysterical Raisins</title><link>http://www.hystericalraisins.net/</link><description>It's For Hysterical Raisins</description><language>en-us</language><item><title>Why Alan Moore is right, and why he's wrong</title><link>http://www.hystericalraisins.net/entry/why-alan-moore-is-right-and-why-hes-wrong/</link><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Excerpt from &lt;a class="reference external" href="http://www.wired.com/entertainment/hollywood/magazine/17-03/ff_moore_qa"&gt;Alan Moore's interview at Wired&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One thing is that with the comics medium, it has been proven—I
believe by Pentagon tests in the late '80s—that comics are
actually the best medium for imparting information to somebody in
a form that they will retain and remember. That's not just me
saying that, that's the Pentagon. I personally feel—and this is
just pseudo-scientific hippie bullshit—I feel this might be
because the unit of currency of what used to be called our left
brain is the word. Our left brain is what goes about speech and
rationality. The unit of currency for our right brain, conversely,
would be the image, because the right brain is preverbal.&lt;/p&gt;
&lt;p&gt;So perhaps it is because of the combination of words and images in
a readable form that comics does have this unique power. Now, of
course, movies are a combination of words and images, but they
have a completely different structure and completely different way
of working. With a movie you are being dragged through the
scenario at a relentless 24 frames a second. With a comic book you
can dart your eyes back to a previous panel, or you can flip back
a couple of pages to check whether there is some reference in the
dialog to a scene that happened earlier.&lt;/p&gt;
&lt;p&gt;You can also spend as much time as you want absorbing every
image. This is especially true of something like Watchmen, where I
was trying to take advantage of Dave Gibbons' brilliant capacity
as a former surveyor for including incredible amounts of detail in
every tiny panel, so we could choreograph every little thing. The
little symbols and signs appearing in the background, every little
touch could be choreographed to the last detail, and we knew that
the audience—because they'd be reading at their own pace—would be
able to study each panel and to take in these almost subliminal
details. Even the best director in the world, even a person as
talented as Terry Gilliam, could not possibly get that amount of
information into a few frames of a movie. Even if they did, it
would have zipped past far too quickly. Because the audience at
the movie theater is not in control of the experience in the same
way somebody reading is.&lt;/p&gt;
&lt;p&gt;One of my big objections to film as a medium is that it's much too
immersive, and I think that it turns us into a population of lazy
and unimaginative drones. The absurd lengths that modern cinema
and its CGI capabilities will go in order to save the audience the
bother of imagining anything themselves is probably having a
crippling effect on the mass imagination. You don't have to do
anything. With a comic, you're having to do quite a lot. Even
though you've got pictures there for you, you're having to fill in
all the gaps between the panels, you're having to imagine
characters voices. You're having to do quite a lot of work. Not
quite as much work as with a straight unillustrated book, but
you're still going to do quite a lot of work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And I have to agree.  Comics are comics; you read it at your own pace,
you analyse the details like it held the secrets of the universe, you
enjoy the little hidden things both in the art and story, and you fill
in the gaps.  That's what makes it great, and that's why, no matter
how well the movie is done, the comic will always be better.&lt;/p&gt;
&lt;p&gt;(Well.  In normal circumstances at least.  I've seen mediocre books or
short stories become great movies, but that's a separate story
altogether, and to date I haven't seen it done with comics yet.)&lt;/p&gt;
&lt;p&gt;On the other hand, I think dismissing the flick like he does is a waste
of good entertainment as well.  Time to quote from &lt;a class="reference external" href="http://www.wired.com/entertainment/hollywood/magazine/17-03/ff_gibbons_qa"&gt;Dave Gibbons'
interview&lt;/a&gt; in the same issue:&lt;/p&gt;
&lt;blockquote&gt;
The most bizarre thing was to actually be inside the Owlship, you
know? As I kind of implied in an earlier answer I've always loved
drawings and measured plans of things. I went to a lot of trouble
to make the Owlship convincing and make room for everything that
we saw inside it. So, to actually be inside this thing—the thing
that had been inside my head, I was now inside that. It felt
exactly like the space that I'd felt when I'd done the drawings. I
think that was really the strangest thing, to sit in the command
chair and play with the joystick and press the buttons and watch
all the lights flash on.&lt;/blockquote&gt;
&lt;p&gt;And that's where the magic really is.  That's why those geeky movies
are so great.  It's like, well, going to a theme park, except usually
with higher quality results.  These things have lived in our
imaginations for years, and now we get to see them there, big and
real-looking.  It's, well, &lt;em&gt;fun&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Another important thing missed there is that movies can be a social
experience.  Comics, by the very merit of being read at your own pace,
are solitary; you can get together with people to read comics, but you
don't actually &lt;em&gt;read together&lt;/em&gt; — well, you can, but it kind of ruins
the experience.  That's what is (well, used to be) so great about
Heroes; it's kind of like reading a comic book, only I do it with my
girlfriend, and we react together.&lt;/p&gt;
&lt;p&gt;Short version?  Absolutely do go watch the Watchmen, but not if you
haven't read the comic yet.  :-)&lt;/p&gt;
&lt;/div&gt;</description><author>lalo</author><pubDate>Sat, 28 Feb 2009 05:23:00 -0300</pubDate><guid>http://www.hystericalraisins.net/entry/why-alan-moore-is-right-and-why-hes-wrong/</guid><category>opinion</category><category>reading</category></item><item><title>How to use bzr-svn with SourceForge</title><link>http://www.hystericalraisins.net/entry/how-to-use-bzr-svn-with-sourceforge/</link><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Some projects I work with haven't yet abandoned Subversion.  I try to tolerate it as much as I can, but sometimes (if I need local commits, or if there is heavy merging involved) it just won't do.  Thankfully, I have &lt;a class="reference external" href="http://bazaar-vcs.org/BzrForeignBranches/Subversion"&gt;bzr-svn&lt;/a&gt; to make my life less miserable.&lt;/p&gt;
&lt;p&gt;The thing is, though; how to do the initial branching (“checkout” for those still stuck in svn terminology)?  Because bzr-svn tries too hard at being atomic, and we all know SourceForge's Subversion server is made of purest fail.  If the server decides to disconnect you in the middle of the operation, you lose all the (potentially hours of) work until that point.&lt;/p&gt;
&lt;p&gt;After much frustration, I figured out the way to go with that.&lt;/p&gt;
&lt;p&gt;First, branch from revision 0: &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;bzr&lt;/span&gt; &lt;span class="pre"&gt;branch&lt;/span&gt; &lt;span class="pre"&gt;-r&lt;/span&gt; &lt;span class="pre"&gt;0&lt;/span&gt; &lt;span class="pre"&gt;https://crossfire.svn.sourceforge.net/svnroot/crossfire/server/trunk&lt;/span&gt; &lt;span class="pre"&gt;server-svn-trunk&lt;/span&gt;&lt;/tt&gt;.  Now you have a local branch that is already usable (well, usable as a branch, there will obviously be nothing in the working tree).  Here lies the greatest trick, because while getting revision 0 doesn't actually pull any revisions, it makes bzr-svn do most of its hard mapping work.&lt;/p&gt;
&lt;p&gt;Then get inside the branch, and pull the revisions in batches of (in my experience) no more than 500: &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;bzr&lt;/span&gt; &lt;span class="pre"&gt;pull&lt;/span&gt; &lt;span class="pre"&gt;-r&lt;/span&gt; &lt;span class="pre"&gt;500&lt;/span&gt; &lt;span class="pre"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="pre"&gt;bzr&lt;/span&gt; &lt;span class="pre"&gt;pull&lt;/span&gt; &lt;span class="pre"&gt;-r&lt;/span&gt; &lt;span class="pre"&gt;1000&lt;/span&gt; &lt;span class="pre"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="pre"&gt;bzr&lt;/span&gt; &lt;span class="pre"&gt;pull&lt;/span&gt; &lt;span class="pre"&gt;-r&lt;/span&gt; &lt;span class="pre"&gt;1500&lt;/span&gt;&lt;/tt&gt; etc.  If something fails, you don't have much left to recover from.&lt;/p&gt;
&lt;p&gt;You may be asking, if it's that painful, why do I bother?  Simple: because it's only painful in the initial branching.  After it's all up and running, it will be a lot less messy than dealing with svn, especially if I have non-trivial merging to perform.  (Which, in this case, I do.)&lt;/p&gt;
&lt;/div&gt;</description><author>lalo</author><pubDate>Tue, 17 Feb 2009 17:58:00 -0300</pubDate><guid>http://www.hystericalraisins.net/entry/how-to-use-bzr-svn-with-sourceforge/</guid><category>bzr</category><category>hacking</category><category>revision-control</category></item><item><title>The Muse: Bipolar disorder type 2?</title><link>http://www.hystericalraisins.net/entry/the-muse-bipolar-disorder-type-2/</link><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Here's my latest archeo-neurological or archeo-psychiatric theory: “muse” is really an old term for bipolar disorder type 2.&lt;/p&gt;
&lt;p&gt;It is my impression that old artists would sit around (or walk around) for days, weeks, doing nothing remarkable, or sometimes doing the hard, mechanical work of polishing up their creations.  They would wonder where their “muses” are, why their genius is dormant.&lt;/p&gt;
&lt;p&gt;And then one day, without warning, they feel that creativity, that exhilaration, that burst of awesome ideas, and a touch of insanity, that we've come to call genius; and they would attribute its less-than-constant presence to an invisible entity, the “muse”.&lt;/p&gt;
&lt;p&gt;I believe, in our age, we call it hypomania, instead.  A symptom of bipolar disorder type 2, a very common affliction that is frequently found in creative people.  Paraphrasing Wikipedia, it's unknown whether creative types are more prone to be bipolar, or bipolars are more prone to be creative, or both are caused by a third, unidentified factor.  What we do know is that the overlap is too great to be a coincidence.&lt;/p&gt;
&lt;p&gt;Why is this interesting?  Well, bipolar 2/creative people also tend to be romantics.  So if you don't mind, I think I'll start referring to my hypomania as a muse, thankyouverymuch.  It just sounds so much more desirable that way.&lt;/p&gt;
&lt;/div&gt;</description><author>lalo</author><pubDate>Fri, 13 Feb 2009 01:15:00 -0200</pubDate><guid>http://www.hystericalraisins.net/entry/the-muse-bipolar-disorder-type-2/</guid><category>opinion</category></item><item><title>A reflection on game styles in CRPGs</title><link>http://www.hystericalraisins.net/entry/a-reflection-on-game-styles-in-crpgs/</link><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;This is an attempt at a taxonomy of style choices I've observed in CRPGs (I still &lt;em&gt;refuse&lt;/em&gt; to call
the game genre “RPG”; a game is not an RPG unless it in any way involves playing a role).  This is
based on “old-school” games I've been playing most of my life, on “massively social” games that
have been popping up recently (and a nod to those that aren't CRPGs as well), and on second-hand
accounts of MMORPGs, which I personally haven't played enough to form opinions on.&lt;/p&gt;
&lt;p&gt;Special attention is given to how these choices affect the design of &lt;a class="reference external" href="http://crossfire.real-time.com/"&gt;Crossfire&lt;/a&gt; 2.0, and other
future projects I have planned.&lt;/p&gt;
&lt;p&gt;If you first need an introduction, refresher, or fact-checker about the “scene”, I'll make a
somewhat heterodox recommendation: Sluggy Freelance's &lt;a class="reference external" href="http://www.sluggy.com/daily.php?date=080802&amp;amp;mode=weekly"&gt;Years of Yarncraft&lt;/a&gt; storyline is an
in-depth, insightful, and accurate, if not serious, look on the whole thing.  It doesn't cover the
“massively social” phenomenon, but I hope I will do that in the article.&lt;/p&gt;
&lt;div class="section" id="player-styles"&gt;
&lt;h1&gt;Player styles&lt;/h1&gt;
&lt;p&gt;I'll start with player and playing styles, because I believe understanding how people play a game
and how/why they enjoy it is necessary before you can even discuss the rest.&lt;/p&gt;
&lt;p&gt;Bear in mind, like most taxonomies when applied to people, most of my classifications below are
talking about &lt;em&gt;primary&lt;/em&gt; traits; most people will be a combination of different types, either by
combination, or over time (like, on different days you may be an explorer or a role-player).&lt;/p&gt;
&lt;div class="section" id="primary-activity-interest"&gt;
&lt;h2&gt;Primary activity interest&lt;/h2&gt;
&lt;p&gt;A very, very long time ago, people who played actual RPGs (nowadays relegated to being called
“tabletop RPGs”, sigh) first classified players in two basic camps: the hack-and-slash camp, and
the roleplay camp.&lt;/p&gt;
&lt;p&gt;Over the years, and as we got acquainted with CRPGs and adventures and computer strategy games,
this was refined, expanded upon, simplified again, and distilled.  Today, while there are many ways
to make this distinction, which are certainly valid in their own ways, I believe a simple split in
four groups is the most useful, in terms of understanding and designing games.&lt;/p&gt;
&lt;p&gt;So I call players either: gamer, hack-and-slasher (H&amp;amp;Ser), role-player (RPer), or explorer.&lt;/p&gt;
&lt;p&gt;Hack-and-slashers are in it to fight.  Nowadays, that doesn't necessarily mean actual in-game
fights; rather, H&amp;amp;Sers like to &lt;em&gt;win&lt;/em&gt;.  They get fun from the game primarily by enjoying the rush of
victory and superiority.  In a classic CRPG, the easiest and most rewarding way to do that is by
combat.&lt;/p&gt;
&lt;p&gt;The key aspect to please H&amp;amp;Sers is &lt;strong&gt;challenge/reward&lt;/strong&gt;: it must be relatively easy to find
something that challenges them, the challenge can't be too easy, it can't be impossible, and the
reward after winning must be proportional and appropriate, in order to trigger the reward pleasure
centres.&lt;/p&gt;
&lt;p&gt;You can alienate H&amp;amp;Sers with &lt;strong&gt;limits&lt;/strong&gt;.  If, for example, they can only run so many fights in a
day, your H&amp;amp;Sers will probably just create second/third/fourth characters, or abandon the game
after a short time.  If they defeat everything you throw at them and then there's nothing more to
fight and they need to wait a day, or three, or a week before there's more, they will probably not
log in at all during this period, and there's a chance they will have discovered something else in
the interval, which means you lost the player.&lt;/p&gt;
&lt;p&gt;Role-players are run by imagination.  They want to “be” someone else and do things they wouldn't do
in real life.  They really care about the character.  They also form a mental opinion of the
character's personality and preferences, and try to make choices according to that.&lt;/p&gt;
&lt;p&gt;The key aspect to please RPers is &lt;strong&gt;believability&lt;/strong&gt;: they must be able to suspend their disbelief
when they start playing, and stay in their imaginary world until they decide to leave.  Anything in
the game that pulls them back to the real world is a disruption to that “flow”.  Believability is
&lt;em&gt;not&lt;/em&gt; the same thing as realism; realism is just one of the ways of doing it, but it would be
boring if all games were realistic; many (most?) RPers go to the games precisely in search of some
“believable” fantasy.  My personal “three pillars of believability” are internal consistency,
depth, and detail; I'll expand on another post if there is interest, but I think it's pretty
self-explanatory as it is.&lt;/p&gt;
&lt;p&gt;You can alienate RPers (other than the lack of the above) with simple &lt;strong&gt;discouragement&lt;/strong&gt;.  RPers
are a relative minority, and many other players think they are a bit weird.  Every time you remove
a feature that benefits RPers, or add one that hinders them, their interest will wane.  If players
are allowed to openly discriminate against them, they will leave.  A good strategy some games adopt
is to offer separate, RP-focused servers where RP is mandatory.&lt;/p&gt;
&lt;p&gt;Gamers see the whole thing as a game.  Which, technically, it is ;-) A gamer enjoys looking for
edges and tricks to optimise the character, the overall strategy, battle tactics, economics,
party/guild workings, everything.&lt;/p&gt;
&lt;p&gt;The key aspect to please gamers is &lt;strong&gt;strategy&lt;/strong&gt;: there must be cool, useful, and difficult to find
tricks.  There must be a wide range of possible strategies.  But to avoid alienating the other
players, it must be possible to play the game without them.  It's also a good idea to “shake things
up” occasionally; change the rules so that some strategies get nerfed, others spring up, and the
gamers have to look for the new ones.  They'll complain, but it won't be sincere; while they do
have an attachment to their painstakingly-develop tricks, they have more pleasure in finding new
ones than using what they have.&lt;/p&gt;
&lt;p&gt;You can alienate gamers with &lt;strong&gt;ephemeral rewards&lt;/strong&gt;.  For example: say you offer a way to greatly
improve weapons.  Say it's either hard to do, or expensive; and say it's relatively hard to find.
That's the kind of thing gamers love.  But then, after a lot of effort to improve his sabre, he
discovers that your game mechanics require changing weapons every few days.  So now, all that
effort is wasted.&lt;/p&gt;
&lt;p&gt;Explorers want to see your game.  They want to see everything, try everything the game has to
offer.  There are subgroups, of course; some want to see the whole world, some want to play every
single last quest, some “collect” items, some want to understand the underlying story, some want to
play many times with every possible class (or profession or whatever the equivalent).&lt;/p&gt;
&lt;p&gt;The key aspect to please explorers is &lt;strong&gt;rich content&lt;/strong&gt;: this one is a no-brainer :-) the more there
is to see, the more they'll like it.  But it has to be interesting; if every town looks the same,
they'll stop by the 3rd or 4th.&lt;/p&gt;
&lt;p&gt;You can alienate explorers with &lt;strong&gt;too much or too little obstacle&lt;/strong&gt;.  If I can simply create a
character and explore the whole world, I'll have fun and maybe even write you a good review, but I
will also drop the game after a few days.  On the other hand, if I can't explore anything new for a
whole week, I'll get bored and leave as well.&lt;/p&gt;
&lt;p&gt;An interesting way to put it is that each of those 4 groups “plays with” a different portion of the
brain.  The H&amp;amp;Ser plays with the instinctive pleasure centres, the RPer with the imagination, the
gamer with the intelligence, and the explorer with the curiosity.&lt;/p&gt;
&lt;p&gt;Finally, there is of course a fifth group: those that aren't interested in the game itself, at all.
There are many possible cases here; some people play MMORPGs and “massively social” games primarily
to “meet” new people, or to chat.  Others like &lt;em&gt;looking&lt;/em&gt; at the game, because it's cute or cool or
whatever; although those either don't stick around for long, or evolve into a specialised sort of
“explorer”.  Some play because they like the setting; this is especially the case for games that
are adaptations of known fictional settings.  Again, those players either leave after a while, or
drift into one of the other categories.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="the-social-spectrum-for-the-player"&gt;
&lt;h2&gt;The social spectrum, for the player&lt;/h2&gt;
&lt;p&gt;A very important point is how much each player wants to interact with others.  Some want to play
alone to the maximum extent they're able; others are in the game primarily for the social aspect.
In the middle of the spectrum, players will like to do things in teams (or parties), will want to
join guilds, use in-game chat, ask other players for help (possibly in a forum/message board), and
interact with other characters in the game knowing there's an actual person behind them.&lt;/p&gt;
&lt;p&gt;From a strategic point of view, it's a good idea to encourage social interaction.  If I play on my
own, it's not a big deal if I don't play for some time; but if I have a few “game-friends”, and I
grew used to chatting with them every week, or every day, or whatever it is, then I have a reason
to come back; I wouldn't want to “miss” my game-friends.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="to-quest-or-not-to-quest"&gt;
&lt;h2&gt;To quest or not to quest&lt;/h2&gt;
&lt;p&gt;Good quests are one of the best tools of the trade.  It's what turns a game into a medium for
interactive storytelling.  However, the plain, harsh truth is that some people don't really care
about your story!  Some people want to be able to enjoy the “regular” things to do in the game, and
stay away from the quests, or do them just as much as absolutely required.  Again, it's a spectrum;
on one end, some players completely avoid quests, while on the other, they play for the quest and
only do other stuff in order to “support” the quest requirements.&lt;/p&gt;
&lt;p&gt;Wait, what?  Some people like doing the day-to-day character maintenance more than quests, or even
to their exclusion?  It's easy to fall in the trap of assuming the day-to-day stuff is boring; but
in reality, people are different and have different tastes.  True quote from a real person in my
tweeter feed today: “I hate when my routine gets disrupted. Life without routine is totally boring
and not worth living.”  I was amazed at first, but upon reflection, it just proves my old core
belief that people are different; and it matches my observations of game players.  Some really &lt;em&gt;do&lt;/em&gt;
come back every day for the maintenance routine, and find quests a disruption.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="worker-vs-fighter"&gt;
&lt;h2&gt;Worker vs. fighter&lt;/h2&gt;
&lt;p&gt;In the “massively social” CRPGs that are popping up online recently (I'll offer &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt; as an
example that I actually like playing), you have other things to do than going around bashing
people's teeth in.&lt;/p&gt;
&lt;p&gt;Now, on many MMORPGs you can do other things as well.  The stories of “gold farmers” in WoW are a
famous example; real-life sweatshops with people connected to the game making in-game items in an
in-game sweatshop.  But in most games, those activities are second-class; you can't be a level 70
tailor or miner, for example.&lt;/p&gt;
&lt;p&gt;To explore the case of &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt;, it started up not so much as a CRPG, but a kind of RPG-ified “The
Sims”; just like “The Sims” was originally a toy to spy in more detail on the life of citizens from
Sim Cities, and later grew to oversell its “parent” game by far, also &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt; grew out of another
game by the same company, called &lt;a class="reference external" href="http://www.travian.com/"&gt;Travian&lt;/a&gt; (yeah confusing... but the company is German, and in
German &lt;a class="reference external" href="http://www.travian.com/"&gt;Travian&lt;/a&gt; is called &lt;a class="reference external" href="http://www.travian.com/"&gt;Travian&lt;/a&gt;, but &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt; is called Travianer, which is... well, slightly
better).  &lt;a class="reference external" href="http://www.travian.com/"&gt;Travian&lt;/a&gt; is a strategy game, a kind of massively-multiplayer Catan/Civ.  Then along came
Travianer/&lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt;, where you get to play one of the actual citizens.&lt;/p&gt;
&lt;p&gt;The funny side-effect of this story is that, although there is fighting aplenty and a quest, the
main focus of &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt; is not to fight, but rather to be a productive citizen.  You harvest one of
the primary resources from &lt;a class="reference external" href="http://www.travian.com/"&gt;Travian&lt;/a&gt; (clay, wood, ore, or grain), or you process them into secondary
resources (bricks, boards, coal, iron, flour, bread).  Fighting doesn't reward you with money, only
experience; to get money you need to work.  (But if you really, really want to be a bum, you can
live off of digging up treasure in the swamp.)&lt;/p&gt;
&lt;p&gt;This experiment (and the success of &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt;) brought a realisation: some people &lt;em&gt;like&lt;/em&gt; doing
things other than fighting.  Some people like putting the character to work, or figuring out the
complexities of trade.&lt;/p&gt;
&lt;p&gt;And frankly?  After the success of The Sims, we really should have figured this out earlier.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="simple-vs-rich-or-dull-vs-complex"&gt;
&lt;h2&gt;Simple vs. rich (or, dull vs. complex)&lt;/h2&gt;
&lt;p&gt;Complexity in a game is a tough issue.  Complexity comes in all levels: quest, rules, user
interface.  Make it too simple, and many players will be bored; and, of course, you won't attract
any “gamer” players.  Make it too complex, and many players will be bored, or confused.&lt;/p&gt;
&lt;p&gt;Personally, I'm a follower of the school of making complexity optional.  Offer a very simple
version; the easy-to-find quests, the basic rules, the default UI.  But also offer layers and
layers of extra complexity the player can opt in to: extra quests or side-quests that, preferably,
tie into the main quest and enrich its story; additional corner rules for special, rare items, or
for advanced classes, or something; optional elements in the UI that can be configured.&lt;/p&gt;
&lt;p&gt;And then there are wizards.  This is complete guesswork on my part, but from observation, I believe
people who prefer to play magic-users, also prefer a little more complexity.  It makes sense;
understanding large spell lists, with the reward of having more options of action, as opposed to
getting a weapon and bashing stuff — that's clearly a complexity choice.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="the-trade-of-trading"&gt;
&lt;h2&gt;The trade of trading&lt;/h2&gt;
&lt;p&gt;Trading is a human pleasure.  Like most human pleasures, some people abhor it, others can't live
without it.&lt;/p&gt;
&lt;p&gt;In most CRPGs and CRPG-alikes, &lt;em&gt;some&lt;/em&gt; form of trading is required.  In &lt;a class="reference external" href="http://crossfire.real-time.com/"&gt;Crossfire&lt;/a&gt;, WoW, or even
old-school Diablo and Ultima, you'll get random stuff from questing, stuff that you don't want but
that is worth money; on the other hand, some items you'll never find, or you won't find often
enough, so you'll have to buy instead.  In &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt; and others, you need to actually produce and
sell things in order to make game money.&lt;/p&gt;
&lt;p&gt;But from that, sprung a funny tangent: some people like doing it.  Some people enjoy looking for
the best price, or even finding ways to make profit out of buying stuff in one place and selling it
elsewhere.&lt;/p&gt;
&lt;p&gt;I'm told in the Korean MMORPG Ragnarok Online, playing a trader is actually an option.  It's still
somewhat limited, as you still need to fight in order to level up; but it's an added choice, and
apparently, lots of people actually go for it.  I'd like to see a CRPG where fully playing a trader
is an option; your goal is actually to make profit, and you level by making good deals.  Or rather:
I'd like it even more to write it ;-)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="game-model-styles"&gt;
&lt;h1&gt;Game model styles&lt;/h1&gt;
&lt;div class="section" id="time-is-money"&gt;
&lt;h2&gt;Time is money&lt;/h2&gt;
&lt;p&gt;A trend that is integral part of the “massively social games” phenomenon is limiting how much you
can do based on time.  Generally, that's done using some sort of points that regenerate through
time, and which you spend to do some of the things in the game; &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt; has “occupational
points”, and &lt;a class="reference external" href="http://www.imperialgalaxy.com/"&gt;Imperial Galaxy&lt;/a&gt; has “command bandwidth”, for example.  There are ways to get
bonuses to produce these points faster; in &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt; you get more OP if you sleep in better beds,
while in &lt;a class="reference external" href="http://www.imperialgalaxy.com/"&gt;Imperial Galaxy&lt;/a&gt; it's basically a matter of keeping your “home sector” clean.&lt;/p&gt;
&lt;p&gt;Strategy and building games use more resource-centred techniques; in &lt;a class="reference external" href="http://www.playnileonline.com/"&gt;Nile Online&lt;/a&gt; and &lt;a class="reference external" href="http://www.travian.com/"&gt;Travian&lt;/a&gt;,
your limit is how fast you can harvest resources that are needed as materials to build stuff.
Also, each building takes a fixed time to build, and you can only have one construction going on
(per city) at any given time; so if my current palace upgrade takes 12h, that means I can't build
anything else on that city for the next 12h.&lt;/p&gt;
&lt;p&gt;The purpose of these limits seems to be twofold.  On one side, you want to avoid giving compulsive
players that have no lives a very big advantage, because that drives everyone else away.  But also,
these daily limits are an encouragement for players to come back every day and do a little more.&lt;/p&gt;
&lt;p&gt;This is a hard choice to make.  And personally, I think there's an enormous risk of limiting it too
much and becoming annoying; everyone I know who plays &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt; agrees there aren't enough OPs in a
day.&lt;/p&gt;
&lt;p&gt;In some games, the limit can also serve to encourage players to explore other aspects; in
particular, the more social aspects.  But doing that well requires your limits to be partial (not
affect the social aspects — &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt; fails in this point), and more importantly, it requires the
other aspects you want to emphasise as an alternative to be well-developed and interesting.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="specialise-or-balance"&gt;
&lt;h2&gt;Specialise or balance?&lt;/h2&gt;
&lt;p&gt;This one has been an ongoing argument in &lt;a class="reference external" href="http://crossfire.real-time.com/"&gt;Crossfire&lt;/a&gt; for as long as I can remember.&lt;/p&gt;
&lt;p&gt;Some games strongly encourage you to build an all-rounded character.  In &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt;, for instance, I
tried to ignore the combat aspects at first, but quickly found myself unable to complete quests.
Then, still unwilling to split my (limited) attention, I decided to focus on combat; but after a
few days, weapon upgrades became too expensive for me, and now I need to spend a few more days
upgrading my tools.  So their system essentially forbids focusing.&lt;/p&gt;
&lt;p&gt;On the other side, MMORPGs usually encourage teamplay by giving strong benefits to cooperation
between differently-focused characters; the typical successful WoW party requires (at least) one or
two tanks, one or two damage-dealers, a spell caster, and a healer.  (The typical D&amp;amp;D party adds to
that recipe one trap finder and one leader.)&lt;/p&gt;
&lt;p&gt;In &lt;a class="reference external" href="http://crossfire.real-time.com/"&gt;Crossfire&lt;/a&gt;, focusing is good on lower levels, but the usual complaint is that pretty much all
level 100 characters are identical (or possibly, can be divided into dragons and non-dragons).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="it-s-all-about-choice"&gt;
&lt;h2&gt;It's all about choice&lt;/h2&gt;
&lt;p&gt;There are different kinds of players, with different preferences and styles.  Do you try to allow
all styles, or do you focus your efforts on pleasing one category?  Both are valid choices,
especially if development resources are very limited.&lt;/p&gt;
&lt;p&gt;If you think this section is too short, feel free to re-read the first section of this post,
&lt;a class="reference internal" href="#player-styles"&gt;Player styles&lt;/a&gt;, and reflect on all the game model choices hidden in there ;-)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="the-social-spectrum"&gt;
&lt;h2&gt;The social spectrum&lt;/h2&gt;
&lt;p&gt;The new batch of (mostly web-based) “massively social” games is all about interacting with other
players.  While &lt;a class="reference external" href="http://www.imperialgalaxy.com/"&gt;Imperial Galaxy&lt;/a&gt; can be played solo, it's frankly not a fun game if played that
way; the fun is all in belonging to a fleet.  &lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt; has huge benefits for guild membership, it
has “Community Actions”, “Social Points”, and the best ways to acquire experience are fighting in
the arena (against other players) or playing mini-games (against other players).  And you make
money primarily by selling goods on the market (to other players).  &lt;a class="reference external" href="http://www.playnileonline.com/"&gt;Nile Online&lt;/a&gt; is pretty much
impossible to play without making heavy use of the market; and god offerings benefit an entire
nome, and are really hard to make on your own.&lt;/p&gt;
&lt;p&gt;These games also incorporate a measure of social networking technology, with friend lists and
features that depend on them, integrated messaging systems, and heavy use of chat.&lt;/p&gt;
&lt;p&gt;On the middle of this spectrum lie most MMORPGs, where parties are necessary to complete most
quests, and guild membership offers big, but not overwhelming benefits.&lt;/p&gt;
&lt;p&gt;In the web-based arena, most Facebook games offer big, but optional benefits for players who have
large numbers of other people in their in-game “team”; however, this is more an incentive to invite
people to install the game, than an actual social aspect.&lt;/p&gt;
&lt;p&gt;Then there is Spore, and its amusing moniker of “massively single-player”.  It allows you to
interact with content created by other players (which Sim City and The Sims already allowed,
although it was a little more difficult).  An earlier, and possibly better, example of this
approach is the Pokémon (portable) series; the game is primarily single-player, but there are great
benefits and strong encouragement to interact with others (for trading pokémon or PVP battles).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="starting-from-zero-we-ve-got-nothing-to-lose"&gt;
&lt;h2&gt;Starting from zero we've got nothing to lose&lt;/h2&gt;
&lt;p&gt;In Years of Yarncraft, Pete Abrams pokes fun at this aspect, by having Torg's character start the
game armed only with a stick, and having to kill a bunch of salamanders as his first quest.&lt;/p&gt;
&lt;p&gt;How low do you want characters to start?  The traditional answer, until relatively recent times,
was that a starting character had to be reasonably capable, enough to entice and interest the
player.  But now, the trend seems to be starting very close to zero.  And if the game offers a lot
of choice, that may actually be a good thing, because then you won't have to make some of those
choices until you have a better understanding of their effects.&lt;/p&gt;
&lt;p&gt;Of particular interest to this aspect is the trend of making the first few quests a tutorial of
sorts, teaching some of the most important things in the game.  &lt;a class="reference external" href="http://www.travian.com/"&gt;Travian&lt;/a&gt; plays this card heavily
(possibly a little too heavily; you don't want people to feel patronised).&lt;/p&gt;
&lt;p&gt;This also ties in to game mechanics choices (which I'm covering in the next post) about character
growth and the meaning/algorithms of attributes and skills.  It's common in simpler games to start
all attributes at 0, which means normal human average, and then simply add to them a number of
points per level, without any real final cap.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="those-pesky-economics"&gt;
&lt;h2&gt;Those pesky economics&lt;/h2&gt;
&lt;p&gt;All RPG-like games must include some sort of an economy.  In single-player games, that's
traditionally just a question of making sure more powerful items are more expensive, while at the
same time your ability to acquire game-money increases as you progress.  Additionally, different
items would be available for sale in different areas of the game world.&lt;/p&gt;
&lt;p&gt;Then, simulation-heavy games and procedural content came along, and it became fashionable to try to
achieve a “real economy” in the game world.  I have personally not played a game that does that, or
even seen positive reviews about one, so the benefit seems questionable.&lt;/p&gt;
&lt;p&gt;But there's something better than a simulated “real” economy: a &lt;em&gt;real&lt;/em&gt; real economy.  &lt;a class="reference external" href="http://www.travian.com/"&gt;Travian&lt;/a&gt;,
&lt;a class="reference external" href="http://www.travians.com/"&gt;Travians&lt;/a&gt; and &lt;a class="reference external" href="http://www.playnileonline.com/"&gt;Nile Online&lt;/a&gt; have all succeeded in doing that, Nile to a much greater extent.
Quite simply, if most (or all) trading is with other players, and you have a sufficiently large
number of them, soon real market factors will emerge, and in a way that players can understand
without too much effort.&lt;/p&gt;
&lt;p&gt;Maybe the ideal best is a mixed, real/simulated “real” economy, where player purchases have a
strong (primary even) influence, but where items that players aren't really interested on can also
fluctuate, as NPC demand for them grows and shrinks due to simulated or player-caused events.  But
the reason those web-based games have succeeded in creating an actual economy is one that may
defeat this point: simply, those games have staggering numbers of players — thousands upon
thousands online simultaneously at any given moment — which is enough population to simulate the
economy of a small village.&lt;/p&gt;
&lt;p&gt;On a side note, someone linked a very funny (but true) article about &lt;a class="reference external" href="http://www.koboldquarterly.com/k/article145.php"&gt;RPG economics&lt;/a&gt; to
#crossfire earlier in the week.  While the article is about D&amp;amp;D (and other “tabletop” fantasy
RPGs), it mostly applies to CRPG as well.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="to-be-continued"&gt;
&lt;h1&gt;To be continued&lt;/h1&gt;
&lt;p&gt;All right... I ran out of time and brain power :-) and I'm afraid nobody will bother to read this
if it gets any longer than it already is.  In a few days time, I'll write about game mechanics
styles, and story/setting styles.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>lalo</author><pubDate>Thu, 15 Jan 2009 03:20:00 -0200</pubDate><guid>http://www.hystericalraisins.net/entry/a-reflection-on-game-styles-in-crpgs/</guid><category>crossfire</category><category>games</category><category>web</category></item><item><title>Automagically-translating chat thingy</title><link>http://www.hystericalraisins.net/entry/automagically-translating-chat-thingy/</link><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Usually, I have to communicate with the people in the building's management office via Google Translate.  It works, but it's awfully painful to be constantly flipping the language drop-downs back and forth.  (It's two drop-downs, one for source and one for target language.)&lt;/p&gt;
&lt;p&gt;So I wrote a little javascript gadget that does the hard work for me, and also keeps a “log” of the conversation.  You can peruse it at &lt;a class="reference external" href="http://lalomartins.info/transchat.html"&gt;http://lalomartins.info/transchat.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Attention though: this is &lt;strong&gt;not&lt;/strong&gt; a chat app, not in the modern sense.  It's “chat” in the old-school sense, of actually talking to a person that's in front of you.  It's... an interpreter widget, not a chatbox :-)  enjoy and spread if you wish...)&lt;/p&gt;
&lt;/div&gt;</description><author>lalo</author><pubDate>Fri, 19 Dec 2008 20:23:00 -0200</pubDate><guid>http://www.hystericalraisins.net/entry/automagically-translating-chat-thingy/</guid><category>china</category><category>hacking</category><category>web</category></item><item><title>kill -FKOFFDAMMIT 25208</title><link>http://www.hystericalraisins.net/entry/kill--fkoffdammit-25208/</link><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;You know, we (Unix-y people) need a new signal, stronger than SIGKILL.  As
satisfying as it can be to type “killall -KILL firefox” (we just &lt;em&gt;know&lt;/em&gt;
that's the actual reason you still love the command line), there are a number
of situations where that will still not get rid of the damn process; for
example, if it's in the middle of some syscalls, specially nfs (grr!) or
swapping (which is precisely when you &lt;em&gt;need&lt;/em&gt; to kill it).  So I'd like to
propose a new signal which, let's say, waits for half a second, and if the
process really doesn't respond, then gets rid of it for good, regardless of
what else it was doing.  In the middle of your quality toilet time, with
pants down and all?  Who cares, just get out.  (If the process does respond,
then I suppose do a -TERM... or rather, the other way around; send a -TERM,
wait half a second, and if nothing seems to be happening, then bring out the
ultraviolence?)&lt;/p&gt;
&lt;p&gt;Here's a list of suggested names for the new signal.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;SIGFKOFFDAMMIT&lt;/li&gt;
&lt;li&gt;SIGKTHXBYE&lt;/li&gt;
&lt;li&gt;SIGWITHCRUELTY&lt;/li&gt;
&lt;li&gt;SIGNUKE&lt;/li&gt;
&lt;li&gt;SIGLEAVENOTRACE&lt;/li&gt;
&lt;li&gt;SIGCAPISCE&lt;/li&gt;
&lt;li&gt;SIGNOSRSLY&lt;/li&gt;
&lt;li&gt;SIGEXTREMEPREJUDICE&lt;/li&gt;
&lt;li&gt;SIGGETTHEHELLOUTOFOURGALAXY&lt;/li&gt;
&lt;li&gt;SIGCHUCKNORRIS&lt;/li&gt;
&lt;li&gt;SIGEXTRACRISPY&lt;/li&gt;
&lt;li&gt;SIGHULKSMASH&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and my personal favourite:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;SIGGOBACKINTIMEANDSTRANGLEITINTHECRIB&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>lalo</author><pubDate>Sun, 09 Nov 2008 05:23:00 -0200</pubDate><guid>http://www.hystericalraisins.net/entry/kill--fkoffdammit-25208/</guid><category>computers</category></item><item><title>XML considered harmful, or, &lt;arghdiediedie/&gt;</title><link>http://www.hystericalraisins.net/entry/xml-considered-harmful-or-arghdiediedie/</link><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;I have, on a number of occasions, stated that XML is harmful, and should be taken out and shot.  So
here I am today, to explain why I think that, and offer alternatives.&lt;/p&gt;
&lt;div class="section" id="not-good-for-humans"&gt;
&lt;h1&gt;Not good for humans&lt;/h1&gt;
&lt;p&gt;The main problem is, of course, that XML was never intended for humans.  It's not designed so that
we can efficiently write it, read it, understand it at a glance, or maintain it.  But many tools
that use XML today tend to forget that, leading to hours of wasted time and lots of frustration.
(&lt;a class="reference external" href="http://weblion.psu.edu/news/xml-configuration-fail"&gt;XML for configuration files&lt;/a&gt;, anyone?  Zope's ZCML and .Net's configs and all those Java
frameworks?)&lt;/p&gt;
&lt;p&gt;Then, of course, that's not XML's fault; it was never designed to succeed at that task.  The fault
lies with developers who misuse it.  Well, yes and no.  The reason people misuse it is because it's
overhyped; XML is the new peanut butter (or garlic butter, according to Pete Abrams) — adding it
to &lt;em&gt;anything&lt;/em&gt; makes it taste better and sell more.  (I don't even &lt;em&gt;like&lt;/em&gt; peanut butter.)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="not-good-for-machines"&gt;
&lt;h1&gt;Not good for machines&lt;/h1&gt;
&lt;p&gt;What it &lt;em&gt;was&lt;/em&gt; designed for is communication between programs; an unified, extensible format for
data transmission.  By having libraries to handle it in most languages and environments, you'd make
it easy for developers to deal with it, and as a consequence, to make their programs communicate.&lt;/p&gt;
&lt;p&gt;However, after roughly ten years of working with it, it is my informed opinion that XML fails at
that, too.  I'm not saying it got supplanted by better technology which we invented later.  It did,
to be fair.  But what I'm saying is that it was wrong from the beginning.  And if it's not good for
us and it's not good for our programs, why are we still using it?  (Peanut butter, I know.)&lt;/p&gt;
&lt;p&gt;So let's try to break out of the hype and prove that it's bad for our programs.&lt;/p&gt;
&lt;p&gt;The perceived problem with XML can be summarised in one sentence: XML is costly to parse.  But
that's too superficial; let's go deeper, look at the specifics, and the flaws in philosophy/design
that lead to this perception.&lt;/p&gt;
&lt;div class="section" id="parsing-xml-layers"&gt;
&lt;h2&gt;Parsing XML: layers&lt;/h2&gt;
&lt;p&gt;I usually tell my co-workers that there's two “layers” to parsing XML.  While that is true, it's
only true in the context of our data; if I were to make that statement more generic, I'd say:
there's always &lt;em&gt;at least&lt;/em&gt; two “layers” to parsing XML.&lt;/p&gt;
&lt;p&gt;The first, the “bottom” layer if you want, is &lt;strong&gt;syntactic&lt;/strong&gt; parsing.  This means reading XML
itself: tags, entities, attributes, comments, CDATA, PCDATA, white space, the works.  The input to
syntactic parsing is a string or stream of bytes; the “output” is an API — SAX, DOM, ElementTree,
you name it.&lt;/p&gt;
&lt;p&gt;On the opposite end of the stack, the “top” layer so to speak, is &lt;strong&gt;semantic&lt;/strong&gt; parsing, or
extracting the data you're actually interested in.  The “input” here is a generic API; in the
typical case of two layers, the API from syntactic parsing.  The “output” is a domain-specific API
or, more commonly, a collection of structured data (usually objects, nowadays).&lt;/p&gt;
&lt;p&gt;An example where you may have more than two layers is when you're using something else built on top
of XML; the most common case being feeds.  So at the bottom layer something will parse XML, then
another chunk of code will parse that as RSS or Atom, and then your semantic layer will actually
extract the data.  At work, we initially made our data available as RDF; so we had a second,
“middle” layer (we actually used a JavaScript RDF library) which would parse the RDF, and then we
did our semantic parsing by using the RDF library's API.  That made our code a lot simpler, but it
also made it a lot slower; so we later switched to ignoring the RDF and simply treating it as XML.
(Even later, we switched to a JSON format.)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="syntactic-parsing-too-much-structure"&gt;
&lt;h2&gt;Syntactic parsing: too much structure&lt;/h2&gt;
&lt;p&gt;Syntactic parsing is what XML is supposedly “all about”; the point being, you don't see it.  In our
case, at work, it's done by the browser (which gives us DOM with a touch of XPath).  In pretty much
any other case, it will still be done by your environment (the browser, in our case; JBoss and .Net
are other examples), or by a standard library.&lt;/p&gt;
&lt;p&gt;Well, that's great, right?&lt;/p&gt;
&lt;p&gt;It is, yeah.  But it hides the fact that those libraries (even if it's “hidden” in the environment,
it's still at some level done by a library) tend to be huge and ridiculously complex.  The XML
syntax is designed to cover an enormous universe of cases that your program will concretely never
encounter, and yet, you have to pay the complexity cost for them.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="semantic-parsing-not-enough-structure"&gt;
&lt;h2&gt;Semantic parsing: not enough structure&lt;/h2&gt;
&lt;p&gt;XML shines on xHTML: a markup language for &lt;em&gt;text&lt;/em&gt;, where you have arbitrary streams of &lt;em&gt;text&lt;/em&gt;
sparkled with special instructions about it.  Some of those “instructions” are really containers,
which have more text and instructions.  XML does that really well.&lt;/p&gt;
&lt;p&gt;It shines a little less on something like SVG, where it represents arbitrary streams of
heterogeneous objects.  Some of those contain other objects, and XML does help there.&lt;/p&gt;
&lt;p&gt;But the truth is that, for representing your program's data?  It probably sucks.  Its model is
very different from the object model of most (all?) popular languages and frameworks today.  In the
end, we find ourselves designing our data structures as many as three times: once in the language
in which we're actually writing it, one in a relational database, and one in XML.  The mappings
between them are often poor, since the semantics of the three models are so poorly matched.&lt;/p&gt;
&lt;p&gt;Sadly, it would be relatively trivial to pick a lowest-common-denominator model that would fit all
of today's popular languages.  But XML didn't even try.&lt;/p&gt;
&lt;p&gt;That's not the whole of my objection, though.  Due to the MASSIVE FAIL in the syntactic layer, we
get a semantic layer that's only marginally simpler than it would be to parse a &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Domain-specific_language"&gt;DSL&lt;/a&gt;
(domain-specific language); maybe less simple, if you use a good library for your &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Domain-specific_language"&gt;DSL&lt;/a&gt;.  There are
about half a dozen XML APIs in wide use; smart people are frequently getting annoyed at the ones
already there and coming up with a new, better one.  And although a modern offering like, say,
ElementTree can be light-years ahead of SAX or DOM, it can't help being clumsy and feeling
unnatural to the language; at the bottom line, what it's doing is dressing up a rotting corpse.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="conclusion"&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;Here's a better phrasing then, for the problem of XML as I see it:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XML has too much structure where it doesn't help, and not enough where it matters.&lt;/strong&gt;  One of the
reasons I love JSON is that it's not designed to mark-up text, or to transfer “streams of data”;
it's designed to transfer &lt;em&gt;objects&lt;/em&gt; (JSON means “JavaScript &lt;em&gt;Object&lt;/em&gt; Notation”), which means it
maps nicely to my code on both ends, whether that code is JavaScript, Python, C++, or even C.  (It
maps nicely to Java as well, but who cares.)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="alternatives-existing-and-ideal"&gt;
&lt;h1&gt;Alternatives (existing and ideal)&lt;/h1&gt;
&lt;p&gt;Right now, for real-life code, most places where you're using (or thinking of using) XML would
probably be better served with JSON.  A few more complex cases may justify a &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Domain-specific_language"&gt;DSL&lt;/a&gt;, but I would
hesitate a lot before going down that route.&lt;/p&gt;
&lt;p&gt;Ideally, I'd like to propose a new format; an “active” derivative of JSON, inspired by the modern
practise of “JSON with callback”.  Essentially, I'd like to replace JSON's “flat” object notation
(&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;{'attr1':&lt;/span&gt; &lt;span class="pre"&gt;'value',&lt;/span&gt; &lt;span class="pre"&gt;'attr2':&lt;/span&gt; &lt;span class="pre"&gt;'value'}&lt;/span&gt;&lt;/tt&gt;) with something which looks like a Python constructor
(&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;MyClass(attr1='value',&lt;/span&gt; &lt;span class="pre"&gt;attr2='value')&lt;/span&gt;&lt;/tt&gt;).  The pseudo-classes (or pseudo-functions if you're
looking at it from C) would play the role that tag names play in XML elements, which would make it
even more straightforward to map this data to actual objects on each end.&lt;/p&gt;
&lt;p&gt;This would, of course, lose the benefit that “JSON with callback” can simply be executed in a
browser.  But then again, “JSON with callback” is not formally correct JSON anyway, so we already
sacrificed some portability for that ability.  “Real” JSON is usually converted to “JSON with
callback” by a simple routine on the server side.  A similar transformation could convert the
format I'm proposing into JavaScript; the fragment above would become: &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;MyClass({attr1:&lt;/span&gt; &lt;span class="pre"&gt;'value',&lt;/span&gt;
&lt;span class="pre"&gt;attr2:&lt;/span&gt; &lt;span class="pre"&gt;'value'})&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>lalo</author><pubDate>Sat, 25 Oct 2008 15:37:00 -0200</pubDate><guid>http://www.hystericalraisins.net/entry/xml-considered-harmful-or-arghdiediedie/</guid><category>computers</category><category>hacking</category><category>opinion</category><category>web</category></item><item><title>Review: Sanctuary</title><link>http://www.hystericalraisins.net/entry/review-sanctuary/</link><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;This weekend I watched the first double-episode of &lt;em&gt;Sanctuary&lt;/em&gt;, the new series in the Sci-Fi Channel.  If you're a self-respecting sci-fi geek, you probably know that Sanctuary was created by one actor, one writer, and one producer of Stargate: SG-1, and that it started off as a web-based series.  The double-episode is, in fact, the first “season” of the web series, with the tiniest bit of re-shooting and, dare I say it?, “re-post-production”.&lt;/p&gt;
&lt;p&gt;The writing isn't bad, the acting is decent (great in some cases, but unfortunately not the lead), and the special effects are pretty good.&lt;/p&gt;
&lt;p&gt;Still, I give it a “FAIL”.  Sorry, but it's just not interesting.  There's nothing new, there's nothing that happens there to keep me interested.  Supernatural creatures living in secret in our world?  Yawn, that was cool in the early 90s.  What, so the big secret of the “mysterious” Doctor Magnus is &lt;em&gt;that&lt;/em&gt;?  Sorry, that was already old in the early 90s when the rest of the premise was cool.  Also, you just ruined the “mysterious” part by revealing it so soon.&lt;/p&gt;
&lt;p&gt;It's also too slow on the first half, lots of talking heads and little plot progress, with the second half having too much action and little plot progress.  In fact, plot progress tends to happen in “bursts”, which is, sorry, not good at all.&lt;/p&gt;
&lt;p&gt;Good try, but I won't be coming back for the next one.&lt;/p&gt;
&lt;/div&gt;</description><author>lalo</author><pubDate>Mon, 06 Oct 2008 23:23:00 -0300</pubDate><guid>http://www.hystericalraisins.net/entry/review-sanctuary/</guid><category>sci-fi</category></item><item><title>Freedom for Whom?</title><link>http://www.hystericalraisins.net/entry/freedom-for-whom/</link><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;I think I've seen this argument for the first time in a Slashdot comment, years ago.  I've since
adopted it, refined it, and used it a lot myself; but now in light of the &lt;a class="reference external" href="http://code.google.com/android/"&gt;Android&lt;/a&gt; release, I think
it's worth mentioning again.&lt;/p&gt;
&lt;p&gt;The big problem I see with “Open Source” is that there are, in fact, two groups there.  Fortunately
the same is &lt;em&gt;not&lt;/em&gt; true of Free Software, but even our arguing that it's about freedom still doesn't
help... well, read on.&lt;/p&gt;
&lt;p&gt;The thing with “Open Source” is: who is it open &lt;em&gt;to&lt;/em&gt;?&lt;/p&gt;
&lt;p&gt;Arguably, Open Source, as a vague, undefined thing, has existed for decades.  But as a conscious,
named movement with its own marketing, it spun off from the Free Software movement in the late
1990s, after the “open-sourcing” of Mozilla and the publishing of &lt;a class="reference external" href="http://www.catb.org/esr/writings/cathedral-bazaar/"&gt;The Cathedral and the Bazaar&lt;/a&gt;.
(Or, according to some, it spun off a few weeks later, when RMS noticed those guys were talking
about something else and split off from the Open Source initiative.)  Still, in hindsight, one can
say things like the BSDs, and even the original Unix, were done more in the spirit of Open Source
than of Free Software.&lt;/p&gt;
&lt;p&gt;Now Free Software, with all its GNU/FSF writings, has always been very clear about its goals.
We're here for the freedoms of the &lt;em&gt;user&lt;/em&gt;.  If you get a piece of software, you have a bunch of
inalienable rights, rights that aren't being respected by most software, and which we intend to
uphold and defend.  Nice, eh?&lt;/p&gt;
&lt;p&gt;Open Source people, on the other hand, seem to be a little confused about this.  It's like watching
two madmen (or drunks) arguing, each founding an argument on an entirely different premise.  Some,
perhaps still in touch with the “origins” of Open Source in the 90s, believe it's about being
“open” to the users of the software.  Others have adopted the belief (from BSD maybe?) that it's
all about “openness” to the developers.&lt;/p&gt;
&lt;p&gt;(More importantly, some of them don't realise &lt;a class="reference external" href="http://www.hystericalraisins.net/entry/it-depends-on-what-results-youre-trying-to-achieve"&gt;Free Software ≠ Open Source&lt;/a&gt;, and mistakenly argue
this in even more confusing terms; like the old fallacy that the GPL, and viral licenses in
general, are bad for Free Software because they give “less freedom” than BSD-style licenses.  They
do, if you're thinking of other developers, who will then have the “freedom” to “steal” my software
and use it in their own closed software, and not give back to the project in any way.  I don't care
the least about those; I'm writing software for the freedom of my &lt;em&gt;users&lt;/em&gt;, and those have their
freedoms enforced by a viral license.  Now are viral licenses bad for Open Source?  Honestly, I
couldn't care less.)&lt;/p&gt;
&lt;p&gt;The Android platform seems to be firmly planted in the latter camp, sadly.  (Or maybe not so sadly;
I rejoice with every Java-based product that fails.)  It's “open”, first and foremost, for handset
makers and network operators, and a distant second, to application developers.  “Openness” for the
end-user doesn't seem to even be a consideration.  Now of course, both things are pretty much
incompatible; being “open” to the operators means, really, “open” for them to “close” it in
whatever ways they want; so yeah, no VOIP.&lt;/p&gt;
&lt;p&gt;Oh well.  At least I don't need to be conflicted about whether I want an Android device, whether I
can stand Java long enough to actually like the OS.  Clearly, that won't be a consideration, and
&lt;a class="reference external" href="http://wiki.openmoko.org/"&gt;OpenMoko&lt;/a&gt; — or, if they fail, someone else, probably using &lt;a class="reference external" href="http://www.limofoundation.org/"&gt;LiMo&lt;/a&gt; or &lt;a class="reference external" href="http://www.freesmartphone.org/"&gt;FSO&lt;/a&gt; stacks — will be the
mobile phone for me.  Eventually :-)&lt;/p&gt;
&lt;/div&gt;</description><author>lalo</author><pubDate>Wed, 24 Sep 2008 16:50:00 -0300</pubDate><guid>http://www.hystericalraisins.net/entry/freedom-for-whom/</guid><category>free-software</category><category>opinion</category></item><item><title>Creationists, I feel your plight</title><link>http://www.hystericalraisins.net/entry/creationists-i-feel-your-plight/</link><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;You know what... I do understand and respect a family's right to believe any idiotic nonsense they want to.  Who knows; it's a seriously messed up universe we live in, they could even be &lt;em&gt;right&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;But whether or not they're &lt;em&gt;factually&lt;/em&gt; right is not what matters most in my book (which is not a holy book).  Rather... their theories are grounded in a larger belief system, which has at its core a moral and ethical code.  Telling the children in absolute terms that their parents beliefs are wrong, understandably, undermines the whole system, which in turn undermines the code.&lt;/p&gt;
&lt;p&gt;(I'm not saying American creationists have a great code.  Those are often the same people who are racists, xenophobes, or quick to judge someone by the bank account.  But it's built on a good stem of what Americans call &amp;quot;work ethic&amp;quot;, and arguably, it's better than no code at all.)&lt;/p&gt;
&lt;p&gt;At the root of the argument is, in fact, a completely different wrong, which is the one I actually wanted to address in this post.  The problem actually does lie with the (majority of) science teachers, who fall for the trap I call &amp;quot;the religion of science&amp;quot;.&lt;/p&gt;
&lt;p&gt;Good, respectable scientists almost never talk about facts.  A fact, or rather an absolute rule, is anathema to good science; the only facts useful to scientists are the results of their experiments, everything else is theory.&lt;/p&gt;
&lt;p&gt;What about bad scientists?  Oh, those are frequently 100% sure of obvious truths, like, &amp;quot;the atom is indivisible&amp;quot; and &amp;quot;heat is a fluid&amp;quot; and &amp;quot;there's no such a thing as a memristor&amp;quot;.  (They're particularly eager to label things &amp;quot;impossible&amp;quot;.)&lt;/p&gt;
&lt;p&gt;The pattern here is: an open mind is the first pre-requisite for science, even more important than genius.&lt;/p&gt;
&lt;p&gt;But in school -- and not only America, but many other places -- you only start hearing this kind of talk in college, or if you're really lucky, high school.  Basic science, the teachers who were supposed to be giving children the basics of science and awakening potential future scientists, generally fall for &amp;quot;the religion of science&amp;quot;.  They &amp;quot;teach&amp;quot; absolutes; this is so, because that is so.  Which is specially funny since some things they teach in basic school are known to be untrue, like Newtonian physics.&lt;/p&gt;
&lt;p&gt;We wouldn't be even having this argument if school science teachers could behave like good scientists and formulate their teachings like, &amp;quot;evidence suggests that...&amp;quot; and &amp;quot;it is believed that...&amp;quot; and &amp;quot;apparently, ...&amp;quot; and, often, &amp;quot;this and that evidence points to the conclusion that...&amp;quot;.&lt;/p&gt;
&lt;p&gt;What, actually teach creationism in schools?  No, now you're pushing it.  Come on, the other parents also have the right to keep &lt;em&gt;their&lt;/em&gt; children safely away from &lt;em&gt;your&lt;/em&gt; nonsensical idiocy.&lt;/p&gt;
&lt;/div&gt;</description><author>lalo</author><pubDate>Mon, 15 Sep 2008 06:46:00 -0300</pubDate><guid>http://www.hystericalraisins.net/entry/creationists-i-feel-your-plight/</guid><category>opinion</category></item></channel></rss>