An Avanade Blogging Community

Welcome to An Avanade Blogging Community Sign in | Join | Help
in Search

Avanate - Continously Integrating!

  • Poor MSDN Documentation Strikes Again

    For my current project, I'm working on some SSIS packages that pull data from DB2 and ship them to SharePoint 2007 (MOSS) using the web service APIs. Since I'm not an expert SharePoint developer quite yet, I consulted this MSDN article to get the information on the structure of the call.

    One would think this would be fairly straightforward and trivial to implement - sadly, this is not the case. After spending at least a good solid hour getting errors such as the "The list no longer exists at this location" and various Google permutations I finally ran across this community posting which indicates that if you're using a service within a subsite, the web reference needs to include ?WSDL at the end of the URI.

    So...what's wrong with this?

    #1 - The error is horribly obscure, particularly when the list does, in fact, exist at the location (this includes using http://<root>/<subsite>/_vti_bin/Lists.asmx).

    #2 - A WSDL document is not an endpoint...well, it shouldn't be. I suppose any good 'ole URI can do and clearly the SharePoint team in their infinite wisdom found this to be the case for subsites for some odd reason.

    #3 - It's not documented. Nowhere in the MSDN documentation is this little tidbit mentioned.

  • GET this new POST

    After installing .NET 3.5 on a portion of our dev and test environment we found that things were suddenly broken. We have a significant portion of "old" WCF (.NET 3.0) apps that were hosted in IIS (yet another good reason to self host - insulation from lousy installers). After looking into it a bit (and an unsuccessful Google of it) I found that it removed the .svc extension handlers in IIS. Good great and wonderful if you're running 3.5 perhaps, not so much if you still have to support 3.0.

    UPDATE: As it turns out, this was due to faulty installation of 3.5 which yieleded a MSVC++ error during installation. A successful installation will not remove the extension handlers, however when you click to proceed, it informs you that the installation was successful. Un-installing, then re-installing 3.5 did the trick.

  • A Generic XML BodyWriter for WCF

    I'm going through a rather fun process of integrating with a Java app that uses POX style interaction to save information to a remote server and ran across the problem of writing a general clob of XML data to the Message. I ran across a number of demos that all relied on having a number of custom BodyWriters, essentially one per message you'd be writing and came up with this instead. Apologize for the nasty formatting in advance.

     

    public class XmlBodyWriter : BodyWriter
    {

        private string _xmlData;

       
    public XmlBodyWriter( string xmlData ) : base( false
      
    {
          
    _xmlData = xmlData;
      
    }

         protected override void OnWriteBodyContents(System.Xml.XmlDictionaryWriter writer){
                    
                      using
    (MemoryStream buffer = new MemoryStream(_xmlData.Length))
                    
    {
                           
    using (StreamWriter streamWriter = new StreamWriter(buffer))
                           
    {
                                      
    streamWriter.Write(_xmlData);
                                      
    streamWriter.Flush();
                                      
    buffer.Seek(0, SeekOrigin.Begin);
                                      
    XmlReader reader = XmlReader.Create(buffer);
                                      
    writer.WriteNode(reader, true);
                                      
    writer.Flush();
                             
    }
                     
    }
       
    }
    }

     

  • HOLY FREAKING COW MAN!

    THIS IS WHAT I'VE BEEN WAITING FOR !!!SHIFTONEONEONE1111

    Finally, an end to the fiasco that is CableCard and most likely a huge sway in subscribers from Media Center enthusiasts to DirecTV over their local CableCos. Not only that, but in general, Multi-Room Viewing seems like it's actually here! Then again, while I'm busy specing out my new PC for this (supposedly it DOES NOT require a special OEM flashed BIOS) - I'm admittedly holding my breath a bit.

    http://www.dbstalk.com/showthread.php?t=115136&page=1

     

     

  • DirecTV tuner on the way?!

  • Just in Time for Christmas: A Lump of Coal for Dell

    Honestly, I've about had it with PC manufacturers and frankly, would love to start a company that creates machines for people who are actually capable of using them and maintaining them and only require support for difficult problems. After my recent purchase from Velocity Micro, I swore I'd never go to a manufacturer again - at least that time it was out of necessity. This time, somewhat out of necessity too - I landed a pretty sweet XPS M1730 machine. All and all, great machine, and certainly more performant than the piece of junk Alienware I had a while back (which is an interesting situation in and of itself).

    At any rate, I ordered it with Vista Home Premium given that this (believe it or not) will be replacing my company issued laptop as my mobile device (I'm sure not carrying threecomputers around) and I'll be installing Vista Ultimate from MSDN on it. As with most machines, the first thing I do is wipe it and start a fresh install - I'm pretty high maintenance that way - and once the install completes, it starts loading Vista and blue screens - repeatedly.

    I called their support center to see if there's anything they could help with, since I had identified the offending driver (it wouldn't even boot into safe mode btw) and according to them, unless you do the Windows Upgrade Anytime or purchased it with a particular version of the OS, they wouldn't support it.

    At that point I was pretty infuriated (me, at a computer manufacturer for having stupid policies or tech support people?! no way!) and asked to be transferred to someone who could initiate a return on the computer - after all, if my computer won't boot in a perfectly fine OS, it's a 3k piece of junk. After receiving my RMA, I fiddled with the package contents and found an absurd piece of software that allows you to boot into the machine to play DVDs without loading the OS. I noticed some oddities in the partitioning before and reading the package contents on that particular piece of software, it seemed to fit together. Again, I wiped my formally pristine machine and was forced to create useless partitions for no apparently good reason and continued to install Vista...after which, it booted without blue screens.

    So...long story short, if you expect support on Vista Ultimate and are an MSDN user - you need to buy Vista Ultimate. And if you don't...make sure to use the ridiculous media player partitioning software first before installing Vista fresh.

  • Must Have Media Center Tools / Add-Ins

    This list will continue to grow over time and will be updated accordingly, but so that I have a place to track them and to share with others who have asked...here we go:

    MyMovies

    This add-in manages your DVD collection, either offline (i.e. stored in those stupid containers taking up way too much shelf space) or online (i.e. you found a good DVD backup program that works with your favorite DVD, "Babe the Pig"). It has extensive search functionality, allowing you to view the titles in one single sorted list or search by genre, actors, directors, etc... very cool.

    AnyDVD

    A great backup program, plus they have converters that can convert to Zune, iPod, or your other media players. They seem to release updates on a pretty frequent basis as well.

    PowerDVD Ultra

    While the OEM of my machine was able to provide an OEM-only version of another Cyberlink product called Play Movie, unfortunately it absolutely blew up on "Transformers". Another $99 later, I can watch "Transformers" (and actually get my surround sound since the Play Movie product only outputs 2 channels for HD-DVD...lame!). It doesn't integrate with Media Center, but it works...that's about all I can ask for these days.

     

     

  • Don't Make CRUDdy Services!

    One of my big pet peeves (aside from the term "pet peeves") is seeing services that are tantamount to stored procedures or worse - single table oriented operations (hey...at least you can do more than one thing in a sproc, right??) . What this results in is an insanely chatty interface, which means more network hops and more duplicated data going over the wire. In fact, what they tend to end up being reminds me very much of Win32 calls where I have to make a call to get the count, for example, then call it again with the count to fill the buffer. Win32 != SOA.

    So in addition to the four core tenants of SOA (a fun/interesting read)...here are a few of my own additions:

    • Your service is not your database, don't treat it like one. Pretty simple...I shouldn't see a bunch of operations like GetCustomerBy{Name,Id, etc...}, GetOrder followed by GetOrderLineItems or (better!), GetOrderLineItem (note the lack of our friendly s).


    • Thou shalt not return HRESULTs from your service. (this was actually suggested to me by one of the WSE product team members as being "correct" when WSE would conveniently sink your void service operation...sucked if you actually planned on it being synchronous. I guess it wasn't too correct since they fixed this bug later).

      Returning 0s, 1s, 2s, 0xcffe923 isn't the right way to indicate failure of your service. Faults are.

     

    • Services are points of abstraction, treat them as such. Largely related to the first point, but find a good abstraction and go with it. For example, I shouldn't see GetOrderProcessingTimes, GetOrderTakingTimes, GetCheezeburgurEatingTimes and so on. How about a nice simple, GetMetrics( string metricName ) and allow some magic to happen on the back end rather than bloating your interface.

     

    • Thy service shall not talk more than thy mother. If you're looking at three or more calls to get the data you need (I'd posit that one should be sufficient in 99% of the cases), then you should get to work. Networks hops are the bane of distributed applications, particularly with verbose junk like SOAP (all the more so if you have an absurdly complex (and non-nillable) schema). Further, don't get in the habit of expecting an exceptionally speedy network or relying on new tech (e.g. 10Gb) to help you out. This is why we have a lot of software that can take up 512MB of RAM without even flinching...I mean...they have to start that fancy splash screen somehow, amirite?
  • ATI 1.16 Firmware Update for OCUR!

    All I have to say is - finally! And thank you to AMD who actually posted this on their site after we had to wait to go through OEMs to try to get the update. It was very frustrating to say the least, however I'm happy to say...my HTPC is running at about 95% reliability now when it comes to premium content tuning and recording!

    There are still a few random quirks - I've received two "No Signal" messages, one after watching a channel for about an hour or two...the other when switching tuners, but that's not horrific...and heck...I can get my HD HBO and other channels so yipty freakin' yahoo!


    You can download the update here:
    http://ati.amd.com/support/drivers/vista32/ocur-vista32.html

  • Bad Ticket Agent

    As we're packing up in our hotel, about to venture on to our honeymoon, I ran across this article. Fun stuff. All I can say is that I can absolutely see US Airways agents in Houston doing this (the only airline mentioned here). As a matter of fact, I've seen a gate agent do something very similar. A passenger who was supposed to have been on an oversold flight was told from of our attendants that she thought there were seats available, so she proceeded to exit the plane only to be encountered by the gate agent who brought her back, telling her there were none. Shortly thereafter, a gentleman picked up on that there might be seats available and proceeded to board said flight...although he wasn't originally on that flight (Phoenix wasn't his destination either, but as he rightfully put it...Vegas is a better place to be stuck overnight than Phoenix).

    So with that bit of digression, the point is - the airline industry is in a very bad state at the moment. Flights are more reliable at being late than on time...and as much as I hate government interfering with private enterprise...it's about time someone does something.

  • I <3 Virtualization

    As I mentioned in my previous post...I have a rack of servers sitting in a spare bedroom - 6 in fact (keyboard tray, SATA storage array and all!). It's been a long time in the making, but I have a PowerEdge 6650 I'm dumping stuff on to - primarily some social websites I run and development playgrounds. I have to say - overall...I'm pretty darned pleased.

    Right now I'm running Virtual Server 2005 R2, primarily due to some major headaches I had getting VMWare up and running...particularly when I found out that the current version of VMWare Server can't run VMWare Workstation 6 machines - whoops (as in - a weekend blown kind of whoops). That's a bit of a gotcha to me.

    That being said, I'll likely be moving back to VMWare once the new version of server is up...there are a ton of extra features it has...and the general consensus is that performance is better on VMWare (helllooooo gigabit ethernet!).

    Either way - at the moment, I'm happy that my power bill will at least drop a little bit for the time being, but I imagine it'll take another weekend once VMWare Server is out to get things in order again...

    FYI...a pretty decent comparison on the two - a bit dated, but ...

    http://www.windowsitpro.com/Windows/Articles/ArticleID/45253/pg/2/2.html

  • Velocity Micro - Yikes

    About a month ago, I somehow stumbled across Velocity Micro. They provided a very attractive price for HTPCs with CableCard tuners in them as compared to say, VidaBox and Niveus Media. Well, as they say - you get what you pay for.

    After receiving my machine and having some not particularly qualified for prime time installers attempt to pair the cable cards to the tuners (this was really an excruciating process...having to tell them what numbers to read...) - the signal still wouldn't show up. I could get basic cable at times, but no digital and no HD - defeats the whole purpose of this machine.

    Anywhoo...I call VM's tech support (i.e. Bobby Joe sitting next to Great Aunt May - I kid you not) and when I was finally put in touch with someone and stated my question - well...I didn't get to state my question - about 4 or 5 words in and he cut me off and very argumentatively said "I'm not going to speak to any cable people". Great tech support...way to get things started.

    Now, to be fair...I'm a bit of a boiling pot right now while we're getting everything ready for the wedding - so this was really not the time to piss me off...so I pretty much unloaded on him, somewhat to the effect of "I just paid $3500 for this ...<fill in your choice of words> ...you're going to let me finish my sentence." Of course, after which ...all I was asking if it was okay to plug the tuners into the external USB ports rather than the mobo's USB headers.

    Gomer had it out for me at that point it seems and probed as to why I had this question, and I explained that I swapped the case out and put a better power supply on it (Antec Phantoms are insanely quiet!). He then blurted out "well YOU just voided your warranty - I can't help you".

    While the latter part of that statement was true for oh so many reasons, Velocity Micro advertises that they use more or less off the shelf parts so that you can customize it any way you want. Not to mention, when I spoke with the sales person on the phone - they said that changing cases wasn't a problem at all. Not to mention THE WARRANTY SAYS IT'S OKAY!!

    Excerpt from warranty:

    "Removal or addition of hardware inside a Velocity Micro system DOES NOT [e.d. NO editorial emphasis added there - that's exactly how the contract reads] void the customer's warranty for the remainder of the unchanged and unmodified computer components, unless the changes or parts damage other components that are covered."

    So...you're not going to provide a warranty on the case or power supply? Okay..cool. Alas, they don't exactly see it that way. So after ranting after that and screaming for a manager ...and waiting 10 more minutes...I got one who at least put me through to an arguably competent, sorta, tech person who, of course, blamed everything on the cable company.


    <digression>
    Oh..back track a tad - they claimed that since I changed my power supply, my warranty was voided. I fail to see how that lives up to the warranty contract, not to mention the manager stated that it was a "significant change". Now...I don't know about you, but I've built a ton of computers and have a rack of servers sitting in a spare bedroom - I'm pretty sure I can handle a case change and a power supply swap without it being significant. Of course, my response was "Could you please tell me how removing eight or ten screws from the motherboard and screwing them back in somewhere else constitutes a major change?"
    </digression>

    Well, after a little playing around - I'm not sure that I buy that ...and as it stands, my $3500 investment is largely a piece of junk aside from the fact that it has a BluRay / HD combo drive in it. The sad fact is, VM offers miserable support and is simply too small to be playing in this space. I'm honestly considering filing a complaint with CableLabs to see if they'll revoke their certification for the ATI cards given that they seemingly can't support them. I've spent the majority of the time playing around with and fixing things myself rather than their poor advice of "re-install Windows"...which I did.

    At any rate, bottom line is - avoid Velocity Micro for your HTPC needs. I'm strongly considering selling it and getting a Vida Box. If nothing else, they have awesome dealers - heck, one in Phoenix is actually researching issues with Cox Communications and the ATI tuners / cable cards, to see if there's anything that might be wrong...of course, he said the few Vida Boxes he's installed (with the HD tuners) in the area...have had no problems at all...go figure.

  • If you fail at installing your Zune...you've failed at the internet

    I have to say, reading a lot of the reviews on the Zune had me questioning what exactly these people were doing. For instance, this article on Engadget implied the zune was a horrendous experience. Obviously I had to get the Zune just to prove Engadget wrong (ok...I wanted one...they look very cool).

    Look & Feel

    First, the styling of the Zune is, in my opinion, much more refined than the iPod. The iPod hasn't fundamentally changed aside from adding a couple of colors - yay - since it's inception. On the other hand, the Zune just feels nice. Many others have commented on this, but the sort of rubberized (very "sort of") plastic feels good to the touch.

    Installation Experience

    One word: flawless. Of course, that excludes the minor hiccup I got when it was trying to access an external URL while my internet connection was going up and down. That aside, the software was installed and all of my music was transferred between 10 and 15 minutes. On the other hand, when I tried to dump my existing WMA library on the iPod - it said it would take 3 days (yes, DAYS) to convert them all. That experience left a very bitter taste in my mouth for the iPod and required the purchase of a third party tool, Anapod Explorer, to convert the library in a reasonable period of time.

    Using the Zune

    The navigation interface is much more attractive and more informative than the iPod. I can do things like view other songs on the same album as the currently playing song, view items on the device in a more organized way and so on.

    The one downside I would say is that the Zune host software is very...functional. While it gets the job done, it lacks a lot of the polish of say...the box the Zune came in. They really needed to do quite a bit more work here, better yet...integrate it directly into Windows Media Player. That was just a dumb idea.

    Now...off to plug in the XBOX HD player and test the Zune on that!

     

  • Making MSBuild, fxCop and Cruise Control Play Nicely

    I have to admit, it's been a fair amount of time since I've bothered to get my hands dirty looking at CI. While I've used it on nearly every project I've been on at Avanade, aside from having to set it up once...maybe twice all I've done is instruct other developers to configure it and get it up and running at the start of projects. Well, there was no such luxury for me this time so I got a bit of a crash course in setting things up, particularly related to integrating MSBuild into the process.

    The big bottom line is - read the documentation very thoroughly. While the CC.NET documentation is fairly decent, depending on how you read it you can very easily leave out one key configuration item that will cause your web dashboard to absolutely blow up. With that in mind, here's how to get everything working nicely.

    Install the Software

    Obvious first step...but here's what you need:

    Step 1- Install the server component on your build machine and if you'd like, the tray monitor on any PC you want to use to monitor the status of your build.

    Step 2 - Copy the MSBuild DLL to the following locations:

    C:\Program Files\CruiseControl.NET\server
    C:\Program Files\CruiseControl.NET\webdashboard\bin
    One more location to be named later...

    Prepare Your Solution to Function With MSBuild

    Many solutions will probably work out of the box, but I'm a stickler for not liking to have warning messages in my build reports.

    Step 1 - Remove any of the following projects from your solution file:

    • Windows Installer
    • SSIS (Integration Services)
    • Reporting Services
    • Database Projects

    Step 2 - Confirm that your solution will build using MSBuild by running the following command:
    [TO BE PROVIDED]

    Create a Custom MSBuild File

    Create an fxCop Project File

    Modify the CC.NET Configuration File

    Test the Build!

     

This Blog

Post Calendar

<July 2009>
SuMoTuWeThFrSa
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

Syndication