WarHammer: Thanks for the pith.

I was reading Lum’s recent WarHammer post and my eyes were somehow just sliding over it until three words registered: “Oh, god no” (What do you know, PvE isn’t all that)

I kinda like WarHammer, but that sentiment (at seeing a quest NPC) was the same I took away from my whole experience.

SVN: 4 weeks in

Generally finding the switch from Visual Source Safe to SVN a boon, but there are definitely some areas where it’s weaker than you’d expect. In particular, we’re running into a few simple ball breakers:

Line Endings. Oh. My. God. When we populated the repository, we didn’t even think about this. Get this, using the Microsoft version control solution it wasn’t an issue. Ha – who’d think the first point for VSS vs Open Source RCS would be a cross-platform issue? (Anyone with coins inserted in their brain meter)

So, none of our files have svn:eol-style native. That’s the fix. But if I svn propset svn:eol-style native */*.cpp */*.h there’s just one minor itty bitty niggle: it changes every line in every file completely destroying history and blame.

WoW… Is all I can say


The obvious question might seem to be “How does he do it”, but I’m wondering about those books under his desk…

What he should really work on is getting Track IR tied to synergy so he doesn’t need all those mice.


It’s … but it’s also … and overall it’s very.


Ok, let me try again. Hinterland is extracts from UO, EverQuest 1 (early days), Diablo with a pinch of Children of the Nile. (Ok, I didn’t know they made that too, they made Caesar IV too which I also liked).

But it doesn’t quite go all the way. I’ll flirt, charm and woo you, it’ll plan a romantic evening with a steak dinner, a half hour of soft porn, it’ll dim the lights and then it’ll tell you game over. But in the morning, you’ll probably think it was worth it… Especially for the mere $20 asking price!

Atlantis did not suck

Actually liked the twist. With Daniel to bounce off, David Hewlett seemed more inclined to play the earlier style Rodney as much as the script allowed making him an asset to the episode rather than the bane he has become.

But, I think they missed a golden opportunity – small, potential spoiler, so I’ll inconvenience you with one of these despite it being fairly short:

Orange Box/TF2

I’ve already bought and registered TF2 online via Steam at home. I wanted to install it on my box here for our Friday night sessions. Jaeger has The Orange Box, and I thought maybe I could install it from that. Nope. It installed Steam but then it wants an activation key before it will let me install anything. Does that mean that if you reinstall you can’t use the DVD to install the games and have to download the, too?


Builds faster, less excuse for blogging, handing over instancing API to Ramp, Atlantis better not suck tonight. Build finished, what have I done?

GCC supports precompiled headers

What are you talking about? If you ask GCC to compile a file with a “.h suffix, it will write out a similarly named file with “.gch” tacked on the end. And then, when something includes that file, it’ll do some checks and if everything is equal, it’ll use that precompiled header.

(Note: the words “everything” and “equal” and “use” are implementation and implementer specific and as such are subject to interpretation, discussion, reinterpretation, adjustment, argument, debate, readjustment, consideration, evaluation, re-evaluation, alcohol, burning, smiting, testosterone imbalances, puberty, intent to reach puberty within the next couple of years, rejection, dismissal, disregard, disrepect and generally anything but clear definition – if you really want to know, all you have to do is read the source code, stay up to date with the latest revisions from source control, stay active on the mailing list and nearly 40 blogs which occasionally mention gcc, its not like we get paid to do this. Thank you for choosing Open Source!)

Before and After

Before my little weekend spree: Client took upto 10 minutes to build on my various boxes depending on how long before I started multi-tasking and what I was multi-tasking. Probably took around 5-6 minutes on Martini’s machine, and probably 6 minutes for a normal build on my work box if I left it alone. 4 minutes for a non-optimized debug build.

After: For a full, optimized build, the compile takes 55 seconds (61 seconds if you do a full rebuild including our teulKit network library). The link phase takes 2.5 minutes, most of which is “Generating code” (whole program optimization/link time code generation). So, it now takes less time for a complete build than it used to take to build a quick debug build. The debug build takes 125 seconds.

We can probably shave another 20-30 seconds off the debug build and 30-60 seconds off the release build with a little simple reorganization. For instance, one of the header files with the most overhead has a dual-use which makes it unsuitable, but I think I can fix that with a little project configuration.

Precompiled headers

Our project just takes too long to compile. It’s only a few hundred thousand lines of code, but it compiles like there are millions.

I’ve spent most of last night and today reorganizing header files and project files and turning our primary include file set into a single, precompilable header.

Visual Studio, dramatic effect: just over 2 minutes 27 seconds off the time to build the entire project while also adding our network API to the build! Xcode seems about the same or slower (I’ll benchmark that next week) and I got tired of wrestling with autoconf/automake under Linux for the host.