Wednesday, June 30, 2004

The Misfits

When I was in junior high school, a big group of people I knew were really into the Misfits. The strange thing (other then the fact that they had broken up almost 10 years previously) was that no one actually had a real copy of a Misfits album. They had copies of someone's copy of a tape, or a copy of a copy of a copy, etc. So it always sounded like complete crap. For years I always thought it was because of all the dubbing, and the inherent quality loss there-in.

But then several years ago Linzy bought me an original Misfits CD from some Pawn Shop/Garage Sale/who knows, that sounded exactly like everything I had listened to in Jr. High years and years ago. Who'd have thought the reason the copies of copies sounded like they had been recorded from the room NEXT to the studio, was because that's how it actually sounded.

Read the whole post.

Tuesday, June 29, 2004

Overtime

It's too bad I don't get overtime pay. Otherwise in the last month I would be owed approximately a big screen TV. Or full-time tuition for Linzy for a whole quarter.

Instead I just lose some vacation because I hit max accrual and might get some 'comp' days at some point. Oh, but the comp days are of course under the table because comp days are technically against policy. HTF is that fair.

Read the whole post.

Monday, June 28, 2004

Excuses, Excuses

I just filed my timecard at work for last week, and it clocked in at 68.5 hours. Which is pretty steep considering it was only filled in for hours Monday (6/21) - Saturday (6/26). I am pretty sure I worked on the 20th as well, but I couldn't remember exactly how many hours or what I worked on. That's the trouble with working 7am - 9pm (minus dinner and 2 commutes) most every night, everything starts to run together. I also looked back, and the two previous weeks were 54 hours, and 52.5 hours (again with some hours not reported that I couldn't quite recall).

Nothing like a startup death march, but enough to interfere with me doing just about anything other then sleeping and camping out in front of a movie or the TV.

Not that it justifies the post rate slowing to a trickle, but I do have an excuse.

Read the whole post.

Saturday, June 26, 2004

Movies: Harry Potter and the Prisoner of Azkaban

Linzy and I went to go see Harry Potter today.... Boring.

I was only lukewarm about the first two movies, so I'm not sure why I was letting my expectations rise based on all the good reviews. Alas, other then the last 20 minutes I found it slow moving and dull.

Read the whole post.

XIII

I finally finished XIII today. My overall thoughts on the game are similar to my initial impressions. However the checkpoint save system got ridiculous towards the end of the game. There would be some long involved stealth mission with only one checkpoint at virtually the end of the level. So if you screwed up once on stalking the first 30 guards in the level you had to start over. Then the last 3 guards would be after the checkpoint. That was just pointlessly frustrating, so I gave up and left the game sit for a while a number of times.

Overall, I still think the graphic style was cool, as were the inset screens showing characters/deaths/critical areas. The gameplay was a little above average. There was some variety, but the AI was really dumb sometimes. So most of the stealth missions could be won just by rambo-ing through the level killing everyone faster then they could get to the alarm buttons. The sound/music was average, it could have been cool but it got very repetitive by the end of the game. The story was just as dry by the end as at the beginning. Oh, and the conclusion sucked.

I'll give it a 7.

Read the whole post.

Wednesday, June 23, 2004

XBox Next Specs

So, the last few days there has been a big furor over the leaked XBox Next specs. Obviously it is a little early for things to be quite as firmed up as the article claims. But then again, it jives with every other rumor about the system that I have seen (PowerPC processors, 256M memory, no hard drive potentially, etc, etc).

The big thing I noticed was the crazy turn the console is taking. Triple core system, with what appears to me to be something like hyperthreading, where each core can run more then one thread (2 to be exact). That is 6 threads. Now to some extent that makes sense when you read the section talking about all the audio mixing being done on CPU rather the a dedicated sound chip. But, how hard is the thing going to be to program. I mean, its got a fricking GPU too, which has to be kept busy while you keep 6 threads running across all the processors.

Multi-threading is hard, especially to do efficiently. And almost all game engines today are single threaded. Oh, they might use some slave threads to load data, or maybe they go crazy and have a sound thread and an input thread. But for the most part they tick the world and sent the state off to be rendered. The only major engine that I am aware of that flaunts SMP capability is the OLD Quake 3 engine. And that always seemed more like a 'I'm John Carmack and better at programming then anyone else' type feature then something that was actually meant for serious performance gain.

People complained about the PS2, its complicated, proprietary hardware, and the difficulty getting the vector processor and other CPUs all working together as efficiently as possible. Unless those hyped XNA libraries are incredible, I think the XBox Next is shaping up to be REALLY difficult to program.

Oh, and then they made it Big-Endian as well, just another kick in the pants for all those PC developers-turned XBox developers. Although Big Endian probably is a Power PC thing rather then a conscious 'Lets be difficult' decision.

Read the whole post.

Tuesday, June 22, 2004

Enterprise IM

So, am I the only one who thinks that Microsoft has the right idea when it comes to IM strategy?

Most recently I was using Trillian because all the people in my group at work used AOL and I had friends on MS Messenger. Trillian was good, but it does use a bit more memory then running just a single IM client (although less then running 2 standard ones). Since all the people in my group used AOL it worked well for quick conversations. But of course you had to be careful what you were discussing over the Internet. Eventually work setup Exchange IM and put out a corporate 'standard' to use MSN Messenger for work-related conversations. The nice thing about the messenger client is that it can still connect to .NET servers and talk to people over the internet.

Since Trillian doesn't support Exchange MS Messenger, I use the standard client. Which is actually kind of nice because I only have the overhead of a single client. One where everyone's work contact is preloaded (no having to add 'Duber Dan W' or some other crazy nickname), and I can still talk to people over the Internet.

Slowly but surely the rest of the people in the group seem to be coming around to only running one client, and dropping AOL and talking their contacts in AOL into switching to MSN. In Corporate IM land, there is really only one choice, MS. Yahoo and AOL are backing away as fast as they can. Which they pretty much have to, if AOL is going to continue to spam stupid pop-up ads for movies to your AOL client. That means as more and more companies switch to Corporate IM products (which are really handy), they will be choosing MS Messenger. And as people start using that tool at work, I think they are going to be switching over to using that as their primary client.

Seems like a sensible strategy to me, and one where eventually you can make some money charging for the Corporate IM add-on to Exchange.

Read the whole post.

Sunday, June 20, 2004

Velvet Revolver Interview

I read an interesting Velvet Revolver interview on Rollingstone.com.

I stand by my comments that there is no way Scott Weiland will be able to keep it together for a second album. I mean, in the article he says "I kicked the heroin habit a year ago." Followin it up immediately with "I've only used 3 or 4 times in the past year". Umm. Doesn't sound like it's fully kicked to me.

I am liking the Contraband album a bit more now, FWIW.

Read the whole post.

Friday, June 18, 2004

Console Center

This is mostly for Brenden.

It didn't take long, I've already forgotten about the fact it took 4 guys to lug the new entertainment center into my family room. Why? Because I can hold 7 consoles in the bottom section without even trying hard:



For anyone who can't identify all those consoles on sight (which makes one wonder why you would still be reading this entry :), that is (from the upper left to bottom-right)
NES
SNES
DreamCast
N64
GameCube
PS2
XBox

The Genesis couldn't quite fit, but since I don't have any working controllers for it I suppose that doesn't matter anyways.

Read the whole post.

Compiling Perl pt 2.1

BTW the 'Undeclared Identifier targ' thing can be fixed by adding this to the declaration of function:

PREINIT:
#ifdef dXSTARG
dXSTARG; /* Faster if we have it. */
#else
dTARGET;
#endif

But I couldn't find that in the XS documentation anywhere. In fact, the post I found through google had this quote in it (which I though was indicative of the impression I get of the whole XS thing):

>>Neither
>>dTARGET nor dXSTARG seem to be documented anywhere,
>
>dTARGET is an internals thing.
>
>dXSTARG didn't exist until "recently".


No explanation of why, how or what. Just a comment that it is an internal's thing and/or brand-new. That helps me understand...or not.

Read the whole post.

Compiling Perl pt.. 2

Well, I won the battle with compiling 64-bit perl, but I had to cheat. I ended up just compiling it over the network using a IA64 machine, and Visual Studio .NET + source on a mapped drive. It wouldn't set any speed records, but it got the job done. Flush with the success of that, I moved on to compile the extraneous modules we use. That's when the trouble started.

Most of our infrastructure at work doesn't use modules. Or if it does, its all Perl modules or something standard from libwin32 or Perl core. But we do use Win32::AdminMisc for three functions: GetDrives, GetDriveSpace, and GetDriveType. No problem I figure, the source is available and MakeMaker stuff really isn't hard to compile if you have a Config.pm that works with your compiler setup. But AdminMisc doesn't use MakeMaker, XS, or anything you would expect, and the code is a MESS. It uses various libraries not included in the source distribution, libraries that aren't available anywhere (AFAICT), has two different versions of the same files in some of the extra source neither of which compile even in 32-bit mode.

After an hour or so of failing to compile AdminMisc and all its associated crap, I decided maybe I could just write a clone module with just the three functions I needed. I mean, those functions are just thin wrappers around the Win32 API, I have the source to tons of Win32 modules in libwin32, how hard could it be?

After wasting a whole day on this adventure, I can say, a lot harder then I thought it would be. None of the modules in Win32 are written in the same way. I suppose that fits with TMTOWTDI, but it doesn't make it very easy to learn by comparing sources. There is some XS documentation out there, but it isn't very straight forward. Its all very fragile, and Macro-based with all the problems that you would expect from that sort of thing. The kind of problems where you get compiler errors saying 'Undeclared identifier: targ' pointing to a single Macro line. Well, of course it is undefined, I didn't declare a variable called that, have never heard of it, can't find any documentation one it, and don't have the slightest idea how to define it.

I don't doubt that XS is very powerful, and really makes making modules easy once you know how it works and the subtleties going on underneath the stack manipulation macros. But its not very easy to waltz up and write a simple module. And it doesn't help that I also have to deal with the whole GetDriveTypeA/W Unicode versus Ansi mess too.

I did, by the end of the day, get things compiling. Now I just have to get the test harness I wrote working. Right now the autoloading of constants isn't working right. But I'm pretty sure I can get it working.

Read the whole post.

Thursday, June 17, 2004

Compiling Perl

I've been programming in perl for almost 10 years now, on most every platform imaginable. Amazingly I've never once compiled it from source. I'm sure that hurts my 'Perl Hacker' status, but I've never been enthused about compiling from source when there is a pre-compiled package available. ActiveState has distributions for Windows, various UNIX systems come with it pre-installed, or in their flavor of packages/rpms/whatever.

But now I need 64-bit perl for our Windows 64-bit servers that have been oh-so-fun to work with. And ActiveState doesn't provide 64-bit binaries. According to their documentation, perl 5.8 should be compile-able for IA64 chips. So guess who got tasked to see how true that claim is.

After procuring a shiny-new copy of Visual Studio .Net 2003, and the latest MS platform kit (for the 64-bit compiler). Off I was, deep into Makefiles, win32-specific readmes, linker command line options, target machine types and everything else I've always loved about C programming.

Now keep in mind, I have a normal everyday Pentium III laptop that I was using to compiling for a IA64 target architecture.

After a few false starts trying to convince it to generate IA64 code, I poked around the makefile enough to determine I needed to be setting PROCESSOR_ARCHITECTURE=IA64. OK, we were off and running. Warnings are flying by, files being created and deleted, Process was being made. Then, disaster.

See, those perl guys are so clever. They build something called miniperl first, and then use that all over the place to get the rest of the source compiled. That would be fantastic. Except that of course, IA64 binaries don't run on my x86 laptop. And there doesn't appear to be a way to say 'I'm not compiling this on the target platform, so anything you need to run during the compile needs to be for Processor X, the rest is for Processor Y'.

Lord knows what will happen when I manually compile miniperl for x86 and build everything else for IA64. The first battle was lost when 32-bit miniperl crashed trying to write to a NULL pointer during 64-bit extension building, but the war rages on....

Read the whole post.

Tuesday, June 15, 2004

New (used) Furniture

Hi, I'm the new insanely heavy entertainment center, courtesy of Steve's parents.



That's a 32 inch TV in the middle of the pocket doors, BTW.

Steve swore that I would be sold with the house, but I'm willing to bet that by the time they sell he will have forgotten how 4 guys were required to lug me into the house.


Read the whole post.

GetLastError storage location

Did you know that the error number information used for GetLastError is stored at offset 0x34 from the top of the Thread Information Block (aka Thread Environment Block, or TEB)?

I didn't either, but now I do and I can't even start to count the myriad ways this will be handy in everyday life.

Read the whole post.

Sunday, June 13, 2004

The Chronicles of Riddick

We went to go see The Chronicles of Riddick today. I really enjoyed it. Which is crazy for two reasons:

1) I very rarely really LIKE a movie. Most of the time I walk out going 'Meh, it was OK'. Or 'Hmm, not too bad'. But this time I was legitimately thinking 'Wow, this is a pretty cool movie' during the film.

2) I was looking forward to it. Almost always my expectations are too high and then I am dissapointed when I see the movie (Van Helsing)

Obviously 78 reviews aren't completely wrong, there are definitely a few problems with the movie. But if you sit back, relax, and enjoy the ride, it is quite the visually interesting, exciting ride.

Read the whole post.

Thursday, June 10, 2004

Zuma

Since I don't have anything interesting to post, and am busy trying to get a reproducible test-case for MS on the whole Bad File Descriptor debacle, I figured I would take this opportunity to pimp Linzy's new puzzle game obsession: Zuma.

Though why anyone would want to play anything other then generation old RPGs is beyond me.... :)

Read the whole post.

Wednesday, June 09, 2004

Supergroups

Apparently I am subconsciously having a supergroup week in my MP3 player's rotation here at work. So far this week I have listened to:

Audioslave
A Perfect Circle (Thirteenth Step)
Velvet Revolver
G-Unit
A Perfect Circle (Mer De Noms)

My musical selections at work tend to be very dependant on what I am doing at any given moment. The conspicuous absence of any Paul Oakenfold concerts on the list can be directly linked to the lack of any serious programming getting done this week.

Read the whole post.

Tuesday, June 08, 2004

Velvet Revolver <= STP + GNR

Enjoying both Stone Temple Pilots and Guns N Roses, I had kind of been looking forward to Velvet Revolver's album Contraband. It is OK, but nothing spectacular. There is certainly promise there, but somehow I have my doubts about Scott Weiland's ability to hold it together through a tour, let alone for a second album.

Some of the songs sound disturbingly like other STP songs, and at least one's guitar riff sounds an AWFUL lot like Sweet Child O' Mine's opening. What can you expect, I guess.

Certainly not the worst album that I had been looking forward to.

Read the whole post.

Monday, June 07, 2004

Don't blink, you'll miss the transition from spring to summer

Today's high temperature in Lakeville was 95F. Know what the high temp was yesterday? 95. Know what the humidity level is right now? 40%. Now, what was the high temperature a week ago? 61.

The high of 95 yesterday was a record. Yeah, terrific. Now give me back my 70 and sunny normal June weather.

Read the whole post.

Sunday, June 06, 2004

Books: Royal Assassin

So I finished up Royal Assassin today. It was quite good, much darker then the first book. The only dissapointing thing was that not a lot of stuff was resolved, it just more or less set the stage for the third book. I suppose that is pretty typical of the second book in a trilogy, but it still would have been nice to see things at least vaguely wrapped up.

Regardless, I'm looking forward to Assassin's Quest.

Read the whole post.

Friday, June 04, 2004

Bad File Descriptor for STDIN/STDOUT/STDERR

At the risk of this becoming a blog about why problems with Windows 2003 64-bit makes my job suck, we have new excitement today.

On our brand-spanking new Windows 2003 64-bit servers, after they have been running for a while child processes of services stop inheriting the standard input/output/error streams. And not necessarily all of the streams are invalid, sometimes it is just one, sometimes two, sometimes all three. When the file descriptors become 'bad', they start showing up as file descriptor #-1. Which obviously is invalid, trying to do anything with it just results in a Bad File Descriptor error.

The really strange part is that it doesn't seem to be a system wide problem, Terminal Server sessions have perfectly working streams. Its just the Services, and actually, just their child processes. Also, even though there isn't a problem opening new file handles, nothing is inherited by child processes. So god help you if you expected to be able to setup stdout to point to a file, spawn a child, and have the child write to that file.

Sigh.

Read the whole post.

Thursday, June 03, 2004

GetDiskFreeSpaceEx lies about remote mount points

Has anyone else noticed that UNC destinations that are hosted on mount points don't provide correct information about how much disk space is available? They seem to always return the information related to their 'head unit', the drive they are mounted on.

For example, run this perl program on for a drive, and the ora01 mount point. (Win32::AdminMisc::GetDriveSpace is just a thin wrapper around GetDiskFreeSpaceEx)


use Win32::AdminMisc;
foreach my $d ('J:\\','J:\\ora01\\',
'\\\\xxxx\\j$\\','\\\\xxxx\\j$\\ora01\\') {
my @info=&Win32::AdminMisc::GetDriveSpace($d);
print "$d\n Total: $info[0]\n Free: $info[1]\n";
}


Output:

J:
Total: 9047773184
Free: 6996824064
J:\ora01
Total: 9047769088
Free: 77381632
\\xxxx\j$
Total: 9047773184
Free: 6996824064
\\xxxx\j$\ora01
Total: 9047773184
Free: 6996824064


Notice that the mount point returns the total and free information for J:\, instead of for itself.

This behavior is not limited to GetDiskFreeSpaceEx, dir reports the same incorrect information:


C:\temp>dir \\xxxx\j$\ora01\.
Directory of \\xxxx\j$\ora01

1 File(s) 0 bytes
1 Dir(s) 6,996,824,064 bytes free


And 6,996,... is the amount of free space on J:, not J:\ora01. The behavior is the same even if you have mapped a drive to the mount point.

Must be some flaw with the CIFS protocol, I suppose.

Read the whole post.

Wednesday, June 02, 2004

The joys of buying furniture (pt 2).

A follow-up to the previous entry.

The sales lady's name was Heathar (spelled like that). Once I saw it, I couldn't help thinking of EVAR, as in BEST.MOVIE.EVAR.

Read the whole post.

The joys of buying furniture

Since we bought our house almost 3 years ago, it has been on-going saga to fully furnish the house.

Linzy moved in with little-to-no furniture, and I had only ever had to furnish apartments. Thus we had only one couch, one end table, one recliner, etc. That left one room pretty completely furnished, and others completely bare. After the initial purchase of the house, and the related expenses, a wedding, some debt repaying, etc, furniture purchasing was always towards the bottom of the list.

Thus we went nearly 2 years with almost nothing in our living room, right off the entryway. One time a neighborhood kid came over selling something, and while Linzy was filling out the paperwork, he looked around and said 'Did you just move in?'. Having to answer 'No, we've been here a couple years' sort of jumpstarted the completion of furniture purchasing. Even though by this point we had a bit of additional money earmarked for furniture purchasing, we spent months and months searching for just the right furniture. Since we had survived with mostly hand-me-downs and/or 'cost-effective' furniture choices up to this point, there was a determination to Do It Right.

So, fast forward a year, and we are nearly done. One of the last items on the list was a pair of end tables for the living room, to match the coffee table. On Monday we went to the furniture store to order them. They had some in stock, and the lady asked when we wanted to pick them up. Being Memorial Day, I assumed they weren't open, and suggested Tuesday. The conversation went like this:


Me: How about Tuesday?
Her: They aren't open then.
Me: Huh? It says Tuesday 11-7pm on the sheet?
Her: Yeah, well because of the holiday.
Me: Isn't the holiday today?
Her: Hmm, yeah....uh...hmm...let me ask.
Her: (to another sales lady) Is the pick-up place open tomorrow?
Lady2: Yep
Her: Oh.

So we got our appointment on Tuesday to pick up the two tables. Linzy insists the lady got a nervous twitch when I said 'Isn't the holiday today?'. I didn't see it.

Read the whole post.