Pascal's TechBlog

Wednesday, November 30, 2005

My patches got commited!

My patches for Quake 3 just got commited to the Subversion repository, revision 390 of the code now has them included.


Quake 3 Architecture

Since I've been working a bit with the Quake 3 codebase, I've seen how (relatively) clean it was written.

One major merit of the Quake 3 engine is that it has a Quake Virtual Machine which is similar to what the Java VM does, making part of the game code totally platform agnostic. Instead of designing a new language like the folks at Sun did, Id software chose to stick with good ol' C. One major advantage of this approach would be that game code written for the QVM would also still be compilable with a proper C compiler to platform native binaries. For generation of the QVM bytecode Id software took the LCC retargetable compiler and wrote a QVM bytecode generation backend for it. Very cool stuff indeed!

On a similar note, I've just released a new version of the codebase for Breezy Badger. Now it has my patches enabled by default, to disable them remove the pak_pb.pk3 file from the baseq3 and missionpack directories.

dosemu terminus fonts

After fiddling a bit with dosemu, I quickly started using xdosemu, while starting xdosemu I got the following error messages:

ERROR: X: Unable to open font "vga"ERROR: , trying "vga"...
ERROR: X: Unable to open font "vga"ERROR: , trying "9x15"...

Once DOS was started, applications which use ASCII characters above #127 weren't displayed properly. ASCII characters above #127 were commonly used to draw primitive windows in text mode.

After a lot of trial and error involving commands like mkfontdir, xset and fc-cache, no results were yielded...

Finally I decided to install the xfonts-terminus-dos package, which solved all of my issues with the click of a button!

Monday, November 28, 2005

Hacking on

Source code is a beatiful thing, kudos to Id software for releasing their Quake 3 code once more, and kudos to the people at which are really getting the Quake 3 code into shape, they have made many improments along the way:
  • AMD64 support
  • FreeBSD support
  • SDL for cross-platforminess
  • OpenAL sound
I always missed a 'Very High Quality' initial video options template in the original Quake 3, the 'High Quality' ivo template, uses a screen resolution of 800x600 which is pityful by todays standards. Anyway I added my own 'Very High Quality' ivo template, which is the same as the 'High Quality' ivo template except it uses a 1024x768 screen resolution, a texture quality of 3 and a geometry detail of 2. Even the most low end (but current) video card will be able to handle the 'Very High Quality' ivo template easily.

In the process of adding the new ivo template, I encountered a hardcoded value which turned into a bug while adding the new ivo template, which I fixed along the way. I also noticed a suboptimal for loop which I optimized.


Quake 3 1.33 r386 i686

Friday, November 25, 2005

RealVNC 4

It seems the RealVNC 4 packages in Breezy are broken. I wanted to use RealVNC to record a new Corbicula screencast using pyvnc2swf, but somehow I kept getting an error about not having a 'fixed' font, anyway the following solved the issue:

# sudo cp /etc/X11/xorg.conf /etc/X11/XF86Config

Wednesday, November 23, 2005

I'm LPI Level 1 Certified!

I just got word I am now officially LPI Level 1 Certified!

I passed my 101 exam with flying colors, although 102 didn't go quite so well I still had some headroom left on that one as well.

I was surprised to get my test results this early, on the exam they mentioned a four week waiting period. It has only been 13 days since my exam, hmmm, well the four week period is probably just the maximum during peak exam periods...

LPI ID: LPI000098667

The Art Of Deception

I just finished reading The Art Of Deception by Kevin D. Mitnick. It's an excellent book, really! The situation sketches are (mostly) very plausible, and at the end of every sketch advice is given to prevent the social engineering attack.

Mitnick clearly explains how the following attack vectors are used to coerce people into doing stuff for social engineers:
  • Authority
  • Liking
  • Reciprocation
  • Consistency
  • Social Validation
  • Scarcity
The last chapter contains a listing of useful information security policies, which can help mitigate intrusion risks when properly implemented. It's all about balance, security measures shouldn't be too bothersome, or employees will start circumventing them for speed and comfort.

If you are already kept up at night by worrying about potential security issues, this book will drive you mad, or if you really implement the given advice, it might restore your sanity.

Monday, November 21, 2005


Inkscape is a great application, I did some concept art for Ubuntu Certified Workstation hardware:

Notice: This is unofficial artwork and not approved by Canonical!

PIP Isn't PowerPoint

During the past couple of weeks I coded a simple presentation tool, which uses a plain text file as it's input source, it's basically an improvement notepad, with presentation capabilities. Note that it's only a very rudimentary tool, and ... it's win32 only.

To make matters worse I coded it in Delphi which is extremely unportable, most of the code was written at night time, so beware: looking at the source code without taking proper precautions may induce temporary blindness! Results of prolonged exposure are unknown! You've been warned!

Initially I wanted to cleanup the source before releasing PIP on the web, but I've lost interest, so here goes:

Sunday, November 20, 2005

Corporate Branding

One of the things I quickly noticed about Ubuntu (and most Linux distributions in general), is that they don't allow for much corporate branding.

Microsoft Windows has had this capability since '95 (IIRC), just place a bitmap called oemlogo.bmp and a textfile called oeminfo.ini into C:\Windows\System and voila...

GNOME doesn't have anything which allows something like this... This could easily be implemented in the 'System' menu, with a menu called 'About Compaq', or the likes...
A simpler way to do something like this would be to modify the GDM greeter, so I fiddled a bit with the Ubuntu Human theme and an official ATI logo:

Friday, November 18, 2005


I've been helping my dad moving his files from an old MS-DOS based 386 to a newer Athlon Thunderbird running Ubuntu. One of the issues I encountered was the fact that the old Lotus Symphony files couldn't properly be opened by Calc. So I had to find another solution: dosemu.

Salvaging the old files (from the old 100MB harddisk):
# dd if=/dev/hdc1 of=~/olddiskpart1
# mount -o loop -t vfat ~/olddiskpart1 /mnt/tmp
# cp -R /mnt/tmp* /var/lib/dosemu/msdos
# chmod -R 777 /var/lib/dosemu/msdos

A reference to the old files (in /etc/dosemu/dosemu.conf):
$_hdimage = "msdos"

A couple of essential printer settings (in /etc/dosemu/dosemu.conf):
$_printer = "DeskJet-3820"
$_printer_command = "lpr -l"
$_printer_timeout = (20)

And the legacy application worked like a charm!

Saturday, November 12, 2005

Corbicula anti virus: Fixing bugs

I noticed two bugs in Corbicula over the last week, I fixed both of 'em:
  • The Documents bookmark was always displayed in the Scan Target ListView, whether or not the ~/Documents directory actually existed. Now a check is made to ensure ~/Documents exists before the bookmark is added to the list.
  • Corbicula interprets the ~/.gtk-bookmarks file to add the user's bookmarks to the Scan Target ListView, the FileNotFoundException is now caught properly and an empty bookmarks list is returned when the ~/.gtk-bookmarks file is not found.

Wednesday, November 09, 2005

LinuxWorld 2005

I visited LinuxWorld 2005 in the Netherlands today. LinuxWorld was hosted simultaneously with InfoSecurity and StorageExpo, but the LinuxWorld part was really dwarfed by the InfoSecurity and StorageExpo parts. Generally most stands didn't have anything really interesting to offer.

I did take the opportunity to take my LPI Level 1 exams at LinuxWorld. Both the 101 and the 102 exam were very doable. I really need to acknowledge the fact that the LPI folks organized the LPI exams very well. They even had a can of water for everybody (included in the exam fee). I think I managed to pass 101, but 102 didn't go that well, I'll probably just make it, but I won't know for sure for 4-6 weeks. Bummer!
Near the end of LinuxWorld I ran into some other folks of the #ubuntu-nl channel on We had 'dinner' together:

Thursday, November 03, 2005

Two Statements Multiple Choice

I had a management exam yesterday. The teacher which taught the course decided to use the two statements multiple choice style of questioning (for the entire exam). It basically works like this:

Statement 1
Statement 2

A. Statement 1 is true, statement 2 is false
B. Statement 2 is true, statement 1 is false
C. Both statements are true
D. Both statements are false

Using common sense, it should be very clear, that this kind of questioning doesn't give a good representation of a student's knowledge. I investigated the issue further and wrote a simple exam simulator to create empirical data:

The X-axis represents the actual knowledge level of a hypothetical student, so a 700 promille on the X-axis of the graph means the student factually knows the answer to 700 promille of all statements and has to guess the remaining statements. The Y-axis represents the actual grade that would have been assigned to the student in question. Taking a look at the above graph the purple graph represents an ideal world without guessing, the blue graph represents the two statement multiple choice examination style, and it shows a delta of up to 250 promille below ideal grading. So this style of questioning is hardly fair at all.