2006 November

 

 Tribes:Vengeance’s miserable failure

November 19, 2006

Sadly,  it turned out that Tribes:Vengeance really sucks. Vivendi cancelled the very FIRST patch for the game, with a couple of lame excuses.  Such as “we only sold 7800 copies in the first week”. It’s pretty straight forward guys.  Release a game that is broken, unfinished and no fun to play, and nobody is going to want to buy it. Simple economics. If you had at least bothered to fix it, you may have caught the “long tail” and benefited from the loyalty of the fanbase.

It’s a pity. Tribes was the best team-based Science Fiction game of the last two decades, and I’m going to seriously miss it. Every other game I look at that doesn’t have jetpacks simply gets a “poor groundhuggers” response from me. Perhaps community games like Renegades, or StarSiege:2845 will bring back some of the goodness that was Tribes, but it just simply isn’t going to happen in the next year or two.

*sob*

I have however dabbled in some Tribes:Vengeance development, but only briefly.

My T:V Projects

VengeanceSpawn – infinite spawn-like tool for Tribes:Vengeance
VengeanceMaster – info about the Gamespy system used by the in-game  T:V matchmaking



 

 The Journalist’s Guide to Gigs and Bytes

It seems like journalists in general are having a hard time to distinguish their gigsfrom their bytes, and their kilobits from their kilobytes. When reporting on internet connectivity in this country, it seems many journalists are incapable of distinguishing one from the other.

Now, I could create this guide by starting WAY from the back, and explain to you whata byte is, and how it differs from a bit, and so forth, but it would probably fail to get the message across. So let’s just start by saying that internet “stuff” and capacity is typically measured along two factors:

  1.  Speed – how fast data can be transferred from A to B, for example how long it takes to download a large file.
  2.  Size – how much you are allowed to, or have transferred from A to B, within a set period of time, or money.

Speed

Speed is normally measured in BITS per SECOND. This is called the bit rate. Don’t ask why, it’ll just get confusing. Just like wordly things are weighed in grams, and kilograms, so speed gets measured in *bits*, and *kilobits*. Instead of tons we have megabits. More or less a thousand bits make up the next unit, i.e. kilobits. Another thousand kilobits make a megabit. Exactly like kilograms, and grams, and tons. Except, a ton in bits is a *gigabit*. Bits, kilobits, megabits, gigabits. Each indicating the next 1000th unit.

The bit rate indicates how FAST one can get data from A to B. When someone says he has a one megabit line. It means that his line can transfer roughly 1000 * 1000  bits per second. See how we got to that?

Each megabit is made up out of 1000 kilobits and each kilobit is made up out of another 1000 bits.

Simple, isn’t it? Just like grams, and kilograms.

“Speed” in internet terms is exactly the same as “how fast does your car go?”

Speed is normally measured in kilobits, megabits, or gigabits per second – the bit rate

Technically when someone talks a bout a “one megabit” connection, he should be saying “one megabit per second” connection, but because speed is normally expressed in bits per second, everyone knows that he means 1 megabit per second, because he used the word *bit*. This is part of slang. “I have a one gigabit connection” will make most nerds want to hump your leg. This is a useful phrase to throw around at a geeky convention where you’d like to elicit some response from otherwise clamped up nerds.

Size

Size is used to measure data transferred from A to B. A transfer allowance is something contrived by ISP’s so that they don’t have to think about ContentionRatio, but that’s another topic altogether. The measurement of “amount of data transferred” is typically bytes, but bytes can be used to measure other things too, including speed (confusing eh, see the Caveats section further down).
Don’t worry. For all intents and purposes bytes are normally used to measure transferred data. A byte is normally the lowest denominator in computers of “how large” something is. Now, the same as with grams, we have bytes and kilobytes. A 1000 kilobytes makes up a *megabyte* (see the pattern here?). 1000 bytes becomes 1 kilobyte. 1000 kilobytes becomes a megabyte. 1000 megabytes make up a *gigabyte*.
Unlike Speed, Size isn’t measured per second or anything. That would be stupid. Size is just that. Size. Data transferred.
It’s akin to saying my car has driven 10 kilometres, or it has 123 000km’s on the odometer. It’s a measurement of size, or distance thus it makes no sense to express it as some size covered over time.
Another good indication of size, is when someone doesn’t mention bits in the sentence. “I have a 10 meg harddrive” means that the poor sap is from the stone ages, and that his disk can store 10 * 1000 * 1000 bytes. One megabyte is roughly equivalent to a single high resolution digital camera picture.
Ever since ISP’s caught on to the “pay per byte” model such as the one thrust upon the general ADSL populous by Telkom, ISP’s have been selling data in Gigabytes.
A gigabyte is by today’s broadband standards a relatively small amount of data. It equates to 1000 highres digital camera pictures, for reference. Some ISP’s notably Sentech, Vodacom, and MTN have also decided to sell data by the megabyte.
Paying for gigabytes and megabytes is like paying per kilometer for a rental car. Except not. Some ISP’s like SAIX have taken this to extreme. You buy three gigs, but if you don’t use them in the month, *they vanish into thin air*. It’s like getting a rental car with the first 300 kilometers free, but they’re only valid for a week.
You pay for something, and then someone else decides for how long you’re allowed to own it! Crazy stuff, and by now all the other ISP’s are emulating Telkom in the same insane scheme. It’s the same principle as cellphone “lost minutes” which is a big money spinner, but I digress…
Slang: “I’ve done forty gigs this month!” indicates that someone has transferred 40 gigabytes of data during the month. This is quite a good bunch of bytes transferred. Around 40 megabytes per month is the international standard for broadband transfer, allowed per month. “I got capped” typically refers to someone who’s finished his 3 gigabyte transfer allowance on the Telkom ADSL network. The “cap” refers to the “transfer allowance” and being “capped” means that your transfer allowance is utterly depleted.

How to write:

Advice to you – the journalist:  keep away from the abbreviations in articles. They confuse your readers and yourselves. Use the WORD terms such as megabits per second, or gigabytes, just like that, in the text of your article. Just as your editor doesn’t like to see “i have 5 apples” in an article, so readers don’t like to see ” 5kbps” in an article. You’re probably using the abbreviation incorrectly in any case and creating confusion. Rather write ” 5 megabit per second” or “five megabits per second” if you prefer. The phrase ” five megabits ” can also be used if the sentence you’re constructing already infers *speed*, such as “the modem speed is five megabit”.
This is the simplest way to avoid confusion, and make your article readable.

Here be dragons

During the expression of speed, abbreviations are used for the words kilobits, megabits, and gigabits per second. For expressing size, or speed there are several strains of abbreviations for kilobytes, kilobits and all the others we’ve covered so far.
I’d recommend any journalist to steer clear of these, but if you’re really brave feel free to use them, as long as you’re capable of using them correctly. I’ve been in IT for 16 years and I still write it down *wrongly* sometimes. The abbreviations suck. People twist them. Even the capitalisation of the letters sometimes makes a difference. *Don’t use them*.
Ok, you’re still here, so here’s the nitty:

Speed abbreviations

Measure in BITS per SECOND. “b” used an abbreviation indicates BITS.
*The B has to be in lower case to mean bits. In upper case it means bytes*
The above is important. Do not forget it.
*kbps = kilobits per second
*mbps = megabits per second
*gbps = gigabits per second
You can also capitalize the first letter like so:
*Kbps = kilobits per second
*Mbps = megabits per second
*Gbps = gigabits per second
The “p” can also be replaced with a slash like so:
*Kb/s = kilobits per second
*Mb/s = megabits per second
*Gb/s = gigabits per second
Americans tend to like the following ones, and it’s easy to see why:
* They avoid ambiguity…
*Kbit/s = kilobits per second
*Mbit/s = megabits per second
*Gbit/s = gigabits per second
If you must use an abbreviation, these last ones are probably the clearest
of the lot. kilobits also seems to be a special case. People argue that it should
always be written with a lower case letter in an abbreviation, such as kb/s rather than Kb/s.
Mb/s and Gb/s however always has to be capitalized. Or so they say. See why abbreviations suck?

Size abbreviations

Simply measured in BYTES. “B” used an abbreviation indicates BITS.
*The B has to be in UPPER case to mean bytes. In lower case it means bits*
The above is important. Do not forget it. This is why things get confused.
Remember SPEED = BITS, and SIZE = BYTES. There’s a vast difference.
* kB=kilobyte
* MB=megabyte
* GB=gigabyte
* TB=terabyte
As you can see, this indicates size, since there is no mention of seconds.
These are the recommended abbreviations for size, but as I explained. Rather steer clear from them.

Caveats:

The moment you see size expressed along with seconds, for example “GB/s” it means that
someone has started expressing SPEED in BYTES, instead of SPEED in BITS, which is perfectly valid.
This is how your internet explorer expresses it’s transfer speed when downloading that huge file.
You will see things like 30kB/s in your internet explorer download, which indicates a speed expressed
in bytes. Most end user software express their download speed in BYTES because BYTES are typically
the smallest unit that computers deal with when storing things.
Modems on the other hand typically deal with BITS which is why modem speeds are expressed in
BITS per second.
There’s also a further BINARY expression of bits,

References:

For further reference:
  •  http://en.wikipedia.org/wiki/Megabyte
  • http://en.wikipedia.org/wiki/Bit_rate
  • http://en.wikipedia.org/wiki/Bits_per_second


 

 The Fridge, A nightclub

I ran TheFridge (as a partner) for a number of years. Some of us a little “older” in the teeth, and with a taste for Gothic/Industrial music, might remember the club.

I will finish ranting about this at some stage, but let me tell you: being a Nightclub Owner really just isn’t worth it. It sucks your will to live.

The Fridge, is located here http://thefridge.co.za



 

 An interesting way to increase MyWireless signal strength

Lots of MyWireless users have reported that cutting a hole about 4cm from the back of a Pringles can, and sticking the modem’s antenna into it has increased their gain in signal from ~5% to 15%

This is very likely due to the fact that the PringlesCan acts as a basic “waveguide” which causes the modem’s output signal to be more directional than the standard omnidirectional antenna.

Simply cut a hole in a Pringles Can, and move your modem around towards the direction where it gains the most signal.

Of course, the rolls royce of CanTennae is the 750g Frisco coffee tin, with a PigTail.



 

 IPWireless Win32 driver – debugging and reversing

A series of tweaks for the Win32 USB drivers of the IPWireless modem, and some more tweaks for the “Wireless Broadband Dialler”

Getting rid of the debug overhead in the drivers:

The USB drivers log a lot of useless information about the USB protocol used to communicate with the modem, using the win32 DbgPrint kernel function-call. This causes some serious overhead, and can amount to quite a bit of extra CPU cycles when running at high speeds. This “spam” is quite obvious when you run a tool such as DebugView. (Try it, you’ll note the spam, and remember to ‘Capture Kernel Events (Ctrl+K)’) In addition the kernel has to buffer any DbgPrint data in an internal buffer until it overflows, or an application such as DebugView reads it off the stack. This incurs even more ring 0 overhead on systems using the USB driver.

The DbgPrint spam is controlled via a registry entry in the ipw_*.inf files… It’s easier, to just find the keys, after installation and change the debug flags, than reinstalling the drivers with modified .inf files.

By disabling the debug information and the extra overhead when talking to the USB device, I’ve managed to shave around 5-8ms off my ping times. (A completely subjective measurement) [YMMV] <— Under profiling conditions, with a kernel debugger the call overhead per USB poll dropped from 230 cycles to 89 cycles which is a considerable saving in CPU cycles wasted. (This was an objective measurement).

I find it quite insane that a company such as MCCI can distribute drivers for production release with full debugging turned on.

Hopefully, once I patch the drivers this may drop to around 3-4% levels since there is still considerable overhead in checking the debug flags.

In the meantime, to at least reduce the syscall overhead when using the drivers, the following can be done:

_Warning, the StandardDisclaimer applies when attempting any of the following:_

Disabling the debug information (Win2000,WinXP):

*Fire up regedit.exe
*Do a search for the string “~MCCIUSB_~DebugLevel” by pressing Ctrl+F (enter it without the quotes)
*Once you’ve found the value (the default will be 0xffffffff), change it by double clicking on it.
*Change the value to 0 (decimal, or hexadicimal)
*Click ok.
*Press F3 to find the next occurrence of “~MCCIUSB_~DebugLevel” and keep on changing the values to 0.
*Once there are no more entries found, reboot your PC.

Getting the dialer to print more information

The dialler application, has a few registry entries to show more “debug” information in it’s window. This kind of information is actually useful, and has very little overhead, since the debug info is only printed during the connection establishment phase. If you’re like me and want to see what your modem is doing, then turn on the debugging for the dialler as described below.

To turn on full debugging for the dialler application:

*Fire up regedit.exe
*Navigate to HKEY_LOCAL_MACHINESOFTWAREIPWireless Inc.IPWireless PC Software
*Right click on “IPWireless PC Software” in the tree, and on the popup menu select New->Key
*Type in “Debug” (without the quotes) and hit enter, to create a new Key.
*Now, left click on HKEY_LOCAL_MACHINESOFTWAREIPWireless Inc.IPWireless PC SoftwareDebug in the tree.

__theloop__
*Right click in the blank area (NOT in the tree) and click on New->String Value
*Enter ATCMD, and hit enter
*Double click the ATCMD entry and type in “Enable” (without the quotes)

*Repeat starting at __theloop__ for the following values:
**ATRES
**ATRESP
**~RasTrace

Now, when you use the “Wireless Broadband Modem Dialler” application, some more debugging information will be shown in the “ISP” window.

Getting the dialler to retry more than 5 times after disconnect:

The “Wireless Broadband Modem Dialler” has an option on the “ISP” tab to “Reconnect if line dropped”
When you turn this checkbox on, the dialler will retry for a maximum amount of 5 times to reconnect to the Sentech network.

This is pretty useless, since we all know: _When it goes down, it goes down for a while_
To increase the number of attempts that the dialler will use when attempting to redial do the following:

*Fire up regedit.exe
*Navigate to HKEY_LOCAL_MACHINESOFTWAREIPWireless Inc.IPWireless PC Software
*Find the entry named RECONNECT_ATTEMPTS on the right-hand side.
*Double click the RECONNECT_ATTEMPTS entry, and change the value to 10000
*This will cause the dialler to retry 65536 times when the line gets disconnected.