Older blog entries for jameson (starting at number 15)

Finally managed to get it working on Alpha/Linux- you can get a binary from this place, if you're interested. The page also includes rough build instructions and a link to my outdated patch. DrCode registered me as a developer just after fingolfin added most of that patch; I'll try to fix the remaining issues as soon as I have some spare time again (ca. April 2032).

Fixed the dynview display list (mostly), and released two screenshots that didn't look too broken. The new graphics subsystem definitely takes more time to render the background pictures (it uses flood fill, after all), but, personally, I like the results. Also, the actual screen update time (time spent in the Animate system call) has improved significantly (3x3 currently plays at roughly the speed of the old 1x1; if nothing changes on the screen, network traffic should be minimized when playing over X as well), and, of course, it's more scalable, but I mentioned those two things here before, so I'm not going to go into any detail here.
I still hope I'll have some spare post-christmas time to devote to the gfx subsystem, but a seminar presentation I have to prepare may take a lot of that time.

Compaq have released JDK1.2.2 for Alpha/Linux to the general public. This is an important event, since it almost obliterates one of the three platform disadvantages of the Alpha I mentioned here (or was it the Heise newsticker?) a few months ago- they were:

  • Broken g++
  • No recent JDK
  • No hw-accellerated GLX
Point #2 is only almost obliterated, since the license agreement you have to click-sign in order to download the JDK (and the form you have to fill out in order to download libcpml, which the JDK depends on), does not allow free redistribution of those things (and not re-packaging either, although the point in this is rather limited if redistribution is disallowed anyway). (Most of these things were pointed out by Christopher C. Chimelis, probably the Debian/Alpha guy, which I thought I'd better mention here.)

Anyway, regarding the other two points: cxx is quite good, if you ignore the implicit g++ namespace mangling. cxx is evil, proprietary, and binary-only, of course, but there's not much of a point in preferring a free broken compiler over a working non-free compiler.
WRT to GLX, I've heard a few success reports regarding PCI graphics cards (Voodoo 3), but AGP cards still aren't fully supported on my UP1000 because of firmware troubles (an upcoming internal API contact promised to give me an estimated date for the release of the upgrade next year, though).

AI test tomorrow. This should be fun- I like the subject. One of the few things that are more fun than building compilers or engines for 10-year-old games.

I'm out of it consistently now. People trying to contact me should probe back after christmas, in case I'm still alive (and don't rely on my answer then).

No, this is not another rant about how much gcc 2.95.2's c++ frontend sucks on the Alpha, breaks with internal compiler errors, creates incorrect function tables, cancer, famine, and a whole load of other evil things. No, it isn't- I just wanted to point out to those who missed it that the gcc steering commitee appears to be planning to put out a 2.95.3 interim release. This is great news- even though the hairs I pulled out won't grow back this way, a lot of programs might *finally* work on the Alpha. Like Mozilla. Or Qt. Or KDE. Or, of course, Exult.

Implemented and verified the new decompression method, but haven't checked it in yet. Since the new widget system is doing quite well, I'll lay off implementing the hooks from the SCI kernel calls to the widget system until after christmas.

Christmas presents
My favored present for everyone this year would be that they don't have to buy me a present. Too bad not everybody is happy with that, so we can't limit ourselves to singing and celebrating and generally stuffing our stomachs with various kinds of comestibles, much like we did with the traditional goose (or whatever kind of animal or plant you happen to traditionally prepare for christmas).

C++ and Exult
Trying to get Exult to work on the Alpha now turns into a hunt for a working C++ compiler. It's not much of a secret that 2.95.2 seriously sucks on the Alpha (fortunately, we're at least getting working, though not quite very optimal stuff when using the C frontend, but C++ ist just broken), so I tried a CVS snapshot, which appears to have some problems with its own header files. (Well, it's a CVS snapshot, so I can't really blame them for this, though this shows they still have some way to go for 3.0.0). Next thing to try will be Compaq's cxx. It's proprietary and binary-only (i.e. evil), but maybe it will work, which would put it at a distinct advantage over gcc. Oh, and did I mention gcc 2.95.2 sucks on the Alpha? BTW, welcome, fingolfin, and thanks for your help with this yesterday!

I received a few... historical documents about the SCI engine. Apparently, some Russian hackers took the system apart as early as 1992; their discoveries were put down in a series of e-mails (or, more precisely, posts to a FIDOnet discussion forum), which, by a set of weird and confusing circumstances made their way to me. Now this would be great if they wouldn't happen to be written in Russian ;-) Fortunately, Sergey Lapin (who re-implemented one of the decompression routines for FreeSCI) appears to be able to read that stuff, so we're not quite left out in the cold here :-)

As hoped (but unlike anticipated), the improved widget subsystem was checked into CVS last saturday. If I refactor any further, we'll re-write the whole thing from scratch... Anyway, the widget system, while not quite doing everything the way it's supposed to do it yet, is progressing- and it is faster than the old thing :-) (and more scaleable, of course).

Oh my god- they killed Maude! You Bastards! (It sure takes a while for US episodes to propagate over here).

Binary stuff
Thanks to FreeSCI, I'm regularly encountering new binary formats no man has ever encountered before (or something like that). My descriptive attempts for them have been pretty informal so far; but now I'm starting to wonder if there is a good formal machine and human readable description language for binary data (Yes, I know it's pretty late in the game, but there are still a few data formats used in later games we don't support, and lots of other formats that haven't been properly described yet). Of course, using a declarative attempt for binary languages has one disadvantage: While creating efficient reader programs from the declarations should be possible, creating writer programs may be either be NP-complete, result in programs that use NP-complete algorithms, or will require the language to be restricted beyond usability (compare this to the problem of creating "good" MPEG encoders).

Still, the ability to automatically generate reader programs from platform (meaning processor, OS, and programming language) agnostic description files (including automated checking) should easily make up for this...

So, has anybody heard of anything like this?

Moving slowly... I've been re-working part of the widget system from a flag-based to a function variable based system. This is relatively straightforward work, but I don't seem to be able to find the time to work on it very much lately... Still, it's almost done now, so there's a real chance the whole thing will be released to CVS in the next 10 days or so- this way I can finally focus on fixing bugs once again (Woo-hoo... I guess..). A new contributor popped up, and, with some minor assistance, managed to describe an algorithm for the deflate-based decompression algorithm required for later SCI games. With some luck, we may soon have implementations for all SCI compression algorithms.

As a long-time Ultima fan, I took the recent alpha release as an excuse to finally try Exult. It's based on SDL, multithreading and C++, i.e. mostly stuff I'm not really familiar with, so that's another good excuse to play with it :-) Unfortunately, it turns out that it doesn't work on the Alpha, so I'll have to whack it in the head a few times. Now I'm finally experiencing the joys of debugging multithreaded code... However, DrCode appears to be very willing to help me with the port, so I'm not quite left out in the cold there. (Yeah, I know, this is heresy, but don't worry, I'm not abandoning FreeSCI quite yet ;-)

US elections
For those of you fearing that the rest of the world might be making fun of the US because of this: Rest assured, we are.

EU council vs. patents
So they decided against patentability of software (with Luxembourg, Switzerland, and Austria being the bad ones this time). This is one of the rare moments where we have to be grateful that the concept of deregulation (patenting computer programs is explicitly disallowed) is something the council has yet to grasp.

I had a disturbing experience today: While discussing some intrinsics of a proposed new version of PalmBahn (A tool which retrieves railway departure and arrival tables, stores them in a prc file, and a Palm app to display those (It's specific to Germany, so I didn't think it'd be sufficiently important to be listed here)), someone who appears to understand at least the basics of programming dismissed some of my thought experiments as "too academic". I never really considered myself to be a truly acedemic type; two years ago I'd have laughed at that thought. However, his words got me thinking- while I don't think he's right in this specific case (If using undirected graphs and a weight function, plus Dijkstra (or Moore) is too academic for railway network graphs, what else is it supposed to be good for?) OTOH, he's probably right in pointing out that my thoughts have become more academic than what they used to be. While I don't think that this is a bad thing, I have also noticed that I take much longer to produce code these days. I refactor more often, sometimes discarding perfectly working code for design reasons. I guess that's one of the things that has slowed down the FreeSCI GFX subsystem down (apart from my usual lack of spare time ;-)

Only two tries until everything was merged into CVS (woo-hoo!). Haven't received any feedback yet, though. Well, I'll assume that everything is well and that all outstanding bugs have fixed themselves magically...
Seriously, I need a big bunch of time to work on this. Maybe this evening after the AD&D session (I don't think that'll suffice to give the widget subsystem the kick in the butt it deserves).

As for AD&D, I think I'll try using some of the Evangelion soundtrack as background music.

Re-wired everything for 100 Mbps. I still need to find out which of the LAN adapters is responsible for slowing down everything to 10 Mbps, though. Since StarOffice doesn't yet compile on my Alpha (haven't tried it yet, but it appears to require a recent Java implementation, and it'll probably need a working C++ compiler as well), I have to run it remotely, which is why I need/want 100 Mbps. Actually, I don't really want to run StarOffice, but I'm being forced to produce .ppt slides for a seminar. My current solution to this is to somehow generate high-res .pngs from text description files, and convert them into .ppt using SO. I still need to work out the 'somehow' part, but that should be possible using GIMP scripting.

Went to EXPO 2000 in Hannover (Germany). Mostly disappointing- lots of flashy stuff showing how great the individual countries are (I found it pretty weird that Ukraine were showing a movie depicting their military power, though). Lost 0:3 in brainball in the Sweden pavillon. That got me thinking- is it really that hard for me to relax, or was it just the caffeine?
In the Canada pavillon, they were showing the most pointless 10-minute movie ever. The US completely forgot to have a pavillon. Japan showed a few interesting concepts regarding future traffic control/automated physical delivery services, which, however, failed to mention how they'd deal with some of the more japanese traffic problems problems, like rampaging mechas or tidal waves caused by spaceships crashing into their harbor. Others, like Germany, were completely unaccessible due to the number of people waiting in line (most of them appeared to have been camping there for several weeks). Some of the African countries weren't that bad, actually- especially for someone who didn't really know a lot about them. But in the end, the only three things that really impressed me were the engineering work and ingenuity behind some of the pavillons and structures, the fact that most of them would be deconstructed pretty soon, and the number of zeroes behind the non-zeroes in the decimal representation of the amount of tax money wasted in the mis-management of all of this.

Don't get me wrong- learning about the rest of the world is good and important, but specifically targetting most of the non-written information to that part of the population that suffers from ASD (Attention Span Disorder- it's not really a disease, but, rather, a fashionable way of life) and removing or censoring critical presentations (German) isn't the right way to do that.

Merge time for FreeSCI: The new GFX subsystem goes in today. There's still a lot of old code to be changed to the new system (almost everything's broken, but it compiles and some of the more common graphical stuff already works), but I'll put it in CVS to replace the old crud anyway. Maybe people will finally start to care then :-)

This raises an interesting question- when replacing a major portion of a project, where an when should it be merged in? I decided for "in CVS and when it's almost done" this time, but maybe keeping the development process more transparent would have been better. (Note that nobody appeared to have any interest in helping with it, so I didn't see much of a point in putting it in CVS earlier).

Now what I'm most curious about is how many tries I'll need until I've merged all relevant files into CVS...

After over two weeks of waiting, I finally got my login/password for the evil ISP service. I just had to sign over my soul, which isn't worth much without net access anyway.

Started merging in the new gfx subsystem. Now that I'm half way done, I'm pretty sure my ad-hoc widget set design sucks. Well, I'll call it a prototype and start over...

Wrote the last Pre-Diploma test on tuesday. My stomach believes I'll pass. (Pre-diploma tests are required to get your Pre-diploma in Germany. It's not considered an actual degree, though. If it was, it'd be worth slightly less than a Bachelor's Degree in CS, AFAIK. So, unless I got the terms wrong, I'm now something similar to a graduate student (unless I failed the exam, of course). I don't feel any better yet, though; maybe I'll have to wait for the actual Pre-diploma to be Enlightened.)

They did it... again! Doing two weeks' worths of updates simultaneously probably was a bad idea, as it broke my woody (as you can imagine, this is a most painful experience). Apparently libc is buggy, which meant that all of the commands I needed to restore the system didn't work. ar and gzip worked fine (as did cp, but not ls...), but tar and all commands for doing remote file transfers were broken, so I had to restore my system from a different box.

Finally watched the End of Evangelion. It was more flashy than the original 25th and 26th episodes and definitely had more drama (They killed my favorite character! Those bastards! She got a pretty decent exit, though). I still enjoyed the original episodes, mostly because they were pretty expensive, but also because they were quite original in style (a character development tour de force). Both variants got the point across, though.

I finally gave in to the dark side and signed up with Germany's big bad telco monopolist's service. This is a sad day, but I need net access, and no other ISP provides that service for a fixed monthly fee anymore.

Only one bug left. Also, I decided I'd put in 'dirty frame' management before merging the stuff in.

Linux World Conference & Expo in FFM (Frankfurt/Main)
The show was much smaller than CeBit (by several orders of magnitude, actually), but it made up for that with coolness. I talked with a few people from Compaq/API (and got an API t-shirt- Woo-Hoo!), two KDE guys (for some reason, the GNOME booth was empty), and even met Alexandre Julliard of WINE fame. Unfortunately, I was late to the show, so I missed most of Linus.
One of the things that really surprised me was the amount of stuff they were giving out for free; much more than they did on CeBit (or maybe I was just too late for that one). We even got free drinks and lunch packets.

Finally got a chance to watch that show in the original US version. It's considerably better there, but I have to admit that the German synchro speakers aren't as bad as some I've heard (or maybe I'm just too used to them).
Anyway, the show, while still great, appears to have lost something in its 11th season. I can't quite point my finger at it, but there just aren't any killer gags any more. They've even started re-using some of them, which, IMHO, is a pretty bad sign.

My ISP stopped letting its 'flat rate' customers (including me) log in. This sucks badly.

Nethack problems
The "bugfixes" I did to Nethack (to which, recently, fixes for custom level monsters and altars) were, obviously, workarounds for internal gcc deficiencies. Looks like the state of Debian's version of gcc for the Alpha is pretty bad... If someone wants that patch, drop me a note.

The FreeSCI new gfx subsystem is almost complete, except for a few bugs that need to be fixed and the actual merge into the main tree (which should take a while). It appears to be considerably faster than the original system (no surprise there) while taking up more memory.

Human embryo stuff
Somehow, this reminds me of the Human Instrumentality Project (note that the boy's name is Adam, too). Is this a good thing or is it not? Well, they want to keep the boy, so I'm leaning towards "good thing" in this case. Of course, the issue is anything but trivial ethically- how would you react if your parents told you that you were chosen to live because you could save your sister's life? It's not that bad in this case, but the idea of arbitrarily letting humans choose which of a set of embryos are to live a life and which are to be discarded makes you wonder whether we're intelligent and wise enough to making decisions about life and death. Personally, I'm quite sure that we are anything but.

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