October 31, 2007

Happy Halloween from Death

Yes, this is me.

Now if you'll excuse me, I need to put my skin back on for post 1,000.

October 29, 2007

Tester, Developer, Author...Songwriter?

I wrote an 80's-style power ballad on game cliffhangers for a contest over at Shacknews, and I was one of the top five. I'll find out this weekend what place I was in.

This was a bit of a stretch for me because I had to essentially divorce myself from existing melodies. I've done my fair share of song parodies over at the Shack...

Shub-Niggurath (to the tune of "Bohemian Rhapsody")
A brief take on the Source engine stuttering bug to "Mony Mony"
An Oompa Loompa warning song about Steve Gibson's unfortunate tendency to drop servers
We Didn't Start This Subthread (to the tune of "We Didn't Start The Fire")...just a listing of Shackmemes
Winter of '69 (to the tune of "Summer of '69")...based on a bug where all of the posts after the rewrite were showing up as being made back in January 1969.

...and this is just a small collection. Sometimes, you just have to stretch your creativity into new fields in order to keep your mind fresh.

October 27, 2007

XNA and VB, One Year Later

Over the last while, I've ranted and raved about Microsoft's XNA Game Studio Express Edition not supporting Visual Basic .NET.

Now that the ZMan is updating again, I've noticed a new post about some really poor communication skills from the XNA team about VB.NET support. He links to a great XNA/VB rant from a Microsoft MVP about it.

Now, awhile back one of the Microsoft guys said that the reason VB wasn't supported on the Xbox 360 was because VB used some features of the CLR that their version of the Compact Framework didn't support. I think I finally figured out what it was, and if it's the case, we have only our older VB6 brethren to blame.

The XNA team could have easily said that you couldn't use "My" on the 360, even though it's supported in the full .NET Compact Framework. They could have easily said that the Microsoft.VisualBasic namespace couldn't be used on the 360, and we would have adapted, even though it is also supported in the full .NET Compact Framework. But remember back in 2001 when the value of True was a big deal? It does make me wonder what other "hacks" were put into the full CLR to support the older VB6 way of doing things.

I love VB.NET with a passion, but over the last couple of years I have started to lose my faith in VB's future. When you look at many of the new features that are coming into the .NET Framework, the syntax that is being used to bring these features into VB is becoming more and more tortured, and some language constructs now go against best practices. (Using "Handles" with WPF applications means that you aren't using the WeakEvent pattern, for example.)

So as a result, we're going to have to move back to the realm of VB hacking to get things done...even though we no longer have that VB hacker icon to follow. If you want to use XNA and VB, you can check out Alan Phipp's page for now, but if we want full access to the managed world, we're going to have to tell Microsoft two things. One, it's okay to let the VB6 way of doing things die, and two, .NET-capable technologies that Microsoft releases must support all languages that are supported by Visual Studio out of the box.

Teams like the XNA team and the Windows Home Server team may only have the funding to support one language, but if something like that is detected inside Microsoft, the platform evangelism teams should step up to the plate with either funding or staff to help them support the other languages. After all, language diversity doesn't mean anything if Microsoft is only going to be giving us items we can use with C#.

October 25, 2007

Trapped in an Elevator

I wish that the title of this post was a lead-in to a witty non sequitor, a metaphor for a wasted life attempting to alternatively claw my way to the top of the corporate ladder and glide past all those nasty steps at the same time, or even a pithy euphamism for sexual intercourse, but alas, none of those apply at the moment.

I got off of work about 5:15pm this evening, wandered into elevator car #7, hit the button for the first floor, felt the familiar lurch as the elevator started to move and waited. The elevator ride at work is usually a very smooth one, so my first hint that something was amiss was when the doors hadn't opened after a few minutes.

I checked my watch and after five minutes had passed I opened the callbox door and pressed the emergency call button. A horrible-quality recorded voice informed me that they knew where I was and that someone would be on the line shortly.

A few moments later, a nice lady picked up the line. After I relayed my location, she asked if I was alright and if I was alone, and I answered both in the affirmative. She asked me to press and hold the "door open" button for five seconds because evidently in some elevator models, that makes the broken lift suddenly functional. This wasn't one of those models.

She asked which floor I was on. I said, "I'm on one of the express upper tier elevators, and the sign says I am on floor 'X,' so I must be somewhere between ten and one.". She said she'd call building security and hung up.

I stood there and in the silence I could hear the other elevators around me, merrily dinging and whirring away as they ferried their passengers up and down as they were designed to do. Meanwhile, mine was acting like a stubborn child refusing to follow the most simple instructions.

After fifteen minutes of not doing anything constructive, I checked to see if this was one of the cars where you could get cell service. I was expected to meet up with my wife later, and the inability to catch up to her because I was incarcerated in a 6'x8' cell an indeterminate number of feet off the ground tends to hamper one's ability to keep appointments. Unfortunately, there was no service.

A few times, I thought I heard a voice on the other side of the doors and called out, but there was no reply.

To attempt to occupy my mind, I sat down in the corner and played a few card games from Magmic Games on my BlackBerry, the entire time mentally lambasting the company for caring enough to animate card dealing but not caring enough to properly handle their menus after completing a resumed game or even handle the red "hang up" button from in-game per the interface requirements. Time trapped in an elevator goes so much more quickly when something else is wrong that you can fixate on.

After 40 minutes had passed, I called again to see if there was an ETA on being helped. The gentleman who answered said that the repairman was on his way and that he'd be there "soon.". I marvelled at his ability to vocally put quote marks around the word "soon" and resumed my wait.

After almost an hour and a half of being wrongfully imprisoned by a counterweight with a superiority complex, the doors opened a half of an inch. I peered out to see a short dude with a salt-and-pepper beard and the evening security guard. They asked if I was all right, then asked me to wait about five more minutes. Ten minutes later, the doors slid open. I was so happy to be free that I stepped through the doors just to have them close on me. Not "close on me" like the doors were being cockteases saying, "Ha ha, you can't get out...shoulda been faster.". They closed on me closer to how a Venus Flytrap closes on a meal. After a brief yelp of pain, I was able to extricate myself...onto the floor I started on.

I hopped on a different elevator, went down to the first floor and called my wife while I waited for the security guard. Once I gave him the information he needed for his report, the maintenance man told me what happened. The elevator goes up just slightly before going down, but this time it tripped some circuit and thought it was travelling down to the ground floor when in all actuality it remained two inches above the floor it started on.

So now I am sitting on a bus heading to the train station. To my left is a woman sobbing unconsolably because her boyfriend broke up with her via her cellphone tonight. Everyone else is pretending to ignore her while she is trapped in an emotional elevator waiting for the release that only a good cry brings. I guess I was able to turn this experience into a crappy metaphor. All I needed was the right motivation.

October 24, 2007

Updates

Five more posts and this blog will enter four-digit territory. I've made some minor template changes, etc., in preparation of a change that's coming with post 1,000.

VistaGameDoctor.com hit 225 games this week. More are on the way. With VistaGameDoctor.com out-earning this blog on a day-to-day basis by an average of 5:1, it makes sense to put a little focus over there.

You may notice a few posts being updated over the next few weeks. Some advertisers have asked if they could sponsor some of my "greatest hits" posts. Don't worry...any ads will be clearly marked. I won't let this become a spam blog.

I'm going to be away from my computer most of this weekend. Saturday is going to be a bit busy because I'm going to be starting up with a new D&D party (trying to get back into some in-person gaming and at least feel like the money I invested in D&D 3.5 was justified) as well as attending our neighborhood's annual Halloween party. Sunday will be my first trip to Six Flags Over Texas.

Finally, while I may not be all that happy with the minimal work I've done on USEMP, my XNA coding is working out a bit better. If all goes well, I'll actually have something you can play before the end of the year.

October 20, 2007

Steam (Or Lack Thereof)

Over the last six months, the amount of energy that I've had to pursue a lot of my personal interests has really dried up.

I haven't been happy with the code I've been writing for USEMP. Every line I try to write just makes me feel...dirty. My XNA projects have stalled out. I haven't been on MSN Messenger in months. Even my gaming has slowed down significantly.

Part of it is due to stress from before the surgery and the recovery and bills afterwards. Part of it is that work has required a lot more of me due to several departures from my department over the last year. Part of it is due to a bit of an emotional rollercoaster due to some dirty tricks by a former employer or a former employee of theirs...unsure which.

Regardless, Sarkie and Skeetles are still hard at work on USEMP (or not - see below), VistaGameDoctor.com is renewing interest in me, my upcoming casual game projects are giving me a chance to stretch my legs, and I'm finally beginning to relax.

Short term goals: Post 1,000 is just around the corner. I've got three major projects that are going to be complete next week.

Medium term goals: Finish wrapping my head around LINQ.

(Update: Fixed typo, added correction per a comment.)

October 18, 2007

"30 Days Of Night" (Mini-Review)

I got a chance tonight to watch a free screening of "30 Days of Night" at the Cinemark 17 in Dallas. There are times when free costs too much.

"30 Days of Night" is the first movie ever released in theaters where you can experience an entire month of boredom in real-time.

The number of legitimate scares in the film can be counted on one hand, all of the interesting scenes are either shaky-cam'ed to death, not shown or immediately cut away from, and the majority of the speaking parts are accompanied by both dialog that is stilted and out of place and acting that makes Keanu Reeves look energetic.

That said, there are a couple of fairly creepy scenes, including a scene with a child devouring a parent and the child's subsequent dispatching, but they are too few and too far between. The most frightening thing, however, is that this movie was considered good enough to release.

Your Halloween scare budget would be better reserved for your local haunted house or "Saw IV" when it comes out next week.

October 13, 2007

Firefox

I've finally given up and made the shift over to Firefox from Internet Explorer, but it isn't Microsoft's fault...it's Adobe's.

Under Vista, some embedded Flash animations interact with the browser in such a way that the entire Aero interface freezes for anywhere from 30 seconds to five minutes. Using Process Explorer shows hardware interrupts shoot through the roof. It doesn't matter if it's Vista 32- or 64-bit. It just sucks.

It isn't that I really like using Firefox. From a usability standpoint, I prefer IE. But given how critical Flash has become to using the Internet, until this interaction is fixed, my browser has changed.

October 9, 2007

The Most Dangerous Code

Over the last few months, there has been a gradual exodus from my department at work. As a result, I am currently the only programmer in the department.

In some ways, it's kind of nice coding solo. Because it's my design, I know the requirements, how all of the pieces fit together, what pieces can be reused elsewhere with a little extra design work and so on.

However, there is a hidden trap in coding solo. We are limited to our own experience and points of view. When we program with others, we benefit from code review as well as having sounding boards that we can bounce our thoughts off of. When coding solo, your own coding gremlins run around unchallenged. Your limited perspective runs unchecked through the design. You may miss the easy solution to a problem or the elephant-sized hole in the middle of your implementation.

I find myself coding a lot slower and doing more research to try to minimize the risks involved with coding alone, but you can never eliminate those risks completely.

What techniques do you use do keep the quality of your code up when you are coding alone?

October 5, 2007

SQL Injection...Again

We've got someone new trying to inject some bad SQL against our server at work.

An IP address originating in Mexico sent this query at us:

.../messageboard/standardboard.aspx?printview=1&ForumId=1%20declare%20%40q%20varchar%288000%29%20select%20%40q%20%3D%200x57414954464F522044454C4159202730303A30303A323027%20exec%28%40q%29%20%2D%2D

Decoded out, they sent us:

declare @q varchar(8000) select @q = 0x57414954464F522044454C4159202730303A30303A323027 exec(@q)

Decoded out even further, they were trying to execute this:

WAITFOR DELAY '00:00:20'

While I'm glad that none of their attacks have been successful so far, it keeps me up at night worrying that maybe I missed validating a query-string variable or that I've forgotten to handle a text-box.

Asshats like this make me sick.