Just to show that I'm against both parties[0] here are a few last minute campaign slogans for George W. Bush.
George W. Bush: 4 more years of the iron fist of liberty!
George W. Bush: You forgot Poland.
George W. Bush: Kinder, gentler, policies in the face of an impending fascist Russia.
George W. Bush: Preventing proliferation by making other countries giggle at the work "nyukuler"
George W. Bush: Because you know you want to see the twins on a leash.
--
[0] I view our government as something that needs to be there in order to make our society work. Someday there will be a better system that'll replace our currently one, but for now I'll participate and generally support the Democrats because they seem to produce less evil.
I've discovered the secret to forcing all programmers to develop strong verbal communication skills.
1. Call at 11:15pm
2. Say "Hey, we've got this funny glitch that's keeping our product from going out the door"
3. Watch the programmer suddenly develop the ability to instruct other people how to run the program, the debugger, edit the code, etc.
(unfortunately, it turned out to be something I couldn't debug over the phone, but I did get at least a partial fix in before 1:00am and now our standalone demo is shipping (yay))
Weird trivia:
SlickCo (parts of that site aren't safe for work) uses the same mud (complete with moisturizers) for mud wrestling as salons use for facials.
If you're about to be pinned in mud wrestling, you spin to escape.
I really hope that Ivan doesn't hit New Orleans too hard. It would be sad if the city was destroyed and even more sad if it turned into fodder for the upcoming election.
It's the *nix dating service.
12:25 kettle:/home/matt 0>locate women
/usr/share/games/fortune/men-women.dat
/usr/share/games/fortune/men-women
12:25 kettle:/home/matt 0>
Lonely men seek companionship. Lonely women sit at home and wait.
They never meet.
Yah, screw you too, fortune file.
Fucker.
Today I ran into a guy named Phoenix who spent half an hour explaining that grays were friendly, (even if they were somewhat upset about having lost an entire crew to the dissections) and that the UFOs where powered by magnetic fields that are adjusted to balance against gravity.
This was followed by a trip to a coffee shop that was out of cups in any size but small, and finding a guy selling poodle shaped bonsai out of his yard.
I feel like I need a weirdness bingo card ("Ooo! All I need is to run into a transvestite dwarf and I win!").
So, I get back from seeing Gabriel and Dresden at the Monte Cristo[0]. And oddly enough, my garage door remote button gets stuck down. This makes the garage door promptly go a bit bezerk and make lots of noise so that my neighbor's girlfriend shows up[2]. I eventually get the remote to stop going bezerk by removing the battery[3].
It kind of makes me wonder how much software out there is designed to handle physical device failure. I would hope medical equipment is held to at least as high a standard as console game software[4], but if someday I die because of a stuck button I reserve the right to come back from the dead to say "I told you so".
--
[0] They mixed a nice set. Not the stuff I usually listen to, but good dance music. You probably wouldn't like the stuff I usually listen to anyway, so go check out their new CD[1].
[1] It was a CD release party. There was no cover charge and I had a good time, so I'm plugging their CD.
[2] No, this story doesn't have an erotic component. Besides, she's old enough to be my mother.
[3] Also, the entire front of the case which came off instead of the battery cover. Thank you, Murphy.
[4] Unplugged controllers, corrupted save games, scratched discs, and many other things have to be handled before the game passes approval. You can sometimes find fun bugs by unplugging controllers during cutscenes.
Somehow I don't think this was written to appeal to the general public:
Lucent to provide Ultra Dense Large Micro Electro Mechanical Systems Spatial Light Modulators for Maskless Lithography to DARPA
(from PhysOrg.com)
It turns out that the reason my high school class never had a 5 year reunion, and the 10 year is kind of screwed up[0] is that the president of my class was struck by lightning while he was hiking in Colorado.
Go figure
--
[0] It's on a Friday (which means those of us who have to fly in will probably have to take both Thursday and Friday off), people weren't mailed with the information, and the location didn't exactly sound posh. I found out about it on such short notice that I basically can't go.
Lead programmer: Sometime between Sunday and today 2.5 megs of memory appears to have gone missing. Could you look into it?
Me: That's very odd. Sure.
(later)
Me: I've examined the history logs in source safe and the only things that have changed are the new multistream irx file (which lives in IOP ram[0]) and a 400k increase in Lua memory. Just to make sure that it wasn't a fluke of memory aliasing[1] I locally reverted the changes and there wasn't a significant shift in allocations.
LP: Well, it would probably be a static allocation anyway, have you tried looking at the .map file[2]?
(later)
Me: There aren't any unusual allocations in the .map file, I found an older map file and did a diff, there aren't any significant differences.
LP: Well, the memory log of the crash is up on the network take a look at it...
(later after some confusion and idiocy on my part)
Me: Ah! Yes, I see the 2.5 meg difference. But in the one that my build generates, that 2.5 megs is still there.
LP: Well, that shouldn't be happening. It must be leaking memory, it would be really nice if we had a way to identify holes in memory when analyzing the logfile.
(much later after remembering how to code in Perl)
Me: Well, the good news is that there aren't any holes in the memory block list[3]. The end of memory is where it should be, but the start of memory is 2.5 megs too high, so if there's a leak it happened at the low end of the memory pool.
LP: Well the build that crashed is still running on a Tool[4], I suppose you could go look at the memory start value.
(we mosy over to a test rig[5] that has a yellow sticky note on both the monitor and the TV indicating that nobody is to use it because the crash is being analyzed)
Me: Well, the memory manager has the start memory position that matches the start memory position in the log file. Wait a second... this is a debug build[6].
LP: Oh, well that would explain where the 2.5 megs went. Well, sorry to have wasted your time on that.
Me: I think I'm going to go out for a walk.
--
[0] The PS2 has main memory, IOP memory, SPU memory, scratchpad memory, VU0 memory, VU1 memory, and VRAM. After a couple years of hard drinking it all becomes second nature.
[1] Historically there have been memory allocators which allocate powers of two and tack on a little bit to identify the block, so a theoretically nice allocation like char *foo = new char[256]; would actually allocate 512 bytes of RAM. This tends to get noticed when you allocate a meg and two megs go missing. I have yet to get bitten by this bug, but it took all of 10 seconds to check and if I hadn't checked it I'd be writing a blog entry on memory aliasing right now (I know how this Murphy's law thing works).
[2] The gnu linker (or in our case the ProDG linker) can be told to output a map of where everything is in your code. You can then take the (godawful) output and run it thorough a utility that sorts the data and spits out block sizes (writing the utility is left as an exercise for the coder). It's a very useful way to find things like: char modelReadBuf[ 8 * 1024 * 1024]; //todo, replace with dynamic allocation when I have time and we have some final art
[3] One of the things you do when writing a game is to write your own memory manager. It makes tracking leaks easier, it makes dealing with memory fragmentation easier, and it prevents you from getting pissed off at 4:00am and writing a memory manager that has bugs that will bite you in the ass for the rest of the project because you wrote it while you were overtired.
[4] Sony called them Tools. This is a technical term. Be aware that you're laughing at Sony (as opposed to laughing at me).
[5] One PC, one Television, one PS2 Tool. The PS2 Tool draws about as much current as the rest of the stuff combined. Half the people in our building have XBox kits as well. Our power bills would give you a heart attack.
[6] Our makefiles[7] (maintained by yours truly) have 5 working targets (debug, optimized, release, dvdrom, and dvdrom_final) depending on what level of optimization, debugging information, and media type the .elf should support. Debug mode contains no optimizations and for various reasons takes up significantly more memory than the other build types.
[7] For larger projects makefiles are a very effective solution, especially if you bother to learn how to really work with them.