Weblog

Written on: 2006/08/13.

I honestly wonder why Netspeed is not packaged with GNOME by default, as it is one of the most useful GNOME applets there is. Apparently the Fish and Geyes applets are more important than detailed network traffic monitoring...

Another Linux tip... (with a heavy Ubuntu bias YMMV etc) Ever wanted to connect to a Windows machine using its NetBIOS name like you can in Windows? Or connect to a Mac with its hostname.local name like you can in OS X? Well you can in Linux, you just have to install some simple little utilities and tweak your DNS settings.

To be able to ping and arbitrarily connect to Windows NetBIOS names, install winbind.

To be able to ping and arbitrarily connect to Mac style hostname.local names, install mdns (also referred to as libnss-mdns).

Finally, edit your /etc/nsswitch.conf and change the hosts line to read files dns mdns wins.

After you do that, you'll be in happy hostname heaven. No more 192.168. ...

Bonus: Also, sometimes you want your Windows or Mac to be able to arbitrarily ping your Linux machine too...

So to be able to get Macs to see your Linux machine as hostname.local, install avahi (also referred to as avahi-daemon).

And of course, if you want your Linux machine to have a fully qualified NetBIOS name, install Samba.

Bonus: Macs can ping arbitrary Windows NetBIOS names by installing Bonjour for Windows, provided by Apple. The hostname will be NetBIOSname.local. Windows users can ping arbitrary Mac hostnames if the Mac has Samba installed. The Mac computer name will be its NetBIOS name.

Written on: 2006/07/20.

Battlestar Galactica's season 2 soundtrack is now available. I highly recommend! BSG is not only the best show on television, it's also the best scored show on television. Bear McCreary's composition skills are truly impressive.

Written on: 2006/07/18.

This is old, but I still find it fascinating.

The Quake 3 source code has an interesting low level hack, which is done to make the engine faster. In q_math.c, there is a function called Q_rsqrt() which reads about as follows:

float Q_rsqrt( float number ) {

long i;

float x2, y;

const float threehalfs = 1.5F;

x2 = number * 0.5F;

y = number;

i = * ( long * ) // evil floating point bit level hacking

i = 0x5f3759df - ( i >> 1 ); // what the fuck?

y = * ( float * )

y = y * ( threehalfs - ( x2 * y * y ) );

#ifndef Q3_VM

#ifdef __linux__

assert( !isnan(y) ); // bk010122 - FPE?

#endif

#endif

return y;

}

Notice how the person who commented all the code doesn't even know what's going on at one point? Specifically this line: "i = 0x5f3759df - ( i >> 1 ); // what the fuck?"

Basically that's an implementation of Newton's method of finding inverse square roots. A cleaner example:

float invsqrt(float x) {

float xhalf = 0.5f*x;

int i = *(int*)&x;

i = 0x5f3759df - (i >> 1);

x = *(float*)&i;

x = x*(1.5f - xhalf*x*x);

return x;

}

This is actually faster than libc, because the method sacrifices accuracy to gain processor cycles. An extremely clever trick.

Written on: 2006/07/06.

Hear that? That's the sound of the English language deteriorating.

Ages ago, somebody misused the term "emulator" to describe software that imitated other software. It probably arose in the gaming community, some time around when Ultima Online "shard emulation" became viable, and was likely mass popularized by the critically acclaimed UO server package RunUO, which revolutionized the player run UO community.

Wherever it arose, the misused term spread like wildfire. It has very quickly become the de facto standard to describe reimplementations of any MMOG server, but was not used at all prior to rise of MMOGs.

So exactly what is an emulator?

Let's look at the actual definition. In computer science, the term emulator is used to describe software that allows unmodified binaries to run on platforms other than what they were compiled for.

There are three parts to a process of emulation.

Why is a "server emulator" not really an emulator?

No unmodified binaries are being executed on platforms other than what they were originally compiled for.

These servers are written by reverse engineering the original proprietary product, then reimplementing the protocol in an entirely new piece of software.

How do people using the term "server emulators" justify the its use?

People supporting the term claim "server emulator" is acceptable because it loosely fits the layman's definition of emulation. According to the layman's definition, to emulate something is to imitate it closely. When you look at actual emulators such as ZSNES which emulates the hardware of the SNES, at the core all it's doing is imitating the hardware environment. So, they conclude that since software like RunUO merely imitates the UO servers, that it should be called an emulator too.

What’s wrong with that justification?

It's far, far too broad. By that definition, if I wrote a new FTP server tomorrow, it would be an FTP emulator because it imitates existing FTP server software. By that definition, Samba is a SMB protocol emulator because it imitates existing server software that use the SMB protocol. By that definition, WINE is an emulator because it imitates the Win32 API. And let me remind everyone, WINE stands for WINE Is Not an Emulator. Reimplementing a proprietary protocol through a process of reverse engineering is not emulation.

The computer science definition is deliberately narrow. The line is drawn at software like WINE because if WINE is an emulator, then what isn't? Almost all software ever written is imitating or reimplementing prior art. We can't call them all emulators, or it devalues the term. And we can't arbitrarily call some products but not others in the same class emulators, as is the case with Samba/WINE vs. the gaming community's game server "emulators."

Someone once said, "old habits die hard." The MMOG community is sternly defending their inaccurate use of the term, going so far as polluting Wikipedia with the intent on further legitimizing the term, even after the respected author of RunUO confirmed the inaccuracy of the term. I encourage anyone who values technical accuracy to put that article in its proper context. Edit it to make it known that "server emulator" is both an inaccurate term and only considered an acceptable term in MMOG communities.

Because you see, the rest of us in the computer science world place technical accuracy before gaming.

Previous Page - Next Page
PreviousPages: 1, 2, 3, 4 ... 12, 13, 14 Next