A steak dinner, half a bottle of wine, and some truly decadent caramel apple cheesecake. I feel restored.
And due to a sudden hole in the schedule I have time to figure out the best way to integrate an .ogg player, which (with some cleverness) should dramatically cut down on thrashing when streaming assets off CD.
For the record: when streaming two different assets simultaneously, seek time seems to be a much bigger issue than read rate.
Well, after working for a couple of days and changing a mere 435 files, stage one of the XBox port works perfectly. That is to say that the code compiles and links for the XBox, the code still works for the PS2, and it's checked into source safe so that when people check in files that break the XBox build I can make them go and fix it instead of taking time out of my schedule.
Time to go home, change, and then head out to a bar!
While I realize that in the end the most important thing is that the class name is spelled consistently rather than correctly, I do reserve the right to endlessly harass my coworkers until they change the spellings of the class names to something that looks reminiscent of something you'd find in a dictionary.
On the way to work today I was stopped on Venice waiting to turn right to get on the 405 when I saw something a bit unusual.
First I heard a rather loud squeal of brakes (I live in L.A. so that doesn't really count as unusual). Then I saw a rather largish truck, possibly a Ford F150 bouncing up and down in a way rather reminiscent of a physics sim running at too low a framerate (non game programmers should imagine replacing the wheels of the truck with giant powered pogo sticks). Then there was a rather nasty crunch sound.
As I moved closer (and past the scene... there were no injuries and I've already wasted an hour and a half of my life waiting around for police to take a statement from me once and I won't be repeating that experience unless I'm actually involved) I saw the F150 sitting astride the median and somewhat interpenetrating the side of a tiny little hatchback. The drivers of both vehicles were standing outside looking very not happy at each other.
I must say that today I'm glad I have side impact airbags and a five star side impact rating on my 2000 Galant GTZ.
How come the humane society didn't have one of these when I went to get a cat?
Of course, my cat can be ignored if he wants to be fed earlier than I want to get up.
An interesting idea for content generation tools[0]:
First, use a source control software that has an API (e.g. Perforce) and then build all your content generation tools so that they natively interface with source control.
No more worries that junior level artists will lose a week's worth of work when they do a get and stomp all their files.
Of course, all this depends on a tools programmer implementing things well[1] which fortunately, isn't me[2].
--
[0] This idea is from a friend of a coworker, I can't take credit here.
[1] We need more hours in the day... or ways to sleep less without getting tired.
[2] Tools development is fine, I just don't like getting sucked down into an unending cycle of "We need this one last feature" when I'm also having to deal with non tools related tasks.
For a couple of years now I've had a P200 OpenBSD2.9 Firewall (named Vimes after the watchman from Discworld) sitting in a closet quietly doing it's thing without any need for human intervention. For various personal reasons it's become desirable to move over to a wireless network, which includes a router with a built in firewall. When I went to log into Vimes locally one last time I had to wipe a thick layer of dust off the keyboard. The dust would have been thicker, but we swapped in a semi-broken keyboard because we needed the spare good one.
So, let's all raise a glass (or mug of coffee) in salute to a good machine that did a good job.
11:51PM up 488 days, 19:37, 1 user, load averages: 0.20, 0.13, 0.09
USER TTY FROM LOGIN@ IDLE WHAT
root p1 192.168.1.100 11:50PM 0 w
vimes# df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/wd0a 968061 90893 828765 10% /
/dev/wd0d 241823 1 229731 0% /tmp
/dev/wd0e 2616441 5028 2480591 0% /var
vimes# shutdown -h now
Shutdown NOW!
shutdown: [pid 994]
vimes#
*** FINAL System shutdown message from root@vimes ***
System going down IMMEDIATELY
Sep 15 23:51:37 vimes shutdown: halt by root:
System shutdown time has arrived
Connection to 192.168.1.1 closed by remote host.
Connection to 192.168.1.1 closed.
Sleep well, good fellow. Your replacement may be smaller, faster, and lighter, but it will never carry the pride I had in you.
My alarm clock idea backfired a bit in that the smell of the freshly ground coffee kept me awake as much as the freshly brewed coffee helped me get up in the morning resulting in the total effort of moving my butt out of bed being approximately the same.
So, I was faced with the option of either putting the coffee maker back in the kitchen (and giving up the counter space I had freed up) or buying a coffee maker that grinds the beans in the morning.
The only down side (thus far) is that the coffee maker uses a fan to move the coffee grounds into the filter area and it sounds like a largish hair dryer. I worry a bit that I might develop a Pavlovian response where I salivate in anticipation of coffee when I hear a hair dryer and someone might mistake the salivation for a strange fetish (and that would just be false advertising).
...
(Ok, I'm not really worried about it, I've just been looking for a convoluted reason to post that link)
Async I/O and movie players are a good match, for the record.
Now I can go work on a part of the project that doesn't make me hate myself.
There is a particular art to a rigged demo. You can't let it run too fast or people realize that you're just putting preprocessed data up on the screen, you can't let it run to slow, or people get bored and don't care.
On Friday I got the lovely last minute task of creating a window for our front end that made it look like someone was interacting with a networked application that was doing interesting things that were quasilegal (this is eye candy for a game, don't go thinking that we're selling this to the government or something). I put in some progress bars and time delays, and the all important scriptable delay statement.
Of course, the first time I put something like that together was for a competition during high school (around 1992) where we were supposed to come up with a way for industry to do something environmentally positive. Our concept was to use game consoles to deliver newspapers, an attached printer would allow for people to print out coupons & save articles thus preventing lots of paper from winding up in the landfill. I think the demo was run on a 386sx laptop and may have been written entirely using for loops (for delays) and print statement in Pascal.
On the board of judges there was a guy who owned a company who made paper making machines.
We didn't win.
The winning entry involved using a fusion powered sex toy[0] to shoot nuclear waste[1] out of the solar system[2].
Now if you'll excuse me I'm going to go check slashdot and cnn.com..
--
[0] Ok, it wasn't really a sex toy, it just resembled a smooth black plastic cucumber.
[1] Because nuclear waste is, like, evil, and maybe even fattening.
[2] No, I'm not making this up.
Just a reminder that September 19th is Talk Like a Pirate Day.
Yup, it's a slow day at work.
One of the reasons I've found it best not to immediately jump on top of really weird bugs is the same reason I reboot my windows box every time something strange happens:
"Oh hey, it turns out that streaming audio wasn't broken after all."
Ta-da
I just saved myself 8 hours of misery by not working on a bug that was probably due to a missing file on the CD.