Older blog entries for dancer (starting at number 41)


Contemplating leaving it. Seems like the job I have is the worst of the available choices open to me. Hmmm. Well, we shall see.


Inadequate chronometricity, damnit.


Well, I periodically attract bundles of attention here. Seems my method for rating people does, anyway.

jschauma: Just knowing people is insufficient. What I intended to convey is that I need to know that they are who I think they are...that's an additional requirement. It's an AND not an OR.


More opinionated opining:

  • Looking forward to Nautilus. I gotta get me some of that
  • Still no Terminus in stores, and patches for it are still appearing. Am I advantaged that it will be well patched before it hits Oz? Dunno.
  • Branden's going through phase 1 debian packaging of Xfree86 4.0.1. I want to use and feed-back. Problem is, that updating via the modem link more or less sucks (or doesn't suck, depending on your definition of the word in context), and doing it at work would require Work Time (which seems to already own too much of Everything Else Time). Decisions. Hmmm.
  • It's late and I'm tired, but I've had much to do, and I'm not yet able to sleep. Nevertheless, I can idle creatively for a half-hour or so, and I'm going to do just that.

Off the discussion that cycles around periodically, I'm going to publish the scheme I use for certifying people:

  • Knowing who you are, or being otherwise assured of your identity, or having had personal contact: Important.
  • Programming skill: irrelevant.
  • Contribution to open source: Important.
  • Not embarassing me for having certified you: Important.
So..I don't care if you can't code..if you write documentation, bug-reports, do testing or whatever for open source projects, you're okay in my book. Or at least, you've passed step one. Step two is trickier:

Step 2 involves not spouting vile rants and noise that are going to make me wish I didn't have my name on your page certifying you. Heck, you can hold differing opinions, or argue with me, and I'm cool with that. What a funny old world it would be if we were all the same. But if you bite or flame people, I'm going to seriously reconsider my certification of you. If I suspect you might, I'll either be conservative in my certification, or simply not certify you. A few people here fall into that category....people who are acceptable for diary entries, but I wouldn't trust on the Advogato front-page. Not with my name attached to them, anyways.

And it's all about trust, isn't it? :)


Mostly bughunts and tuning, where there is time.


EYO in Sydney, Australia sells an RPC-1 (that is, not internally region-locked) DVD ROM drive: The ASUS DVD-E608 [link fixed]. Bought it. Neat. Also got a faster CPU (an AMD K62/500). Running the CPU at an FSB speed of 100Mhz caused me all sorts of grief, all of which looked like faulty RAM. The RAM is PC100, but to get the thing to work properly, I've had to back off to 95Mhz. Still, it works. Software decoded playback under Windows is Spiffy(tm), and it all seems to work quite well.

One CPU pin was slightly bent on delivery, but it was no biggie. I highly recommend them.


Family illness and death: Pneumonia, death, strokes. One down, and probably more in the queue.


  • Just arranged a flight for Jenn. The hospital people think her grandfather will not last the night. Must do without her for a few days.
  • Just found out that Harry Potter is not an author, but apparently a character. Score one point towards the Dancer lives under a rock total.
  • Contemplating two new game projects. More on that later.
  • Still no Terminus in town.
  • Got 64MB more RAM for Jenn and a new large (20GB) hard disk for her
  • Found a model of DVD-ROM that is region-free, an available in Oz. Ordering that next pay.
  • My Evil Twin is visiting. He makes life interesting.
  • Word from Hasbro is that in addition to X-Com: Alliance, there's two more games in the works, an isometric analagous to Enemy Unknown, and some clunky FPS (to appeal to the adrenaline market)
  • graydon on software reuse: concur. Complexity, safety, side effects, and dependencies do a reusable library/API/class make. At work, I carefully document that. I don't need the info(because I wrote it) but others will. Also, wherever there's a tradeoff I document why I chose X over Y. It shows that (a) I thought about it, and (b) if circumstances change people will be able to see which parts of the code can or should be adapted to alternative methods.
  • Simon: Ah, yes...EQL is indeed famous. I did have issues with it at one point, and more-or-less rewrote it one desperate night, but you made it easy to do that by making the code clear and easy to understand. I appreciate that. Further to your cooking comment: You can be a cooking hacker, too. It's fun.
  • drivers: Thought about clanlib. Documentation is more or less the key. I went with SDL because of a few reasons: (1) The documentation was astoundingly clear, (2) I was just learning the guts of what was really needed for a modern game-engine (I've been a backend coder for years) and thus wasn't able to evaluate much based on features, though SDL appeared to have everything I figured I would need (or I would simply be able to add stuff), and (3) I've taken some mild, and slightly irrational dislike to clan___ and ___clan things lately. Seems like I can't turn around these days without stumbling over a .*clan.* something (like e.+ things and dot-coms). Maybe silly reasons, but I looked through the API docs for clanlib this-morning, and saw little that attracted me. Oh, before I forget: (4) SDL has some commercial games under it's belt, so despite the fact that neither it nor clanlib offer the aformentioned guarantees (see earlier response to Graydon, above) it's already established a very solid reputation for Not Sucking(tm). [ Note: I do not wish to imply in any way shape or form that clanlib might suck. I'm sure it doesn't. It's just that I have objective evidence of SDL's lack of suckage in certain limited areas]

Fixed my audio streams bug. Had to do with the dreaded FILE * in the GNU C library. I've had trouble with FILE pointers and threads before. The library seems to attempt to mutex access to them, but it doesn't seem to work well (at all?), and tends to result in heap corruption.

Nonetheless, it works quite well now. The conversion to general midi seems to have made the music tracks sound a bit hissy. That might be part of the original instruments, though. Perhaps some sort of low-pass filter might help.


Repeating explanations, at twenty minutes per, over the last week. Double-bonus, having to repeat the material I typed into the job entry, because the people dealing with the job didn't read anything about the job, or what the problem was. Tired of all the repetition.


  • Linux USB - yes, the device numbers changed. I was going to post that in a previous diary entry when I discovered that that was where all my USB mouse problems were coming from, but it slipped my mind. Damn. Wish I could have saved other people the same troubles. The old device was (10,32) then new device is (13,63)
  • Terminus - Keeping an eye out for it. Want it. Still not in stores here, AFAIK.
  • Debian Xfree86 4.0.1 - Still salivating (someone fetch this man a bucket)
  • Hardware - Need to buy Jenn another 64MB DIMM and a larger hard-drive. Was going to do that at lunch. Will try it this-evening.
  • Linuxchix - Need to proofread the FAQ and issues stuff. I promised I would.
  • Streaming media==broadcasting - Senator Alston's backflipped under pressure from what the newspapers describe as 'his corporate masters'. Damn foolishness.
  • MAPS vs ORBS - More damn foolishness.
  • Gaming - Somewhere I read an article on violence (on IGN, I think). It talked about the mature rating on games and quoted some interesting statistics about gaming age-groups. While the article focused on the younger-crowd (since that was the issue at hand) I noticed the obverse side of the figures: 46% of gamers are over 30. Considering that, it'd be nice to get more games that cater to us aging and decrepit gamers whose reflexes are breaking down, no? :) But, of course, we're only nearly half the market...and usually the half with more money. This is not a rant. Really.
  • It would be great if we could come up with a rendering technology that seperates the display device and the code. This way, we can write things just once and render it to text, HTML and PDA with equal ease. - jauderho - I think that's what HTML was once for...something which later revisions (especially HTML4.0?) seem to have lost sight of. It's a commonly recurring thing...even [g|n|*]roff addressed. Seems we keep losing the plot by then forcing those generic systems to mandate layouts to the pixel.
  • Browsers - Becoming disillusioned with them. Massive, showstopping bugs that I reported in the original netscape 4.0 pre-releases never got fixed. They get worse in some version, better in others, but never go away. MSIE is generally pestiforous and Windows/Mac only. Looking forward to flushing them both, and using Mozilla for the long haul, as soon as it stablises a little more.
  • Genetic engineering - A rhetorical question to ponder "In what way (other than rapidity) is genetic engineering different from what mankind has been doing to plants and animals since we came down out of the trees?" (If you find the trees reference offensive, you may substitute 'expelled from the Garden for petty theft')

Offers, offers, offers. Do I stay, or do I go? Well, the short answer is that until I see a proper offer, I keep doing what I'm doing. Money, terms, conditions, and work details. Company A's offer is attractive, but their HR people are veritably cthonic and seem to need to be pushed every step just to stay on the right page. Company B wishes me good luck and has bailed out of the bidding (as far as I know). Company C is dragging it's feet a little and may yet make an offer.


And now we are seven. Ryan Nunn joined us, and has been doing wonders with xmidi->midi conversion, and mt32->general midi conversion. Sterling work.

I've implemented my audio streams, and they've largely blown up in my face. They work so very well, except that there seems to be some bizarre memory corruption. Maybe the mutex lock() call is non-blocking. That might be a cause. Must check return value more closely.

Jeff is working on finalising barges (wagons, ships, magic carpet, etc). If I can fix the audio streams, and we can get sound-effects in there, which looks like a real possibility then we'll be feature-complete on the next release. Wooo!

We've crept back up onto the front page of Sourceforge's Most Active list, just below FreeCraft. Working on this project is so much fun, that I don't really care either way. I just wish I had more time to do it. An hour or two over my morning coffee satisfyeth me not so much.


Xfree86 4.0.1 debian packaging is started, I am told. I salivate with anticipation.

Myself and Paul are corrupting Justin to the ways of ADOM (Good lord, ADOM's going commercial?? Eek! Well...good luck to them, anyways)

"X must die. Linux is shoddy" - Maybe. But it's what we have at the moment. Poorly engineered, buggy, badly designed operating systems and UI's are the norm. I daresay they will all improve, regardless of their commercial or free status. We all drive each-other. And militance is everywhere. Things get louder as they pass into and out of the fringes of mainstream. The noise will come from other parts of the field as things continue to jockey position in the public mind. Shrug This too shall pass. What operating system will you be using in 40 years? Whatever it's name is, it won't much resemble what we've got now, I figure.

DVD - Hmm. I should have gotten a DVD ROM before January 1, it would seem. Word is they're all internally region-locked, and (of course) half the stuff I want to play is only manufactured in other regions. Grump. I don't doubt that somewhere in Australia there are units being sold that aren't internally region-locked. When I find one, I'll buy one. Until then, I think I can miss the scene.

Broadcasting - Our Minister for corporate communications puppetry, Richard I-can-bore-the-socks-off-a-stone Alston, as a followup to the internet censorhip act, would apparently like to have the ABA class streaming audio and video as 'broadcasting' and require providers of same to have a broadcasting license (and no, you can't have a broadcasting license, we're not making any more for the next 6 or 8 years). Quite whose tune he's dancing to today is a good question, though just occasionally he is able to have stupid ideas of his own. This could be one of them.

Game developers in Oz appear to be having trouble getting and keeping their staff. This is apparently attributed to the skill-drain (which is, I understand it the new term for brain-drain). It's not unique to their industry...apparently they have no idea why perfectly good coders would go to work for other companies that treat them and pay them like human beings, when they could stay on and get treated like scum at poor pay. Maybe they'll learn.

A little ranty today. Maybe that's a good thing. Not enough sleep, and low-grade sleep at that. Time for more coffee.




v0.35 released. Jeff's back at the barges, and we're targetting feature completeness. Not far to go now.

Diablo II

What was it we all said about Diablo I? That it's Rogue with Graphics and Sound and a bit more of a story? Yeah, that...a twenty year old idea dressed up in glitz. See? Glitz really is important to some degree, much as we would like sometimes to pretend that it isn't.

Well, Diablo II is Moria with glitz, more-or-less. A few little tweaks and the thing holds your attention like a blonde with a glock 17 (vary mental image to personal gender and legginess/beefiness preferences)

Voice acting: Of course, the voice-acting is just as bad as Diablo's...terrible. I can't decide whether people are reciting loudly and slowly because they feel that their target market cannot read the supplied scrolling text or what, but it makes each speech sound terribly, terribly pompous. (There's a couple good ones, where the voice actor appears to have accidentally managed to sound like a human being saying something appropriate to a situation, and not tried to sound like the voice-of-god pronouncing doom upon the sinners. Those few clean scraps of vocal really stand out and make me smile)

Cinematics: Beautiful. Those fire imp things in the intro movie? Magic. This is Blizzard, right? Much crafting and polishing. The voices are better there, too :)

Overall: This is The Big Black Hole Of Time(tm). Just getting too close to it will cause impromptu relativistic effects that will distort your personal space-time reference frame, and ensure that your friends, relatives, and assigned duties all get old without you. (God help you if you pass the event horizon) I'd like it better if it was an RPG, perhaps, but I think a major part of it's charm is that it isn't...it's a glorious arcade/roguelike romp with graphics and more character stats...and more kinds of magical dingus than you can throw a Sand Leaper at.

It's got things that suddenly appear out of the dark and scare the snot out of you. It's got sound and graphics. It's got random generation. It's got a variety of playing styles depending on the class you choose. Even my father would play this... Beware! Beware!


Brian: Okay, here's the deal. Everyone who files a release-critical bug on 3.3.x, you send me their names, and I'll kill them. That way, I figure we can all get 4.0.1 a little sooner, and start filing release-critical bugs on that :)

Thanks for the news. Will cause much rejoicing around the office.


Heart troubles to cap off the mess of the weekend. Carefully staggered around the office, leaning on things most of the day. By afternoon, I was able to stop leaning on things for support, and people stopped saying things to me like, "You really look like shit, you know that, Dancer?"

Oh...and of course, the timeless classic that I keep hearing: "Your health is more important than anything. You should go home." Yeah...until you need something done urgently...then my health can take second-place, right?


Cooking up a better communications model between MIDI drivers and the mixer. Heck, I can actually use it to maintain multiple input streams into the mixer, but that would be expensive memory-wise (but possibly useful...under the current system you can't cancel a sound. Once it's mixed it's mixed. There's also no clear determination about when a sound is finished [Though I have figured a way around that]...on the plus side, memory use is a constant, and there's no real limit to the number of sounds you can mix simultaneously, other than the CPU which is not heavily occupied by a mix)

Adding streams to be mixed would allow us to cancel a stream any time, or possibly even indulge in submixing at differing volumes....but since more memory would be used (buffers per stream), we would have to place some kind of upper boundary on the number we can permit. Hrm.

BTW, no, I'm not any kind of an audiophile. Just a hacker and a geek.


Migraine through the day Friday. Less obtrusive Saturday. Still lurking in the background Sunday. Back to work Monday, after a weekend of miserably poor sleep, little rest, and considerable amounts of pain. Did I mention I had a very stressful week last week?

I must not make crude hunting pictures on the walls of my office with the blood of innocent co-workers

This will be tricky....


Another release in the pipe (v0.35). Although much remains to be tested, it's very nearly feature-complete. Although I am planning on rebuilding the Usecode_value class as a proxy to a polymorphic vector. That would make operator overloading rather tricky...but I don't think this class requires much of that. It promises to break lots of stuff first time round, but if anything runs at all, then it's right.


  • Jenn's in the Diablo II pit.
  • Want Xfree86 4.0.1. Don't want to abandon large chunks of debian to do it. Hrm.

Still necessarily silent on this front.


Still minimalist here, with some variations:

  • Picked up Planescape: Torment. The price finally dropped low enough to fall into my comfort-zone. Enjoying it. Gameplay is simplistic, but the text is well-written and copious. Tried a daily WINE build on it for fun. I was impressed. All the intro movies and the main game menu ran flawlessly, without jumps or jitters and at the same subjective speed as under windows. Loading a game almost worked, but it died when it tried to actually go into play mode. Much progress.
  • Python coding continues apace. I've been able to condense hundred-line perl scripts into 10 and 20 line python scripts that are trivial to read and maintain. Still getting to grips with some of the ideosyncracies of the lingo, but I'm no less impressed by the whole methodology that the language brings with it.
  • I note with some delight that XFree86 v4.0.1 is out. I slaver and drool and salivate in anticipation of it being debianised. I wants it, my precious. What d'you say, Branden?


Did a brain-dump of a subsumption architecture for AI in the game. Quite long and quite rambling, and I think it will have a few issues in implementation, but I also think it will work. Had a critical look at game AI in a number of games and was surprised at just how weak they were. 'Barely adequate within the environmental framework' was the phrase that came to mind. Which gives you some clues about the very scary ways that my mind works in.

No feedback on the braindump yet, but with the length of it and the timezone differentials, that's hardly surprising. Note that I don't allow that some of the recipients may not fully grasp the whole concept more or less instantly. That's another way my mind works. Not understand something? Good lord! That would only be because you haven't been given the information yet.

Rule 1: Nothing is hard to learn, unless you think it is

On the downside, in exult, it appears a number of constants may have been hard-coded into the engine. Bad, naughty, wicked Zoot! Must create a framework where we can abstract those into a separate data file, so Jeff can stop hard-coding them into our engine.

Talked with jeff about using multiple image buffers for display. Terrain and characters rendered onto buffer 1. Weather effects onto buffer 2 (we have clouds and rain and lightning now). Gumps (a term that refers to all the dialogs, books, signs, inventory screens and so forth) in the third. Then blit them all together for the final output. As it stands, when you're (for example) travelling northwards, all the rain ends up crowding to the southern edge of the screen. An odd effect, I must say.

Our Mac port appears to be minimally functional at the moment. I believe that now makes it: Win32, Linux, BeOS, and Mac. Max (our appropriately named Mac porter) is bouncing around the SDL newsgroup addressing all manner of things. We're so proud :)


Thinking about the next thing I want to do, after Exult. I want to do an open-source X-Com style game. I've got some hefty revisions and additions I want to cram in, including scriptable, branching stories, expanded strategy, and a new 'treeless' tech-tree concept that I'm still nutting out.

Just for fun, I wrote a basic engine that can display tiles from XcomIII: Apocalypse, and can mix and play the sound samples. It's crap, but it was just a proof-of-concept for the doing of it.

Feedback if you dare...

32 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!