Older blog entries for elanthis (starting at number 44)

ZMP

The Zenith MUD Protocol draft is now officially available. Still just a draft, but it's out there.

I've yet to have any negative feedback on it (except for the original name, whose acronym was SMP), so I'm quite hopeful the protocol will be popular.

Game Design

I've been put in charge of pulling together a gameplay spec and final storyboard for the Angry Pixels game project. That is, I'm like the ditor; I don't actually come up with the final concepts, just help everyone get it pulled together. This is good, because we rather hadn't bothered previously with this, and we rather needed to.

Hopefully I'll do a less lame job on this than I have for them otherwise. ^^;

UNIX Philosophy

Most everyone here should be familiar with Programs do one thing, and do it well. I think I realized why so many apps fail on that these days. In my AweMUD work, I had started looking at some of the needed features I hadn't implemented yet. One such feature was a reporting DB; for things like bug reporting, player abuse reporting, etc.

I spent a couple hours writing some DB interfaces; it ran off a simple text file, with a few methods for adding, querying, and removing entries. Eventually I realized the flat text file just really sucked for that work.

So next I do the smart thing, and start looking for some decent DB libraries. I wanted something BSD or MIT licensed. I found SQLite, which I'd looked at before, and thought it the perfect fit. Another hour later, I had a basic reporting system. The file storage was excellent, but the features rather lacked. It was a pretty piss poor bug/issue tracker. As I was adding the mail feature (to notify admins of new entries), I realized it would be pretty easy to just write a Perl script that took mail sent to a particular address, and insert bug/issue reports into a real issue tracker. And if I could do that, AweMUD didn't need it's own built in tracker.

I see where I went wrong. AweMUD is a MUD server. That's what it does, that's all it should do, and it will do it well. The problem I had, and that many others might be having, is that I thought that bug/abuse/etc. tracking was one of the things a MUD server has to do. If players can't report stuff from in the game, they might not bother at all. They need to be able to report stuff, but it isn't the MUD server that has to do all the tracking.

One just needs to remember features like that can, and should be, implemented externally. Let the tools work together. The only downside I see is that a complete AweMUD installation may take a little more work now, if you want the reporting abilities to work. Ah well.

Wireless

Wee, I got my laptop working 100% now. I am happy Sean. ^,^

Weather

So I'm thinking of how best to simulate weather in AweMUD. I have several needs:

  • Different climates.
  • Separate regions with similar climates but different weather (i.e., two deserts, one having a sand storm, the other having normal sunny dry weather)
  • Variance in severity of weather.
  • Configurable weather patterns.

I have most of it figured out. The only hard part left is the pattern selection. I.e., if it's current thunderstorming in a temperate region, what algorithm should I use to pick a severity in a pattern? I.e., how should it decide if it should start moving towards severity 1 in the Sunny pattern, severity 3 in the storming pattern, and so on?

Laptop

Installed kernel 2.4.22-pre2 on my Compaq Presario 700 US laptop. Amazingly, power management (ACPI) works excellently. The fan is off most of the time, the machine only gets warm (not burning hot), and works fine.

Except, that is, for my wireless PCMCIA card. I consistantly get IRQ conflicts from the orinoco driver. With the stock RH9 kernel, the wireless card worked perfectly.

Searching online, it seems to be a bug in kernels 2.4.21 and later; many people on many different machines with (and without, iirc) ACPI installed get IRQ conflicts from PCMCIA devices. I've yet to find a resolution.

When I'm in the mood for hour long compiles again, I might try finding a recent ACPI patch for 2.4.20 and seeing if that works. All I need is the ACPI working for power management; I don't need any other new features from 2.4.21 onward. Or perhaps FreeBSD 5.1 will work; 5.0 worked with the wireless, but ACPI support was less than stellar (no thermal control that I could tell, at least not on my notebook model), and the sound chip wasn't supported properly.

Still, the few hours I spent on the porch today trying to get the damnable wireless card working were quite enjoyable. I can't wait to be able to sit out there while using the notebook productively. ;-)

Forums

The web forums on my employer's website have become incredibly popular lately. Tons and tons of residents discussing (read: bitching and yelling) about variuos issues. Amazingly, all on topic issues, too!

The sudden burst of usage, of which are several technically inclined people, have kept me busy all day. I've found now demands and need for several features that weren't there yesterday, like automatic signatures, easier sign up, stale topics, better quoting methods, and more. It's actually fun. Or was, anyways, until I finished all those featuers. ;-)

Glade

mx: You don't need to generate code from Glade. In fact, you shouldn't generate code from glade. Simply use the XML file and libglade. Libglade reads the glade XML file at runtime to build the UI. This makes tweaking the UI very easy (no recompilation), and is fully language agnostic; most any language that has GTK bindings also has libglade bindings.

People

Do most programmers have a seething wrath for people who are not only inexperienced, but believe they know everything under the Sun?

I swear I waste too much time arguing with people like that. I start out trying to give them useful facts/help, perhaps correcting assumptions or misinformation of theirs. Then I just end up getting my decade and more of experience thrown in my face.

It probably doesn't help that I get rather, well, mean, when people act stupid. Not in that they don't know something (nobody knows everything), but when they refuse to accept corrections, or otherwise do foolish things. For example, to constantly bash Java over and over using very inaccurate "facts" to do so. (Why I waste time defending Java of all things is beyond me; I just hate people propogating lies, I guess.)

Debt

I am now officially $11,000 in debt. For my silly truck. On the upside, the payments will be smaller than they were while I was leasing the vehicle, adn I can change my insurance around a bit now to reduce those payments too.

Coding

There is always too much to do. :(

Simple MUD Protocol

I started writing up the draft specification for the Simple MUD Protocol (or SMP). Ya, I know, SMP is already a rather high profile acronym in computer science - but we're really running out of acronyms that aren't used a lot. Anyways, the latest draft is online here.

The draft is maybe 60% done. The actual protocol specification done, the requirements/discussion part (i.e., why did I design this) is done, and a whole section on implementation ideas/notes is done.

The remaining bits are (besides fixes/cleanups) are the package/namespace definition, and an actual working sample implementation coders can plug into their MUD codebases. I'm planning on getting this document all done before putting anything truly public (I think of Advogato less as public, and more as a group of friends; weird, considering I don't personally know anyone here).

I'd love any feedback from people experienced in network protocols, to let me know if I'm just smoking the peace pipe in regards to this thing or not. General style/typo/etc. comments/suggestions are always welcome, as well. ^,^

MUD Fascination

I'm curious what draws people to MUDs. Or, to be more blunt, what draws ****ing stupid people to MUDs. As can be found on Kyndig, I've ranted a bit about this before.

As you can also see on the above site, people with the worst language and communications skills imaginable seem to be fascinated with the idea of making their own text-based MUD. Why would someone who spells, say, appreciate as apreceat, possibly want to make a text-based game? They obviously don't have much respect or love of language.

And before someone says, "But perhaps English is not their native language, Sean, and the MUD they make will be in their language, so their English skills don't matter," let me note that most of the people making those posts also seem to want it to always be based on DBZ (Dragonball Z), and to have lots of fighting and "kewl" loot, etc. - they sound far more like the stereotypical stupid American kid, than a non-English speaker merely trying to communicate in a language they have little experience in.

MUD Coders

Continuing on my MUD rant, I also wonder why so many completely inept coders are drawn to MUDs. Some of the more popular MUD codebases around are so full of bugs and major security holes it makes me sick. The code is near unreadable, and usually obviously written by someone who really wasn't comfortable with C (that being the language I assume they were trying to write in...).

The number of "I need hlep pleaz now kan u right teh code 4 me!?!!~" posts I see on MUD boards and maillists far outranks the number of similar posts I see on non-MUD coder channels. Hell, most of the beginner coder boards I've browsed thru had more experienced and intelligent people posting help requests.

I am perhaps simply being overly critical of the MUD community. Certainly, there are tons of very bright coders in the MUD community, many of them far better than I. I just can't help shake the feeling that the MUD community simply seems to have many more vocal, inept idiots in it than other communities I've participated in.

Heck, I almost wish all I had to deal with in MUDs was Bowie (thanks for reminding me of that idiot, xach - I had almost managed to repress all my memories of him from the GNOME lists. ;-)

AweMUD

Managed to be fairly productive on AweMUD lately. Working MCCPv2 support, a new action system, and more. This thing might actually get up to a truly usable state soon. ^,^

Angry Pixels

Having trouble hacking on the code. My 3D math experience is, well, limited to copying crap out of books. And almost everything I need to hack on needs at least a tiny bit of 3D math experience.

This has resulted in me actually being a bit afriad to touch the code, for fear I'll majorly screw it up. On the upside, I know exactly what I need to do (the process), I just have to get a bit more familiar with how to get it done (the math).

Work

Meetings. Lots of meetings. Looks like they might start keeping me busy for a while. Which will seriously cut into my AweMUD hacking time. It's all website update stuff too, which is my least favorite job function.

On the upside, these meetings have brought me to the Recreation Center at the Township, where I've found out there are actually other employees near my age at the Township, who are female, who are cute, and are also geeks. This is a good thing for me. ^,^

Inline Scripts

Something I've been against previously is the embedding of Scriptix scripts inside of the AweMUD zone files. I've recently (last night) changed my mind on that, and today implemented the feature.

Before, say you needed a script to trigger on some event in an area in the MUD. You'd have to define the event trigger in the area, and give it a script function name to call. Then in a script file you'd have to define the function, make sure you had the right argument list, and export the function publicly (so the event system could find it). This polluted the function namespace, and didn't deal with clashing event function names well at all.

Now you can just put the script right in the area file. No need to pollute namespaces, or worry about clashing functions, or even about remembering the exact argument list to use. This is even better for small event scripts, since it was too much work for the effect previously.

The only problem with the current implementation is the wasted memory; the source of the script is stored in memory with the event, so when it's saved back to disk it is available. Compilation happens using a temporary file. I'd like to just use temporary files to store the script body, and not use up system memory; getting permanent (or semi-permanent) temporary files is a pita, tho; I'm just using tmpfile() for now for the compilation.

In any event, with how easy it is to drop in small event scripts now, I've already made the very small example world in AweMUD seem a bit more alive. I'm quite pleased.

Releases

Released new versions of AweMUD and Scriptix. Very pleased with myself for getting work done on these lately. ^,^

Next big task up for AweMUD is getting the online editing/building working well. It's only half-functional currently, and more functional would be more useful to the MUD builders.

MUD Protocol

I'm also looking at the various out-of-band MUD protocols, for things like enhanced MUD client features. (i.e., showing health bars and such.) The current protocols I've found seem to have been designed while under the influence; this includes both MCP and MXP.

I'm thinking that since the MUD already runs over telnet, why not just use the existing telnet protocol to its fullest? Instead of inventing a crack escaping protocol like MCP, or a weird moded protocol like MXP, just use the telnet sub-request/option codes for escaping into "command mode."

The command mode would be, simply, a command name and a list of parameters. The command and all parameters would be separated by NUL bytes; binary data can just be encoded. (Who needs binary data here, anyway, in a MUD protocol?) This makes it very generic and flexible, since it is now basically an RPC framework; you can use it for things as simple as setting colour (command: "colour\0red") or sending tell messages (command: "msgfrom\0bobby\0what's up?"), to as complex as online editing (command: "setroom\0forest\0title\0Dark forest").

The protocol is easily coded to work both ways, since both client and server need to support telnet anyhow. It's gonna be great. When I get around to it. ;-)

25 May 2003 (updated 26 May 2003 at 16:35 UTC) »
Music

Bought a couple new CDs at the mall today: Celtic Women, and Kashmir: Symphonic Led Zeppelin. Both are very good. The former I bought as I enjoy Loreena McKennit, who is celtic-music inspired, and thought I might enjoy it. (Which I do.) Symphonic Led Zeppelin is something I've wanted for a while; my last attempt at purchasing it ended up in me getting a String Quartet tribute to Zeppelin which, while good, is nothing compared to the beauty of a full symphany playing Kashmir or Battle of Evermore. ^,^

Coding

Lots and lots of Scriptix work. Still a lot more to do. But the compiler is largely no longer crack-inspired. Which is a Good Thing(tm).

Future work will be based mostly on cleaning up the internals. For example, variables in a function call currently make use of a special variable array. While it's speedy, and made compiling a bit easier, it's a bit of a kludge. I'm thinking to instead just store variables on the normal data stack; which means of course I need the compiler to work out allocating space, and knowing which location to peek/poke for the variable values.

Also still want a C++ binding API, similar to Boost Python. I've still not figured out how to make templates work like that for me; C++ can be a massively tricky beast like that. As great as generic functions are, I think a more powerful preprocessor would be a better idea - imagine being able to define new operators or syntactical constructs (like a decent foreach implementation to the C# 2.0/Scriptix one) as one can do in other languages. I wonder how hard it would be to write such a pre-processor? I'd probably need a full C++ parser to do it right.

Socialization

The other night I bothered to stop being an anti-social dink and contacted an old friend from high school. We hung out for a few hours earlier today; ran out and got lunch, stopped at the mall.

Had a lot of fun. Felt a bit awkward tho, not sure why; either I'm just really not used to hanging out with women anymore, or I managed to annoy her greatly. (Which wouldn't be surprising.) Still, hoping we can do it again before she leaves back to school - cool person to hang out with. ^,^

Best friend was supposed to call this weekend to hang out, but I guess he's stuck working. He works in a park, so the holiday weekends tend to be rather busy for him.

X2

I've seen X2 at work. My boss doesn't suffer from my moral integrity in regards to pirating. I'm fully planning on seeing it in the theatre tomorrow tho. Seeing how good it is (despite the low-quality; it was some guy with a camcorder in a theatre, basically), I'm making the family see the first X-Men (which they hadn't yet) so I can take them to see X2 Sunday.

I'm really not much of a sci-fi fan, but the X-Men movies are pretty awesome. I think it might be because the "mutant powers" are so much closer to magic than anything you could realistically attribute to physical mutation.

Especially ones like Storm - Halle Berry would be awesome playing one of the Seven Sisters in a Forgotten Realms film. (Heck, one of them is named Storm; but the X-Men storm reminded me more of the Simbul.) And, btw, I've heard tell that there is going to be a Forgotten Realms TV series. I really hope the people responsible for Hercules and Xena have nothing to do with it tho; the only good parts of those directors is their friendship with Bruce Campbell. ;-)

Anyways, X2 was loads better than Matrix Reloaded. The Matrix sequel was a hallow core lacking everything except special effects; and then those weren't even that impressive. Doubting another movie will be so cool in my mind as X2 until Return of the King is out... ;-)

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