Older blog entries for dancer (starting at number 36)


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...


Grumble, nothing I can reasonably say.


life: command not found

Not currently having one, really.


Ah, we're on firmer ground here. Simple combat is implemented. Characters chase each-other around and hit each-other. From an AI point of view, it's rudimentary. Thinking about an autonomous goal-seeking framework. A basic subsumption architecture, if you will.

Quite a few people seem to be finding Exult 'inspirational', and are starting to push effort into lapsed projects. To me, that's one of the big benefits of Open Source...it encourages people to do good things, and write more things so that we all have more stuff to choose from.

And of course, their being inspired by us, inspires us in turn. A good cycle.

Some of these people are also working on projects that interest me. Now, if only we could cram more time into a day....


XFree86 4.0. Seems like every time I turn around at the moment, I bump into something that requires XFree86 v4.0 and the latest drivers for nvidia. Hrm. Of course, I use a debian system, and I don't want to blow all the packaging by wedging it on.

Feeback - if you will


Well, lookee. A dilemma of ethics.

Paul can express his honest opinions about the company and his work environment in a public forum - and diary entries or no, that's what these are.

I'm not as lucky as all that. I'm the old boy. For at least two reasons that I don't feel I can reasonably mention, people at the office who have problems come and tell me about them. They tell me what has (or hasn't) happened, how they feel about it, what they think, make a few predictions about the future, and occasionally ask me to make things better.

There are other people that they could go to, but they don't (for the reasons I failed to mention above). Granted, it's not everyone, but it's enough. That in itself is probably a good reason for my not saying any number of things about the place I work, for good or ill.

Another is that I would most assuredly offend some people if I followed my natural instinct to say what I think. Some days, I wonder if it's possible to make any third party reference to someone (good or ill) without risking offending them. Most days, I think it isn't. At least I can't risk offending my boss. I haven't got one. I'm an autonomous unit in the company, and just about the only one left. That's probably why people come to talk to me.

So, where does that leave us? I work for a company. It does company things. I have a team of people who do all the things I used to do, while I now concentrate on helping them do it, in the new environment. This takes up the major portion of my life.

Outside work

I have three friends outside the office who are not work- related, and a number of people I know well enough to nod at. I'm not sure that any of those would accept an invitation to coffee, though.

Of the three friends, one I knew before I moved here. The other two are friends of Jenn who I get on well with. I've not really been able to find any time for friend stuff since we moved down here.

Doesn't leave a lot of options for discussing things on a daily basis, does it? I have a lover, but that's intrinsically work-related, so I can't talk about that, and it would probably be both dull and bad-mannered to chatter about the details.

That brings us to Open Source

I actually turned down a request for help on a project because it's linked to the Qt library. Is that small-minded or what? Nevertheless, I did it. I don't use Qt, or contribute to anything that involves it for very complicated reasons. I'm not a political animal. Ask anyone (except anyone who's ever role-played with me...they don't count for the purposes of this discussion) and they'll tell you that.


Iterations and increments. "Patience and order...sequence and time". Feel free to try to place the quote.

Work is proceeding steadily. Weather effects are beginning to happen, and conversation code is getting cleaned up.

I've got my C++ jackboots on doing code-nazi things. While the discrimination logic for -Weffc++ is a little iffy, you should really try compiling your C++ code with it. It generates more horrible warnings than an opposition party before a major tax-reform implementation. (Some of you know what I'm referring to).

Feedback - an it please thee


We've made it onto Sourceforge's 'Most Active' list on their front page! Wow! This is attracting a fair bit of attention from users and we're getting lots of "This is way cool" and "Thankyou" emails. Very pleasing to the liver.

I reckon we've got about 70 percent of the game mechanics implemented. Combat's being worked on, as is the spell system, pathfinding now more or less works. Scrolling is being reworked to make it more like the original. In fact, we're half adding stuff at the moment, and half fine-tuning to make what we've implemented match more closely with the original.


Spent about three hours this-morning dealing with a panic bug in production. Ick. Didn't have time for a coffee until it was over. Much running around and screaming. Seems to be a subtle bug in one of the daemons. Ultimately, restarting that daemon on the two (of 30) afflicted boxen worked...though the bug appeared to be in a completely different (non-restartable) process for quite a while, until a process of elimination tracked it down.


Everyone I know who's tried it thinks it rocks. I tried it. It rocks.


Load/Save games working. Spell-book/magic system underway. Map display done. Pathfinding all over the place.

We've come a hell of a long way. I'm constantly surprised by how far, but I expect you've all guessed that by now.

We discovered that the audio was done by the Miles Sound System (v2.14). Tried to get information, and failed. Then the author released that version to the public. Been looking at the code. Horrors. Lots of assembler, some binary-only drivers and DOS code with far pointers. I've just looked through the code, but it looks like being a long road.

Still, we have something to work from, and something is often better than nothing.


Long delays. Mostly because there are all sorts of things that I really don't want to say in a public, or semi-public forum. Hence a delay while I saved some stuff up.


Acceptable enough to keep me there, for now. If I can avoid enough interruptions to actually do the work, anyway. If I can't, well, it's all a bit of a waste of time, then, yes?

Making good on my promises to Dan and the Matts about reducing hours worked. Got it down to about 45 or so per week, which will probably have to do.


And now we are six, with conversions for the Mac underway, and a preliminarly exploration of BeOS requirements. Been churning through the code, being Pedantic-Guy(tm), adding consts and virtual keywords, and compiling with loads of warnings.

While it shouldn't really be important, we're advancing steadily towards Sourceforge's top-projects list, being the 45th this week, and 65th of 'all time'. Like I said, it shouldn't matter. But it does a bit. In that it is pleasing to the soul.

I wasn't even aware that g++ had -Weffc++ ... delightful!

More and more of the plot-critical things are being implemented. We're getting close to doing vehicles (wagons/ships) which were on the timetable for a while back, but they got pushed out by other things.

The pathfinders work very well most of the time now, and we can plug in pathfinding algorithms willy-nilly whenever we want to, with relative ease. It's even tempting to make them dynamic shared objects, but I can't find any good excuse for it. :) OO (when used properly (which is rarer than you might think, out in the industry) can be an unalloyed joy.

Next, some kind of integrated debugger for usecode. Hmmm.


Pneumonia and general illness. Pills, potions, powders. Cold weather.

Bonus points: Friends in the USA sent us two "Fog" snow-weight coats quite some time ago. I now have a good excuse to wear mine.

27 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!