tech

A WPF application idea

I was thinking the other day.

(Whenever I talk about how I was thinking sometime, I think of the 101 Dalmations animated movie.  The two crooks, Horace and Jasper are sitting in their car, and the fat one says, "You know, I've been thinkin'..."  The skinny one promptly bops him on the head, and say, "Now what have I told you about thinking!  I'll do the thinkin' around here.")

Anyways, no, I don't want to tell you about a 101 Dalmations WPF (Windows Presentation Foundation) application that would be neat.  It's actually a type of game.  I think any game in this genre would be conducive to using the WPF framework.

And the winning genre is...Space Strategy.  Also known as Explore, Expand, Exploit, Exterminate games, or 4X for short, these are the ones where you start with a home star system and expand with colony ships to other star systems, which you in turn use to gather resources and construct more colony ship, etc. etc. until you have a massive army and you annihilate the other players who are trying to do the same thing faster than you.  Some of the more popular titles are the Master of Orion series, the Space Empires series, and Alpha Centari.

So why do I think this type of game could be well done in WPF?  Well, they are mostly dialogue driven, and don't use any fancy 3D graphics.  So if you made all the menus fade in with scaling effects and such that would be pretty cool.  But besides looking cool, it would scale better to different size monitors.  From what I've seen, the interfaces of these games have so many buttons and different things to click that they have a rather fixed arrangement.  This would make things look significantly different on an ultra-high resolution, for example.  With WPF, all your graphics would be vector based, and the game would be able to fill a large screen without running the monitor at a non-native resolution.

Also, WPF seems to be pretty flexible (powerful) with layouts.  So it would be pretty easy to do customizeable toolbars, I'm thinking, or even something like the ribbon interface in select Office 2007 applications where the appropriate buttons come sliding in, depending on whether you have selected a planet or a ship.  (You should see the menu in Space Empires IV.  There are over 40 buttons on the top of the screen, always there.  They do have a decent solution in that only the ones you can use at any given time light up, but there is always room for improvement.)

Whether such a game could actually be economically written in WPF I really have no idea.  I imagine it would require a computer roughly along the lines of something capable of running Aero Glass to get anything playable.  And whether programming such a beast would be fun (a lot of angle brackets for the XAML) is doubtful, but I suppose designing one in C++ is also not too exciting.

Just another idea I thought I would throw out there.

Tags

WPF/E applications: latest reason to have 2+ CPU cores

In the course of satisfying my blog-reading addiction, I came across this nifty litle rock-paper-scissors game.  It is done in WPF/E, basically Microsoft's version of Flash[1].  So there are animations all over...

Which brings me to realize why we need more processing power.  My poor Pentium-M 1.6GHz processor pretty much died while the application was running.  That's right, my processor was maxed out by a rock-paper-scissors game.  The past few year's worth of advances in the fine art of computer programming sure are great.  I can envision a time when I'll need a core to animate the start button, another to animate the background (already implemented in Dream Scene), one to make all my desktop icons slowly revolve around in a complex spiral so that the ones I'm most likely to use at a certain time of day will be in the center at that certain time of day (you KNOW that would be super-sexy), another to index everything constantly (I think I need a separate HDD for the indexer actually, 'cause it's always keeping mine busy), and another to actually respond to what I want it to do.

Anyways, back to the game.  I imagine if I had a real graphics card instead of an integrated POS the game wouldn't have run so slow, but it is still rather pathetic.  All of those fancy scaling vector graphics don't run so well without a real GPU.  Just the background gradient which slid up and down repeatedly would max out my processor.

Such is progress I guess.  I look forward to the future of sliding vector-based menus and animated backgrounds overlayed with 3 layers of transparent objects.  As long as I can "Flip3D" through everything I'll be happy. :)

And yes, I did win the match.

  1. As an aside, one nice thing about the WPF/E plugin for IE7 on Vista (possibly this is also true on other browsers/platforms) is that it didn't require me to restart my browser.
Tags

Vista upgrade with Steam (Valve software)

I recently installed one Vista version (Ultimate) over another (Business).  I originally tried to upgrade from Business to Ultimate, but got a blue screen upon boot after the upgrade.  So I did a new install of Ultimate.  As you might be familiar with, the installer will put your old Windows installation in a folder at C:\Windows.old\.  It does this whether installing over XP or Vista.

How this relates to Steam is that I had Steam installed on my old Vista, and had quite a lot of content downloaded (17.5GB).  Unfortunately I did not use the backup feature of Steam to backup all this to a file before I installed Vista again.

Needless to say, I didn't really relish downloading that much stuff again (it's probably 10GB when compressed).  So I installed the Steam app from here, and then went digging in Program Files.  It looked like most of the data was in the folder "steamapps," so I copied that from C:\Windows.old\Program Files\Steam\ to C:\Program Files\Steam\.  One file was a duplicate between the two, and I DIDN'T replace that one.  Then I started up Steam, with my fingers crossed.  It showed all the games and trailers still there, but the games needed updating.  They each took less than 20 seconds to update, and I was off on my merry way.

So the short of it is that you can just copy the steamapps folder from one computer to another (probably you have to have the same Steam username on both computers though).  I haven't tested all the games yet, but Counter Strike: Source and Half-Life 2: Deathmatch do work, and all the other things I have are based off the Source engine anyways so will probably work.  I'll update this if I ever find a game that didn't make it through the transfer.

Tags

Microsoft programmers: what are they doing all day?

According to this Wikipedia article, Windows Vista Beta 2 had 50 million lines or code, or about 10 million more than Windows XP.  That seems like a lot, right?  Well, take a look at these calculations:

Say there were 15 million lines of code added for the final version of Vista (I doubt many more than a million were added between Beta 2 and RTM, but I'll be generous).  Then say that they had 4 years to work on it, working 200 days each year (again, being quite generous with the numbers).  So 15,000,000/(200*4) = 18750 lines of code per day.  That seems like a lot.

But lets consider: Microsoft employs at least 60,000 people.  Let's again be generous and say just 1000 of those were actually writing code daily.  Do some division and you get each of those 1000 coders writing just 18.75 lines of code per working day.

What were those employees doing the rest of the day?  Here are my ideas:

  • Figuring out how to merge their source with everyone else's.  I suppose it is no small task to combine 15 million lines of source code from 1000 or more different programmers.
  • Planning features.  However, I suspect that there were several thousands of other employees doing this and other things like testing and graphical design.  I think my guess of 1000 coders should be somewhat close to how many people Microsoft had programming on their flagship product.
  • Quality control.  Microsoft does have their initiative to write super secure applications; maybe this takes a lot of effort.  I suppose if you write enough unit tests....

I would love to see some holes poked in these numbers or find a really good excuse.  Seriously, less than 19 lines of code per day?

Tags

My spring break entertainment: monstrous computer fan

My brother and I took apart a microwave this past weekend.  They are surprisingly simple inside--just a capacitor, microwave emitter, circuit board and a really big fan.

All right, maybe it's not that BIG, but it is pretty cool.  It's actually a blower (alright, two blowers).  As such, it is lots more nifty than just having 15 120mm fans spread out in your case like some LAN party freak.  And my dad just happened to have brought home an old computer from work that he only wanted the hard drive from, so I had a case to hack apart.

One hour of measuring and Dremel work later, I had something that actually looked pretty decent.  As for powering the fan, it appears to run off of 120VAC.  So I hacked a notch in the case to allow passage of a power cable (of course I borrowed the old power cable from the microwave) and powered it up. 

Pros

  • Extremely high airflow.
  • Easier than water cooling.
  • Cheap (two wire nuts for about $0.20)
  • More 1337 than a Linux tattoo on your forehead.

Cons

  • Extremely loud.
  • Smells like a weird mixture of all the greasy food someone has cooked in their microwave over the past 15 years.
  • Is poorly placed in case, resulting in a lot of sucking and blowing but it's all in the wrong spots.
  • Blocks anything resembling a normal size add-in card.
  • Probably generates large and powerful magnetic fields inside the computer case.
  • Idles at 3+ amps.  In other terms, it easily burns 360 watts.

I haven't actually tested to see if the computer functions with this thing inside (I don't think there would be any problems other than magnetic fields, but I doubt even that will be an issue).  Here are some obligatory pictures:

Tags

Vista Media Sharing With Xbox 360 Permissions Problems

Last night my cousin and I put some serious effort into getting a Windows Vista (Ultimate) machine with Media Center to share music with an Xbox 360.  Several hours later we finally got it to work, but it was quite a journey:

First off, our setup is maybe a bit non-typical from the standard home setup Microsoft envisioned when they designed it.  We have a domain with 2 servers, one which has all the media files on a shared drive.  We usually just add the network path of the shared drive to WMP11 on our local machines usually and it works just as well as if they are on the local HDD (provided the network is not down).  The two servers run Server 2003, and Microsoft dropped the ball there by not enabling WMP11 or Windows Media Connect to install on Server 2003.  So we setup another computer with Windows Vista Ultimate.  The plan was to add the media files into WMP11 using the shared drive on the server, and then share them on the Vista box using the built-in Media Sharing feature.

Unfortunately we ran into a permissions problem.  Except we didn't know this right away, and kept resetting everything, rebooting computers and the Xbox, and being really frustrated.  Really, really frustrated.

There are several problems.  First is that the Xbox doesn't show up to "Allow" in the Media Sharing dialogue until you try to access the shared library using the Xbox.  Of course it gives an access denied message (since you can't allow it in Media Sharing because it's not even there yet), and then it appears in Media Sharing and you can allow it.  Inconvenient.

Second, there are multiple users that can share a library on the same machine. This is a PITA.  As far as I can tell, wmpnetwk.exe goes through the C:\Users\ folder and looks in all the profiles for a WMP11 database (C:\Users\%username%\AppData\Local\Microsoft\Media Player\).  So it will share any user's library when the settings are configured to allow that (and the settings can get really goofy really fast--they are deceptively simple).  Then you will see two different libraries (or three, or four) to connect to on the Xbox, but they will both be on the same computer.  Invariably, one of them shares only the songs that ship with Vista, and since you haven't gotten anything else working yet, that is all you can listen to.  Anyways, I had an old profile on my computer from before it joined the domain, and I wasn't able to delete the profile because the WMP11 database was in use by an application.  So I had to disable Media Sharing, end the wmpnetwk.exe process, and then try and delete it (it didn't work until the 3rd or 4th try for some reason).  The real WTF is that this was all going on while the old user didn't even exist on the computer anymore (deleted via lusrmgr.msc).

Third, the permissions problem.  It turns out this is what was really stopping us the whole time.  The other two problems are just annoyances.  We would be able to get the right username on the right computer to show up on the Xbox 360 and it would connect fine, but the library would always be empty when we went to play songs.  After suspecting permissions problems and finally just copying some files to the local HDD before we added them to the library on the Vista machine, we were able to actually see songs and play them on the Xbox.  Much rejoicing.  So we grabbed the drive from the server (good thing it was external USB) and hooked it up to the Vista box.  It still seems to be working (although I did have to power-cycle the HDD this morning, I'm not sure what happened there).

The permissions things boils down to Media Center and Media Sharing both wanting their own user account to access media.  I'll speculate that the process that tried to set these permissions did not have permission to set them, and thus neither Media Center or Media Sharing was able to use them.  Anyways, the files on the external drive now have have two additional users in the security tab--"WMPNetworkSvc" (for Media Sharing) and "uuid: 10000000-0000-0000-0200-0017FA3792D7" (for Media Center).  No, I didn't know that the obscure uuid number was associated with Media Center until I opened up the local user manager and saw Mcx1 next to that mess of numbers and then read online that Media Center uses user "Mcx1" to access files.

So, if you really wanted to share network files via Media Sharing or Media Center, you could either give the media machine's Mcx1 and WMPNetworkSvc users read access to the media files or just give everyone full control of the media so that the necessary permissions can be applied (the former is recommended over the latter).  We ended up just moving the media files, but that might not be viable for some people.

Linux (Still) Not Ready

Every year or so I get some incredible itch to install Linux.  I suppose it's because I read so much online about how great it is, how it is finally ready for all the desktops of the world, how Microsoft is the coming of the Apocalypse, and how the latest version of it is better than ever.

So I would download the latest ISO file, burn it to disk (the last few times I was smarter and used a CD-RW), and install.  Things like no support for SATA or an install process that required a deep knowledge of Linux file systems used to get in my way, but of course the next version always promises to fix this (and that's usually correct).

Fast forward to the beginning of January.  I get most of the way through a Gentoo install (an attempt to "learn more about the inner workings of Linux").  I don't know how much I really learned, basically I was just copying command line commands off of the Gentoo handbook.  I never finished, and the machine sat there, 3/4 complete, powered on for 2 months, until...

I figure it's finally time for me to get a Linux install that works so I can start learning some stuff.  Pop in Ubuntu CD, next next next, complete.  Pretty easy, right?  So up comes the desktop, there it is in all it's glory at 1024x768.  For all the people who criticize Windows XP for looking like a kids toy, they evidently haven't seen Ubuntu at this resolution.  It may not have blue and green colors, but there are wasted pixels and bloat everywhere, including a bar at the top AND bottom of the screen.  Efficient power user OS indeed...

My LCD supports 1280x1024, and so does my video card.  What video card doesn't right?  I figure, "It's 2007, I damn well better not have to edit a config file just to change my resolution."  To my surprise, I found the option to do it, nice point and click.  Also to my surprise, there was no option for 1280x1024.  The highest was 1024x768.

Now I wonder how to fix this.  Do I update the driver?  It seems that it should be able to support this standard resolution right out of the box.  Will I have to edit some config file?  Who knows.  I'll get to that some other day, because 1024x768 is livable for a little while.

So I look into joining our domain.  This is a VERY easy process (please click that link just to see how easy it is) on Windows: set DNS entries, enter domain in text box, click OK, and enter administrator password.  What is the Linux equivalent?  Ensure 6 packages (plus dependencies) are installed, edit 3 text files (be careful lest you make one typo and it doesn't work), restart 2 services, and issue the actual command from the command line (admittedly there are better things in place in case of failure on Linux than Windows--you can check the log files, whereas in Windows you would be left hanging).  Needless to say, I won't be joining my domain at work for a few days.  Someone please tell me how this needs to be so much harder than in Windows.

Is it unfair to ask Linux to measure up to Windows?  Maybe.  Does Linux need to be as easy as Windows to gain appreciable market share?  Most definitely.  Is it very close?  Nope.

Tags

How About A Matrix Background for Vista Dream Scene?

I had a pretty good idea today.  It relates to Dream Scene, a feature of Windows Vista Ultimate.  It is a desktop background that uses videos & animations, so that you can have animated backgrounds.  The only one I've seen in action was a sunset scene of a lake, with the waves rippling, and I'll admit it was pretty cool (resource consumption aside).

So I think there should be one of these that does the Matrix thing.  You know--the water-falling green symbols.  Neo would be happy.

Tags

Word 2007 - bibliography features

So I'm watching this on10.net video right now.  And I also just finished writing a paper for English 120.  With a bibliography.  And about half-way through the video, they start talking about the bibliography features of Word 2007.  I don't get that excited about a whole lot of stuff, but when I saw them demonstrating how to make a bibliography, I definitely did.  This is a killer feature.  Here are the essentials:

  • You add your sources using a basic data-entry form.  Of course you can choose the type of source, such as website or book or even patent.  This feature alone would be useful for managing sources, even if it did nothing with the data.
  • You type your report and use the ribbon button for "Insert Source" to select your source, and it automatically puts in a correctly formatted (punctuation and typesetting) citation.  Excitement level goes up because citing sources just got a hell of a lot easier.
  • Want a bibliography at the end?  Just add it in using a document building block (sounds complicated, but after you've done it once it should be easy) and it will put all your sources correctly formatted.  I assume this also updates if you add new sources in the source manager.  Excitement level increases significantly.
  • Did you enter that name wrong?  Just go change it in the sources manager, and it will automatically update it in the citation and the bibliography.  More excitement.
  • Oops, did you do everything in APA format instead of MLA?  Do you spend the next 20 minutes switching underlining, punctuation, and information order just to get those 10 points back in class?  No, you have Word 2007.  Just change the selection on a drop-down to MLA (or one of 8 or so others), and all the formatting AUTOMATICALLY UPDATES.  Excitement level reaches all time high.

Now, I realize that other programs are capable of generating bibliographies, but I doubt any of them are as polished as this is.  And I really doubt any of them have such tight integration with a word processor and will automatically update all the stuff we just talked about.

So that paper that I just wrote?  Yeah, it was horribly formated, lacked data, and I didn't really care how good it was.  Will I lose points?  Probably not.  But you can be sure that my next bibliography (and citations) is going to kick some serious ass.

Tags

Inconsistent Ctrl+Del behavior

One annoyance that has gotten me quite a few times lately is inconsistent Ctrl+Del key behavior.  If you weren't aware, in most programs this is supposed to delete one word to the right of the cursor's current position (and usually one of the spaces).  Similarly, Ctrl+Backspace deletes one word to the left of the cursor.

Some programs don't play nice with Ctrl+Del (I have found Ctrl+Backspace to be fairly consistent).  Would Microsoft please clean up their act?  Here are some results (all tested in Windows Vista, but I know I've seen some of the same in XP also):

  • Notepad: deletes entire line to the right of the cursor
  • Wordpad: deletes one word
  • Word 2007: deletes one word
  • OneNote 2007: deletes one word
  • IE7 Address Bar & Search Box: deletes entire line to the right
  • IE7 Textbox: does absolutely nothing
  • Windows Live Writer: deletes one word
  • Start Menu Search Box: deletes entire line to the right
  • Visual Studio 2005: deletes one word
  • Editing File Names in Explorer: deletes entire line to the right

So we see three entirely different, largely unpredictable results, from one company.  The closest thing to a trend is that the "major" word processing tools have the correct behavior, while simple things such as text-boxes and Notepad are wrong.  At least Ctrl+Z (undo) is there to save you when that whole line disappears.

Tags