in

Chris Kirby

public string Subtitle { get { return "I hope i didn't say that out loud just now..."; } }

Syndication

This Blog

Chris Kirby's Inner Monolog

  • Do it Chunk!

  • Quote of the Day (cliff)

    “My name is Cliff, brother of Joe. I got me some crack. I want me some hoes!”
    Cliff O’Malley, Dead Man on Campus

    Let me hear ya say yeah!!!

  • WoW patch day

    The big 3.0 patch is out today! All kinds of game changing goodies. Looking forward to checking it out, haven't played wow in a long while now.

  • WoW one-liners, a battle of wits

    Blizzard's recent "Rouges Do It From Behind" one-liner from their music video contest has inspired me to show some love to the other classes out there and create some on-liners just for them...so here goes.

    • Does a Druid shit in the woods?
    • Priests do it missionary style!
    • Hunter's do it with a friend!
    • Warlock's pet their imp!
    • Mage's conjure their booty!
    • Pallies seal the deal!
    • Shaman's know their totem!
    • Warriors charge!

    I know what your thinking...what a superior wit! I know... I know....please, stop the applause....

  • Blu-ray, the HD-DVD mutilator....its got what movies crave!

    This is when early adopting can really bite you in the ass. Especially when I know HD-DVD is more versatile format (its even got versatile in the name, how cool is that!!). But if you think about it, it was a lost cause from the get go. Sony and their camp had no option but to win, and they certainly had the means to do so this time around. They banked their whole Playstation franchise on the thought that they could muscle their format to the top with a little help from Sony pictures and of course, Michael Bay and his famous HD conspiracy theory. But Sony's brand of force feeding certainly seemed to work...Though, not to give them too much credit, they are still 1-2 overall (RIP Betamax and MiniDisc). Did I mention I was a proud owner of MiniDisc?? The question I'm asking myself now is why did I buy in to this bullshit in the first place. The so called 'war' was certainly not in my or any other consumers best interest to participate in. Yet we all do it time and time again...maybe its simply our competitive need to choose sides, or the age old "my dick is bigger than yours" that gets us all riled up (mine is btw). But then I think, none of this will really matter anyway. The fatter my Internet pipe gets and the bigger my hard drive's are, the less want or need I will have for a factory stamped disc that collects dust on my bookshelf. Though I still have some affection for those round shiny disc's, so its gonna be a hard habit to kick.

  • Quote of the day

    When will then be now? Soon...
    Dark Helmet and Colonel Sanders, Sbaceballs

  • Building a raw xml request for a RESTful WCF Service operation which accepts a Generic DataContract type

    I wanted to post my experiences with WebInvoke using generic DataContract's as parameters, because I found so little information on the subject via MSDN and throughout the interweb. Specifically, on how to properly formulate a non WCF client XML POST request in this scenario. I will not be focusing on how to host and configure the service (creating REST based services and endpoints in WCF), since I found plenty of information available in that area via blogs and msdn documentation.

    Lets start with the following service contract and corresponding data contract types:

    [DataContract(Namespace = "http://chriskirby.net/examples/blog/data")]
    public class BlogPost
    {
    	[DataMember]
    	public string Title;
    	
    	[DataMember]
    	public string Body;
    	
    	[CollectionDataContract(Name = "Tags", ItemName = "Tag")]
    	public string[] Tags;
    	
    	[DataMember]
    	public DateTime PubDate;
    }
    
    [DataContract(Name = "BlogCreateRequestOf{0}", Namespace = "http://chriskirby.net/examples/blog")]
    public class BlogCreateRequest<BlogDataType>
    {
    	[DataMember(Order = 1)]
    	public string Username;
    	
    	[DataMember(Order = 2)]
    	public string Password;
    	
    	[DataMember(Order = 3)]
    	public BlogDataType Data;
    }
    
    [ServiceContract(Name = "ExampleBlogService", Namespace = "http://chriskirby.net/examples/blog")]
    public interface IBlogService
    {
    	[OperationContract]
    	[WebInvoke(Method = "POST", 
    		BodyStyle = WebMessageBodyStyle.Bare, 
    		RequestFormat = WebMessageFormat.Xml, 
    		ResponseFormat = WebMessageFormat.Xml, 
    		UriTemplate = "/CreateBlogPost")]
    	bool CreateBlogPost(BlogCreateRequest<BlogPost> request);
    }

    As you can see above, the operation CreateBlogPost on the service contract IBlogService returns a boolean and accepts the type BlogCreateRequest<BlogPost> as its input. To the outside world via wsld or IMetadataExchange, the operation CreateBlogPost accepts schema type BlogCreateRequestOfBlogPost with a default namespace of http://chriskirby.net/examples/blog, however, the Data property is of schema type BlogPost with a namespace of http://chriskirby.net/examples/blog/data. To formulate the request properly, you need to make sure each node in the xml request is of the correct namespace, otherwise the DataContractSerializer will not recognize you request on deserialization, and WCF will return a 400 error (Bad Request). I've also used several notable DataContract and DataMember properties in order to control how the type looks to the outside world (serialized). On the BlogCreateRequest generic class I specified the name of BlogCreateRequestOf{0}, which in this case translates to BlogCreateRequestOfBlogPost. If I chose not so specify the name using the placeholder, the DataContractSerializer would serialize the type with a name like BlogCreateRequestOfBlogPost4sdop, where the suffix is comprised of a series of random characters to ensure that the type has a unique name. However, I know that my service will not use any other types by that name, so I can safely specify it for ease of used to the client. I also used the Order property, which is pretty self explanatory, it simply ensures that the serializer will use the same order I specified in my class definition. Finally, I decorated the Tags property on BlogPost with the CollectionDataContract attribute which allows me to specify how I want the collection formatted by serializer, e.g. <Tags><Tag/><Tag/></Tags>.

    Formulating the request:

    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = false;
    settings.OmitXmlDeclaration = true;
    settings.CloseOutput = true;
    settings.ConformanceLevel = ConformanceLevel.Document;
    settings.Encoding = Encoding.UTF8;
    
    StringBuilder fileStringBuilder = new StringBuilder();
    XmlWriter writer = XmlTextWriter.Create(fileStringBuilder, settings);
    
    writer.WriteRaw(@"<?xml version=""1.0"" encoding=""utf-8""?>");
    writer.WriteStartElement("BlogCreateRequestOfBlogPost ", "http://chriskirby.net/examples/blog");
    writer.WriteElementString("Username", "TestUser");
    writer.WriteElementString("Password", "TestPassword");
    writer.WriteStartElement("Data");
    
    writer.WriteElementString("Title", "http://chriskirby.net/examples/blog/data", "XML Post to WCF REST Service");
    writer.WriteElementString("Body", "http://chriskirby.net/examples/blog/data", "Blah Blah Blah");
    writer.WriteStartElement("Tags", "http://chriskirby.net/examples/blog/data");
    writer.WriteElementString("Tag", "http://chriskirby.net/examples/blog/data", ".Net");
    writer.WriteElementString("Tag", "http://chriskirby.net/examples/blog/data", "WCF");
    writer.WriteEndElement();
    writer.WriteElementString("PubDate", "http://chriskirby.net/examples/blog/data", "01/18/2008");
    
    writer.WriteEndDocument();
    
    WebClient webClient = new WebClient();
    webClient.Headers.Add("Content-Type", "application/xml; charset=utf-8");
    
    string response = webClient.UploadString("https://chriskirby.net/services/blog/CreateBlogPost", "POST", fileStringBuilder.ToString());

    The tricky part here is really just understanding how the DataContractSerializer works... which now, after hours of debugging, I now have a much better understanding of. The key points of understanding for me were discovering how to assign the correct namespace to the corresponding node as well as figuring out how the serializer organized generic types, specifically my generic type CreateBlogRequest<>. During your first glace at the service and data contract code block, you may have thought as id did in that the Data property/element would be in the http://chriskirby.net/examples/blog/data namespace, since it is in fact of type BlogPost...however, the Data property is first an foremost a part of the BlogCreateRequest type, so it must be a part of the class namespace and not the namespace of its generically assigned type. My second, and ultimately incorrect thought, was that the structure would look like <Data><BlogPost><Title/>....</>. But after careful thought, that would mean Data would be of a type which had BlogPost as a member, which is not the case here. Its also worth noting there are several other ways of formatting the xml request to get the same result. The most common would be to declare both namespaces in the root element and assign them prefixes, you would then use those prefixes to denote the namespace in each element in the document.

    So there you have it...The simple and sometimes complicated power of WCF. I look forward to many more headaches adventures in the near future.

  • The Red Ring of Death, how festive...

    Dear original 360 owners, if you have a pre hdmi Xbox 360, then your console is basically a ticking time bomb that will die at any time. Fortunately for me, it lasted just over 1.5 years before it finally fried. All it took was a 6 hour session of guitar hero III for mine to experience the warning signs (consistent game freezes) and finally detonate. Nearly everyone I know with a 360 lately has had the same issue...which can probably be attributed to the latest crop of games exploiting the full horsepower of the console. The one good thing out of the whole experience is that Microsoft will still repair this particular issue free of charge, in or out of warranty; which, in my opinion, is their rightful obligation to do so. Also, on the upside, it only took a total of 2 weeks (1 week just to get the box) to receive the repaired unit back...which was considerably faster than the estimated 6 weeks. And they threw in 1 month free of Live Gold, which was a nice bonus. Though, I had already purchased a new Elite, since I am the Zen master of patience...so time was less of an issue for me. If you do have a pre hdmi 360, don't bother with the cooling units either. Most forums on the subject suggest that using a cooling unit may even have the opposite effect causing additional strain and possibly voiding the warranty.

  • Zune battery drain issues

    I just recently noticed this issue discussed on engadget, primarily because I leave it connected to the syc cable all day which keeps the battery topped up. I also wonder if its related to the reports of the much shorter than advertised audio playback battery time. The review shows only 22 hours of real world playback time with wireless off, which is far less than the 30 advertised. I've not verified this myself, but I'm sure my experience will be slightly different given that I use a set of Bose headphones in place of the included premium in-ears.

    I'm sure both these issues can be worked out with a  new firmware release, I just hope its soon. Until then though, MS recommends you manually power down the device by holding back and down. And, I would leave the wireless adapter off until you intend on using it for sync or social.

  • Why I chose the new Zune over the iPod touch

    Seems crazy right? I thought so at first considering that the iPod touch was probably the coolest gadget I've held in my hands to date. Not only was it thin, small, and of high quality build components but also had a revolutionary touch screen interface originally available only on the iPhone. With all that said, there were some things that just didn't work for me and my Windows centric lifestyle, and I ultimately decided to return it.

    iTunes.
    Is there a more bloated and clunky media application for Vista? I think not! it totally pukes on a library as large as mine (16,000 songs) and continually created system instability and crashes. I've literally spent countess hours uninstalling and reinstalling, trying to figure this out, but I think it simply comes down to poor support for a large network library of music (all my songs reside on a local file server connect via gigabit LAN). Previously I used alternative software like Anapod, but there is currently no support for the Touch. And even if it did, doesn't support podcasts and store bought music.

    Windows Media Support.
    The only way around this is was to literally have iTunes convert all of my wma tracks to aac audio files. Now, initially that wasn't a deal breaker for me, but considering I have over 4,000 wma files in my library, it turned out to be quite an overwhelming task. That, and I'm stuck with 4,000 duplicate tracks needed only for iTunes and the iPod. Third, its overall inability to integrate in to my tech lifestyle. Since the iPod touch is Internet enabled via its built-in 802.11 b/g, it has a couple of the killer iPhone features such as safari and YouTube. While initially great, this created too much gadget crossover for me since I already carry with me an 802.11 b/g and 3g enabled window mobile 6 smart phone which can do both of those things, though admittedly not as well. In addition to that, it has no support for my Xbox 360 (and I'm not talking about the crappy library sharing via iTunes, which does not work with network tracks btw) and no glimmer of future support for a subscription music service via iTunes or the wireless store on the iPod.

    Storage And Cost.
    The device itself was limited to about 14 gigs of flash storage and cost $400 bucks. At the end of the day, it was just too little and too much to justify.

    Now on the the new Zune. I snagged one of the rare 80gb models last Tuesday at a Target near me, and have been very pleased with it thus far. For starters, its a LOT smaller that the old 30gb brick, with nearly 3x the storage capacity, and a cost of only $249 bucks. So already its off to a better start.

    The Software.
    The new Zune software is a significant upgrade from the original. The interface has been totally redesigned for the better and looks and acts as I would expect a Microsoft developed WPF (Windows Presentation Foundation) app to, even though it unfortunately is not WPF based. The navigation is a clean as it comes, and actually reminds me of the iPod touch interface experience quite a bit, less the touch screen of course. The new features included with the software are complete podcast subscription support via Collection or the Zune Marketplace (finally!), integration with the new Social, and wireless synchronization over your local wifi network. The podcast support is great, as of now they have a growing catalog of choices via the marketplace, or you can add the rss feed directly in the podcast section of your collection. Best part is that all iTunes podcast feeds designed for the iPod will work natively on the Zune, no transcoding necessary! The Social has been beefed up as well, which now has a built in messaging system, a new Zune card which shows all your recently played tracks and music prefs to your friends, and has even tighter integration with my Xbox live gamer tag...e.g. friends list and shared MS points. All of that combined point to some pretty amazing things on the horizon for Zune and 360 owners...I'm already envisioning full marketplace and social integration with Xbox. Just imagine being able to stream your subscription music or Zune radio channels on your Xbox while playing some Halo 3! The wireless sync is a very nice feature as well, though when I did it for a fairly decent size sync, it ate most of my battery in the process.

    The Hardware.
    This time around its got some significant improvements. The most notable are the size and construction, the new touch sensitive dial, and the incredible premium headphones. The size seems half the foot print of the original, and Microsoft used some higher quality components on the exterior. Primarily the change to a glass screen instead of plastic, the extra .2 inches of screen real estate. On the inside they added chip support for MPEG-4 and H.264 a/v an updated wireless adapter which now supports wpa2 security, and a new hard drive that's smaller and allows for 30 hours of audio playback on one charge. The touch sensitive dial is a very nice addition as well, it works just as you would expect sliding in the direction you wish to navigate. It's also a convenient way to adjust the volume when playing music and video...you even have the option to turn it off if you don't care to use it. Lastly, the new included premium headphones were the real surprise for me. They are hands down the best in-ear headphones that I've ever seen included with a media device...and I've bought a lot of music and video players over the years. The earpieces themselves come with 3 sizes of ear fittings and magnetically stick together for storage, which is even more convenient then you would realize. Also, the cord for the headphones are wrapped in a thin rope vs your typical plastic casing, which makes them considerably more durable. Granted, they will not take the place of my uber expensive Bose noise canceling headphones, but they are an excellent and more portable alternative for certain situations.

    Final thoughts.
    Overall, I'm extremely happy with my decision. Not only did I save $150 bucks, but I now have a music player and software that tightly integrates with the OS and gaming platforms that I already use. And, as much as Apple has done to make the iPod at home on Windows, it just isn't enough to compete. And honestly, I don't think they care. They would much prefer and have certainly designed for their devices to function in their world of the Apple desktop and the Apple TV, which is fine considering the Zune is equally targeted to the Microsoft universe. Though, i would love to have one of those 17" Macbook Pro's running Leopard and Vista, they truly do make some, usually unrivaled, hardware.

     

  • Visual Studio 2008 is GOLD and available on MSDN!

    The wait is over, and I still can't wait! The only issue I'm going have with the upgrade at this point is that Fortress is not going to support 2008 integration until version 1.1/4.1, which unfortunately is still several weeks out according to their support site. At least the folks at Jetbrains were on the ball...resharper already has experimental support for us immediate adopters.

  • Alienware, The Suckers OEM

    Want to pay top dollar for a brand new partially working gaming pc with a voided warranty? Or better yet, would you like to pay $4,000 do get kicked in the balls? oh yes please!!! Then Alienware is the company for you!

    Some background...I've been building my own PC's for some time now until about two years ago when I decided to go with a fully pimped out Alienware gaming PC. I was at the point where I could afford to pay a boutique shop (at the time) to do it all for me with a warranty and the whole nine. My initial experience with them was average at best. My order took longer than expected and when it finally did arrive, it was missing the software disc containing all the drivers and the radiator for the liquid cooling system was mounted improperly. For the disc, which I absolutely needed since it contained the retail apps for my x-fi sound card, it took several support chats, a 6 dollar shipping fee, and 2 weeks to arrive at my door. As for the radiator, I was able to rig it properly using my past experiences in building my own over the years. Needless to say, a pretty rocky start. However, given all that, the machine itself has preformed decently for me over the past 2 years...enough so that I recommended them to a friend. Which brings me to today.

    My friend ordered his $4,000+ rig just a few months ago online. The estimated delivery time was roughly 4 weeks, but it took over 6 weeks to arrive. And that was after server phone calls, getting a separate excuse each time to explain the delay....and no, their online order status system has not improved one bit over the two years, it literally stayed at the initial payment received phase for over a month. Now to the guts of the story. The computer arrived and my friend did a clean install of Vista Ultimate followed by all the accompanying drivers and applications that came on the Alienware system CD. During the first days of operation things just weren't working right, the sound wasn't working, the Alienware configured Nforce raid 0 array was notifying him of read and write errors, and the computer was randomly rebooting and/or blue screening. Now, given that I've been a windows user since 95, the very first thing you do in a case like this is to check and update all your drivers. And, as usual, nearly all of the drivers provided on the included cd had a new update available from their respective manufactures web sites. Including Nforce chipset drivers, Nvidia graphics drivers, new x-fi drivers, and even motherboard bios updates. Now, none of this is new to you if your a PC owner...to keep windows and especially games running in peak condition, we have to do the update rounds quite often. Ok...so all of that was done, and there still seemed to be something wrong. At that point, he was still receiving some read/write errors from the raid array and getting the less frequent random reboot. Now, given that all the software was as current as it could be, he turned to hardware as the possible culprit...specifically a memory module (4x1gb) or a bad hard drive (2x150gb raptor's) given the symptoms. As of this point in the story, my friend was about 45 days in and beyond the 30 day money back guarantee, but he really had nothing to worry about since he paid for the upgraded 3 year full boat warranty which would cover any hardware problem over the duration. So, he finally had no choice but to call up Alienware support, which was where it all went horribly, and almost criminally wrong.  He proceeded to tell the support tech about all the trouble he had been having and what he had been doing in attempts to resolve the issue...then he gets to the part where he said that he upgraded the bios to the latest version, and the tech completely shuts down. "Sir, there is nothing I can do since you've upgraded your bios. You warranty is now void and we have you recorded saying that you did it" ... let me repeat that, His warranty was now VOID, his $300 cash upgraded 3 year warranty, is VOID, because he update the bios to the latest version!! Un-fucking believable to say the least...what gamer or pc enthusiast on the planet would not update his/her bios to get the latest fixes and features out of THE main component of the PC? To make things even worse, the tech even refused to help or provide support in any way after that...meaning that not only are they out to screw you out of your warranty, but they have no interest in even supporting their products or their customers, in or out of warranty. Not to mention that MY Alienware, that sits below me as I type this, was in fact never under warranty, since the very first thing I did when I got it was to update the chipset drivers and the motherboard bios. Thanks for nothing!

    I'll tell you this Alienware, you've made a very motivated and relentless enemy here, since I've now made it my mission to tell as many people as I can about this outrageous and shocking experience. And I think it goes without saying, that neither I, my friend, or anyone we know, meet, speak to, wave at, point towards, or write about will not even consider buying an Alienware PC, Server, Notebook, Media Center, Monitor, Mouse Pad, Mug, T-Shirt, Sticker, Talking Yogurt Doll, or Flamethrower!

  • Guitar Hero III...I don't want it, I just need it!

    I've only had the game for a few days now, but I'm already hooked. Granted, I suck something horrible, but that hooks me in even more ;) Any game where you get to battle the devil playing the "Devil Went Down To Georgia" is a guaranteed hit in my book! I especially love the 4 skill levels so a noob like me can get in to it right away on easy, and work my way up...though, I can't even fathom handling expert mode on any song, that's just pure insanity. I haven't check out the xbox live stuff yet, but I plan too as soon as a soon as I can hold my own a few of the songs at a higher skill level. I get pwned enough in H3 as it is ;)

    Though, with that said, I was utterly shocked and demoralized when I saw this video below. All I can say is hallelujah, and holy shit!

  • Spore lives!!...for the Nintendo Wii

    In an interview with The Guardian, Will Wright confirms that Spore, the god game dealing with species evolution, is being made for the Nintendo Wii. In February, executives from EA confirmed that it was being made for the Nintendo DS too. He talks a little bit about the Wii and DS, and says that he loves Advance Wars. Nice. View on Digg

    Looks like Spore is not dead after all! I've been waiting for this game ever since it was announced and demoed several years ago. Though, I'm not entirely sold on publishing it exclusively for the Wii, due to its unimpressive graphics performance and lack of hard drive...but I suppose only time will tell. Once thing is for sure though, we're in for an infinitely more interesting interface given the Wii's capabilities.

  • Welcome to the jungle

    Been a pretty crazy weekend...on Thursday night around 8:20pm a Tornado plowed through my Grandmother and Dad's property in northern Michigan. Creating a path of destruction 14 miles long and 1/2 mile wide. My grandmother's and our property were quite fortunate, considering no one was hurt and the main house had no major damage. My dad and I arrived to the following scene Friday evening, almost 24 hours later.

    I apologize for sub par quality but I had to take them with my blackjack camera phone...I wish I would have had a real camera, but I think you can get a good idea. As you can see, we had a LOT of trees to cut and clear, but thankfully, we had help from friends and neighbors.

More Posts Next page »
Powered by Community Server (Non-Commercial Edition), by Telligent Systems