Archive for January, 2007

More FE updates

Monday, January 15th, 2007

I haven’t written an update about FE features since July 2006, so here we go :)

  • Fixed all namespaces & include guards to be more uniform and correspond to project/directory names.
  • Lots of work done on the interface for game entities.
  • Quite a lot of work done on the Common reflection system, allowing for all sorts of neat magic at runtime you normally don’t get with C++.
  • Cleaned up MaxScript tools.
  • Removed a whole bunch of legacy code, making initialization of the game much simpler.
  • Added a proper ingame console system. Quite a few useful commands available.
  • Player control now works through console keybinds.
  • Updated configuration system to be simpler and not rely on Python. (Not everything is moved off the old system, though.)
  • Build information (date/platform/compiler) now embedded into the game.
  • Work done on improving shaders ingame.
  • Work on Clockwork (object creation/destruction/variable replication basically working over a loopback connection)
  • Began working on a system to base the Python bindings off the Common reflection system, eliminating the need for SWIG (mostly) and enforcing more uniformity and explicitness in the API.
  • Currently implementing a type marshalling system for doing dynamic function calls (to work with reflection & new python binding system.)
  • Profile information now goes in a user-specific directory, so you can theoretically run off of read-only media and have multiple users on one machine with different configurations.

Things you can now do in the console (executive summary):

  • Define console command aliases.
  • Manage key binds.
  • Edit configuration settings.
  • View reflected class tree.
  • Run Python scripts.
  • View build identification information.
  • Toggle profiling/debug readouts.
  • Edit mouse sensitivity/Y invert.
  • Control time speed and view time statistics.
  • Perform ingame movement commands.

Technological outrage

Saturday, January 13th, 2007

Okay, you know how there are people who crusade against misuse or misrepresentation of science in news, government, and public education? (A good example is badscience.) Well, I’m realizing that more and more often I’m getting outraged at the amount of things people (well, mainly companies) do with software and technology that are the programming equivalent of kicking your customers in the balls, on purpose. The EFF and related organizations do this from a legal/freedom standpoint, but there’s a lot of cases that are not quite so insidious but that still are enough to tick me off.

To give you an idea of what I mean, let’s start off with some simple examples. I repeatedly see ads for ISP’s that claim that they are N times as fast as their competition. For example, cable claims they’re faster than DSL, budget dialup claims they’re faster than other budget dialup, etc. Here’s the problem: they never say how fast the connections actually are. Car advertisements say how many cylinders the engine has, or what its horsepower is. Internet providers, on the other hand, seem content to tell you something that sounds good, but gives you absolutely no useful information. I do not know whether this is done because they don’t want you to know, or whether they don’t think you care; but either one is somewhat insulting, and indicative of how a lot of technology companies seem to think about their customers. I don’t think you have to be a technical guru to be able to compare how many average megabits up/down two service providers have.

The mindset seems to be: “People are stupid, so we can tell them that it does X, and as long as it does something that you could mistake for X if you weren’t paying close attention, we’re OK.” I imagine there is a whole spectrum of intent (ranging from ignorance to sheer malice) as to why this type of thing is done. But when it gets into software or hardware it’s inevitably bad.

Here’s another example: I recently purchased an LG VX8600 phone to replace my aging phone. My mobile service is Verizon. This is what the LG website says about their phone:

Bluetooth Capable (v1.1) – supports headset, hands-free,* advanced audio distribution, serial port, dial-up networking, file transfer, audio/video remote control, object push profiles for vCard

Okay, well, this is true. The phones do support doing file transfer, in theory, when they were designed. However, Verizon, in their infinite hatred towards any of their customers who do not own Blackberries, decided that they couldn’t tolerate this much functionality.

I asked the guy at the store where I bought the phone: “So, is there USB or Bluetooth to transfer pictures off of the phone?” He answered that, no, there is neither a USB cable or bluetooth support, and I should mail the pictures to myself for $0.25 each over the mobile network so I could get them onto a computer. I picked up one of the Motorola RAZRs that was sitting there and looked at it, and asked if there was a USB cable I could get for that, if I wanted to buy one instead. He told me there wasn’t. Now, if you’ve seen a RAZR, you’ll notice that it has a mini-USB connector on the side, so I could tell at that point he was either lying or totally ignorant.

Anyway, it turns out you can do file transfer over Bluetooth, but not through any normal OBEX link like you might expect. Verizon has specifically crippled the phone’s Bluetooth support for some unfathomable reason. I tried several programs to no avail until I found out BitPim supports communicating with it in a protocol it can understand (I tell it it’s a VX8500, which is basically an LG Chocolate, and specify the COM port manually.) There is also a USB cable you can buy from LG and possibly Verizon, which is basically impossible to find and has absolutely no indication of what software comes with it and what the capability of the software is or what USB device class the phone supports. By “impossible to find”, I mean that it took me two or three days of digging around in Google until I found out that you can buy them on Amazon.

So, this sounds nitpicky to be complaining about Bluetooth file transfer, but remember, I’m buying this phone because it records and plays pictures, video and audio. I got the damn thing because I wanted something with a camera. So, basically they’re trying to sell me a tiny device that’s labeled to be a camera/video recorder, but (as far as they would have me think) is completely incapable of transferring the pictures off the goddamn phone for free. When I hear cameraphone with bluetooth, I think cameraphone that I can take pictures with and get them onto my computer. Actually figuring out how to get JPEGs off my phone was like pulling teeth. This is a big deal. This is stupid.

Another good example is Microsoft’s XNA initiative. (Update: I’m told that they are planning on letting non-Creator’s Club members play homebrew games eventually, so you can ignore this paragraph if you want.) Doesn’t it sound fun to write games that can be played on the XBox 360? Well, I hope it sounds really good because it costs you $99 a year to play them on your own XBox. (You know, the files are on your computer, your XBox is sitting in the room, and it cost $99 a year for the bits to get from here to there.) Moreover, anyone else who wants to play them also has to pay that. Oh, and there’s no networking support in XNA (yet, at least.) Once again, sounds good in a blurb; in reality, it has a very high cost of entry that I would imagine is going to significantly impact the amount of people that try out developing games for it, in addition to totally stunting the penetration of homebrew XNA games to non-developers. So, we’re at almost exactly the same situation as other consoles that try to keep you from playing unlicensed content. The difference here is that Microsoft has decided that they’d rather have the money instead of all that cash going to some Asian modchip company. I’m not trying to hate on MS here, god knows that happens enough without me; but really it sounds dumber the more you hear about it.

So, can anyone think of a word that describes a product that sounds great in an executive summary but totally flies in the face of reasonable engineering practices? (Purposeful crippling, locking, ridiculous fees, woefully incomplete feature implementation, etc. all apply.) I’m worried that if people don’t start having a clear way to tell companies what bad faith their product is designed in, that we’ll just get buried under a pile of software and hardware about as well-engineered as Linksys routers, AOL, the average mobile phone, Windows Media Center Edition, etc.

In which SHilbert points out things that annoy him personally in XP

Monday, January 1st, 2007

NOTE: Before you mention that this list only has four items, I’d like to say that these are in no particular order out of the other 5,000 things that annoy me about XP.

1. Most control panel windows are “special” — in a bad way. They do not show up in the taskbar like every other overlapped window on the planet. Additionally, they tend to disappear if they lose focus. At first it looks like they’re programmed to be destroyed if you click out of them, and somehow save the user having to remember that they have a window open; but it turns out that they just end up stacked below all the other windows, like a normal overlapped window, except there’s no way to recover them except minimizing everything else. In pretty much every other normal Windows program (and most other windowing systems as well), a window that doesn’t show up in the taskbar is a child window (like a messagebox or dialog, etc.) and is permanently ‘on top’ of its parent window. I don’t know why they decided to make the control panel windows some kind of weird hermaphrodite between an overlapped window (fully independent with its own taskbar button) and a child window.

2. This awful thing:

This tends to show up in installers and other programs where you have to “choose a folder”. What’s wrong with it? You can’t copy+paste in a full path, or type in paths at all. The closest you can get is typing in the first couple characters of the folders’ names at each level when you’re finding the folders to expand. Plus, there’s no way to sort folders by date modified or any of the other things you can at least do in the normal file chooser dialog. Even though Explorer is not the best file browser in the universe, an embedded Explorer window is better than this half-assed standin.

3. The file copy dialog.

Approximately 1/2 of this dialog is an animation of little files flying between folders. There’s no data rate for the copying, which I often wonder about when I’m copying over a network. There’s no counter for how much time has elapsed, or how much data has been transferred, so you would need to use a separate timer to actually figure this out. There’s no mention of how many files it’s copying, although in fairness it might not know. It’s obviously guessed what percent done it is, because it’s animating a progress bar, but it certainly won’t tell us what that percentage is. I suppose this is nitpicky, but I’m suggesting that all file/data transfer progress dialogs should always have the following:

  • Actual percentage value of how much work has been done in addition to the progress bar.
  • Amount of bytes copied, and the amount of bytes remaining to be copied, if known.
  • Time elapsed as well as any estimate of how much time the rest should take.
  • Data transfer rate.

4. The Add/Remove Programs window. Specifically, it taking forever to load the list of programs on the computer.

It takes seven seconds to figure out the list of programs that are on my computer (which is fairly new and doesn’t have that many programs). On older machines, with many more programs and a much slower processor, it takes ages. Why is this so slow? What could it possibly be doing with its time?

Add/Remove programs also has some other fun problems, like no ability to sort by install date or perform a search or batch remove. I also like how it expands the list row to be much thicker when you select it; this lets me have fun finding the other applications I meant to remove in the list again, because they’ve all been shifted downwards.

Does anyone want to place bets on how many silly things like this are in Vista?