Yes, the SUX posts do have resolutions sometimes.  Thanks to Charles Sterling over at Microsoft for coming to the rescue.  I can now see my bugs when I'm logged in.

 

Thank you! :)

I swore I wasn't going to write this post.  I figured I could just work this out via an email to support.  Oh but no... that's not the case.  I need to share my feelings on Connect, as I know I'm not the only one who is finding this to be more of a burden than a great support tool.

Recently, I had blogged about the StringFormat issue in Silverlight.  I had been nagged to submit the bug against Silverlight, and so I logged into Connect to do it.  Imagine my frustration when I realized that their submit form doesn't have a confirmation page.  I figured my session had timed out, so I retyped up the bug and resubmitted it.  Again, no confirmation page.  No confirmation email. Nothing.  ... Until 12 hours later, when I get not one, but two confirmation emails.  Grr... Connect form confirmation SUX.  

But wait... there's more.

So in those confirmation emails, I got link s to the bugs.  I could see the bugs when I wasn't logged in.  However, when I was logged in on my Live ID, the same ID I used to submit the bugs in the first place, I got "Page Not Found".  Now wait a minute... I can see my bug when I'm not logged in, but when I'm logged in, I can't see it?!  Strike two...

 And the icing on the cake...

Quoting directly from an email that I got from Microsoft Connect Help, with a guy who has "Microsoft Connect Team" in his signature...

You can see the bugs even when you are not logged in with your windows live id is because it is designed in such a way that even the nonregistered users can see the bug.

I already figured that I could see it while not logged in.  But how about addressing the original issue of not being able to see it while logged in?

I know I have other friends who are frustrated with the system as well.  I wouldn't have blogged about it, but this close to three strikes and I have to talk about how much it SUX.

Microsoft Connect has A LOT of room to grow.  But if this is the way I need to report bugs in products, I'm sorry, products, but I have a tool that's more headache and hassle than what it's worth.  Look for your products in a future SUX post or an email if I have a contact to work with.

 

As I write more Silverlight code, I get more frustrated with its quirks.

I love that StringFormat is included in Binding.  However, what I don't understand and what I don't like is that StringFormat doesn't seem to respect the CurrentCulture

Let's say I have an app that's tracking GiveCamp participation.  Let's say that my foreign friends over in Europe organized a GiveCamp, to add an international factor.  Now let's say that we're tracking the number of devs working on projects each hour.  And let's make a Silverlight app for that!

The daily chart may show the number of devs, broken by hour.  On the X axis, I'll see time in my familiar "8:00 PM" format.  My foreign friends should see that same time as "20:00".  I set the StringFormat property on my DateTimeAxisLabel (from the Silverlight Toolkit) and it works wonderfully.  

But let's say I want to add a tooltip to each point to show the time (IndependentValue) and number of devs (DependentValue).  I toss a couple of TextBlocks in my ToolTip template, using StringFormat to format them.  These are the same format strings that I use on my axes, so they should respond similarly, right?  That's what I would've expected.

But as I run my internationalized app, I see "8:00 PM" in my tooltips, and so do my foreign friends!  Wait... what?!?

Time to add code to get internationalization working properly, since WPF and Silverlight aren't getting it right out of the box.

So here's my call to the WPF/Silverlight teams - please, for the love of doing what's right - have the StringFormat formatting default to the CurrentCulture rather than to its current default culture (en-US).  It only seems natural for an app to run on its CurrentCulture, unless the developer specifies otherwise.

The Microsoft response to this Connect ticket by closing it as "By Design" really disappoints me.  I can only hope that the Visual Studio team wakes up and realizes the importance of having WPF and Silverlight apps default to the CurrentCulture from an internationalization point of view.  This  "feature" of defaulting to "en-US" is more of a headache for those of us who do develop for an international audience and probably is just as much of a headache for my developer friends who aren't in an en-US culture.

Just my 2 cents, from a frustrated Silverlight dev...

 

SUX: Silverlight Edition

June 16, 2010

Sometimes, things appear in the SUX (Sarah on User eXperience) series because they work contrary to my expectations. Silverlight is one of those things.

For a web technology, Silverlight is more an app developer's domain than a website developer's domain. It really requires an application development train of thought. In these past few weeks, I've been working on a Silverlight app and running into quirks that probably wouldn't have thrown me off if I spent more time writing apps rather than websites. However, I typically focus on websites more than apps, which is a slight paradigm shift. So imagine the frustrations I ran into with Silverlight, thinking that a web technology would be aligned with the web train of thought.

For one, they don't do margins the web way. Margins in the web world - think CSS attributes - are top-right-bottom-left. Margins in an app world (and in the Silverlight realm) are done left-top-right-bottom.

Another thing that required a little searching was finding a dropdown box. Yes, as a website developer, I'm used to the terms dropdown, DropDownList, or even the old <select> lists. But as I look at my toolbox, I'm not seeing any of those terms. Ah... but there's ComboBox, similar to the control I was familiar with back in my VB 6 days. Ugh... another app term, not the web developer term.

The last grumbling I have on this is the lack of transparent window support. Transparent PNG supported was enhanced in Silverlight 4, which I really like. But there still isn't any support for transparent windows. On this project, we would've loved to have a transparent window, especially on an out-of-browser app. Sure, we could've done this in WPF, where transparency is supported. But WPF on a Mac isn't supported - Mono doesn't have plans on implementing it. Silverlight, on the other hand, is supported on Macs, which is why we planned going this route. Until they port transparent window support from WPF into Silverlight, we'll work with the technology constraints and go with a custom chrome. But transparent windows would be awesome!

Thankfully, I'm getting around Silverlight a lot better than I anticipated, but I still need to remember that I need to treat it like an application tool and not necessarily a web development tool. Don't get me wrong - it is a web technology after all. But first and foremost, it is a subset of an application development tool, not a web development tool. Once I get that through my head, I understand why they went this route.

For those of you who follow me on Twitter, you're familiar with my complaints about my laptop.  Now that things appear to be working fairly well, I'll tell my story.

From One ASUS to Another

Back in the middle of March, I came home one night to find my laptop dead.  My 3 year old laptop would start up and then immediately power down.  The ASUS logo would light up, and then the power would drop.  After a bit of testing, it looks like it might have been my motherboard that finally died. But in the 3 years that I had my ASUS G1, it was a great gaming laptop and great machine for demos.  And once that died, I felt a bit sad.  But my husband, hoping to replace his laptop. had done a bit of research on what was out there, and based on our prior experiences, we decided that it'd be good to go with another ASUS for me, this time with a bit beefier of a processor and more memory.

In the middle of March, I ordered my ASUS G51JX - with the Intel Core i7, 6 GB memory, and 1 GB nVidia GTS360M, I would be set.  I'd be able to write all sorts of programs, demo all sorts of technologies, and yes, get back into World of Warcraft yet again.

New Laptop Arrives

The new laptop arrived, and I was quite happy to see it.  I got it just in time for PAX East 2010, so I was able to take it with me for its first trip.  First thing I did was wipe out the initial image and install my license of Windows 7 Ultimate.  Loaded up drivers, installed World of Warcraft (WoW) and Plants vs. Zombies (PvZ), and I was set for my first gaming conference adventure.  PvZ played wonderfully!  But WoW, on the other hand, had video corruption all over.  Soon enough, my video card drivers kept crashing every 15-20 minutes if WoW, Zune, Aero, or anything graphically intensive was running.  My IT and tech support backgrounds were screaming that something was wrong and it needed fixed NOW.

After coming home from PAX East 2010, I decided it was time for some significant testing.  Many fresh Windows 7 installs later, many driver versions later, I decided to call ASUS tech support.  Boy did I do this wrong!

Tech Support for Non-Techies

I wish there was a code word we techies could use that would tell other techs that we're outside of their script and that we've tried their script already before contacting them to get around the initial headaches.  I started with email support, seeing that a graphics problem would probably be better solved with screenshots, which you can't really see over the phone.  What I hadn't realized was that ASUS's email support isn't here in the US, and with that, there are language barriers, time zone issues, and other points of failure.  I got a lot of "try this BETA video card driver" and "please wait until we release a BIOS update".  Mind you, each email had a 48 hour turn around time, which seemed more like 96 hours or more sometimes.  I was not content with waiting for a BIOS update, and the BETA drivers were not working.  I finally emailed them back and said that if this tech couldn't help me, he would need to escalate the ticket to someone who could, as I thought an RMA would be needed.

After trolling the forums and finding BIOS updates and various video card drivers, I was feeling hopeless.  Surely nVidia didn't put out 2 sequential versions of crappy drivers - the nVidia products I had been familiar with weren't ever this bad.  Then, they released reference drivers for my video card - oh how I got my hopes up.  And oh how they got let down.

Meanwhile, email support grew quiet and I grew impatient, so I called the ASUS notebook support team.  They were able to somehow get it to a point where I could play WoW for an hour or two before the corruption would happen.  I asked the quintessential question of them - who do I contact when this comes back up?  Where can I send screenshots to show the problem I'm having?  I think this would lead me to the RMA.

Time Goes By So Slowly But Pays Off

So after numerous emails with the email team and a call to the phone support, I finally documented the issue and sent the email to the address that phone support gave me.  And shortly after that, the email team followed up with a request for me to send in my laptop for the ASUS techs to take a look at it.  Thanks to the ASUS RMA team in Indiana, I had my laptop shipped to them, looked at, and back at home within a week's time.  And thanks to that RMA, a month after I started this process, I now have a happier laptop with a replacement video card.

Why didn't I give up and just return it for a refund?  My previous ASUS laptop worked wonderfully and helped me believe in the brand.  From ASUS motherboards in our past PCs to my G1 to my husband's netbook and now to two ASUS laptops - husband's laptop died later that week and we replaced his Dell with an ASUS G51JX as well - I sense a pattern!  As frustrated as I was with the slow support process, deep down, I believed I had drawn the short straw with hardware in this case.  When it did work, I could see a lot of potential, but whenever the video card crashed, I would wonder if it was just leading me on.  We'll see what I have to say in a few weeks, but for now, I'm glad I have my laptop back and can get back to blogging, working on presentations, working on TDPE2, and gaming!

So...

  • Tech support for techies when it comes to ASUS SUX - we need a code word for those of us who know the script and are ready for an RMA, since RMA doesn't seem to be that magic word.
  • Foreign tech support SUX - as if having issues with the machine isn't hard enough, language barriers complicate things.  I'm not a fan of outsourcing tech support like this because of that added frustration level.  (Though the techs out there are doing their job... this SUX is more aimed at ASUS and companies' general practices of outsourcing technology-related tech support.)
  • The ASUS RMA team in Indiana does not SUX - great turnaround time and the fix appears to work!

 

Zune Support Does Not SUX

April 20, 2010

As a followup to my last entry, I finally found a few minutes peace and a steady phone signal to call Zune Support about my little Zune Pass DRM hell situation.  After getting through the voice prompts and getting to an agent, it was a quick call.  The agent took my name, heard my problem, and was able to get me out of Zune Pass DRM hell within a short period.

Now my husband and I can listen to the Zune Pass content on our laptops again.

Thanks, Zune Support, for being able to resolve my problem and so quickly to boot!

Oh no... it's a "Does Not SUX Much" edition of the Sarah on User eXperience (SUX) series.  What could this mean?

As many of you may have seen on Twitter, I've had a miserable month within these past 30 days, having to replace 2 dead laptops in a span of a week and dealing with one that just couldn't stay stable.  While dealing with this, I apparently ended up in Zune Pass DRM hell - both laptops were part of my Zune Pass authorized computers list, and I was still cleaning up that list from formatting my laptop awhile back.  I'll get to de-auth a machine later this week, but that still leaves one laptop dead to the Zune Pass in Zune software for at least another 30 days.  Not fun.  (Edited note: This was based on initial calculations, before looking into my support options.)

While looking at my options on taking advantage of my Zune Pass while the laptop itself can't play Zune Pass content, I found the streaming capabilities of the Zune.net website.  Now I like the ability of streaming music, but I don't want to be stuck on the current page while looking for more music to listen to.  But hey, there's an app at the bottom that has this popout player to listen to music while navigating to other pages.  Let's put it to the test.

The Zune.NET Popout Player 

First thing I noticed was that it's a Silverlight app!  The Zune Pass content has its own DRM stuff going on behind the scenes, and apparently Silverlight can talk with it.  It's impressive to see a Microsoft site using a Microsoft technology at this level.

I got a little too excited though - using Google Chrome, I got the notification that the popout player was active and could hear the music, but no idea where it was actually displaying.  When I navigated to another page, the player in Google Chrome stopped playing.  This is why there's the "Does Not SUX Much" designation.  If I had this figured out and working in my browser of choice, I'd have stopped at "Does Not SUX".

So I switched to Internet Explorer 8 to put it to the test.  Check this out:

I figured I'd queue up some songs that keep me in a fairly good mood - a little Owl City and some Glee Cast

 

So while streaming from Zune.net, you only have access to one playlist - Now Playing.  It would be great to have access to all of my playlists that contain Zune Pass content, but I'm happy to see that I have a playlist available.

Thankfully it's fairly easy to add music to the playlist - simply click the + next to the song to add it to the Now Playing list.  Be it on the album listing, the artist's page, from a friend's list over in the social area... anywhere on the Zune.net site that has a + next to the song allows you to add this song to your Now Playing list. 

Yes, you can even go to your Zune profile and click on the + on a song in the most recently played list that appears as part of your badge and have it appear in the Now Playing list. That's a great example of 2 Silverlight apps that can talk to each other!

Conclusion

While I'll be only in Zune Pass DRM hell for a little more than a month, I have a feeling that this player will get used quite a bit.  Yes, I can use Pandora or some other streaming site, but I don't have as much control over the songs I want to listen to as I do with this.  I look forward to returning to the Zune software and its playlists (which have a lot of Zune Pass content).  For now, the Zune.net popout player will work as my source of controlled streaming music.

I never thought I'd say this, but working with SQL Server Reporting Services (SSRS) has taught me a valuable lesson...

It doesn't matter what report engine you use, they all have their quirks.

I have a Crystal Reports background thanks to the ERP system that I used to support. I learned how to work with it inside outside upside down. It got to the point that I knew how to get it to do what I needed, no matter how obscure my end users got with their requests. It was a good thing.

Now I'm in a SSRS environment, and I curse my unfamiliarity with this report builder. I have to keep reminding myself that it's a Microsoft tool - so many options that I'd be looking for in context menus are probably hidden in toolbars. For example, I was looking on doing conditionally-formatted row backgrounds, and I eventually found it in a toolbar - as soon as I reminded myself that it's a Microsoft product.

But then there's this other maddening (lack of a) feature. Why can I create an expression for my tablix's sort field but I can't use an expression to specify the sort order?

And what's this "A to Z" and "Z to A" sorting terminology? Who are they designing this tool for? As a database admin and a developer, I would know ASC and DESC or even ascending and descending. Dates sort on their date type, numeric types in a numeric order... and neither of those are handled the same way as a character sort. Is the report converting all of its data to strings and literally doing a character sort? Nope - it is sorting ascending and descending. Can SSRS get an update so that it accurately represents the sorting? Is it smart enough to possibly detect the data type of a field and show "highest to lowest" for numbers and "earliest to latest" for dates?

As I continue to work with SSRS, I hope my complaints will subside. But there are some quirks that, in my opinion, make it worthy of the SUX appearances.

Just when I thought I was done with the SUX series for the year, I came across this gem.

Recently, I've been working with SQL Server Reporting Services and trying to work with it in ASP.NET. While reading logs, I came across an error regarding TERADATA. Why is it that my SQL Server Reporting Services (SSRS) is giving me an error like this on a fresh install?

So I did some searching through Bing, which led me to this article on Troubleshooting Configuration Problems. And then I saw this...


This error occurs because the Teradata extension is registered in the Reporting Services configuration file by default, but the Teradata assemblies are not shipped with SQL Server 2008 or as part of the .NET Framework. If the error message does not bother you, you can ignore the error when it is logged.


Wow... really? Why is an extension registered by default if none of the assemblies are included? Why is it an acceptable practice to pollute the event log with errors right after a fresh install?

Granted, they included how to avoid the error. But still....

If the assemblies aren't included, I would expect the extension not to be registered. Let the installer detect if the assemblies are installed and then enable it by default if it is detected. Include instructions in the installer that the TERADATA extension is enabled by default and have a simple way of disabling it on install. Strike up a deal with TERADATA so that the assemblies can be included in the installer. And if that isn't feasible then don't include the extension in the installer and let an installer with the TERADATA assemblies handle registering the extension.

Why add unnecessary clutter to the event logs when it should be avoided in the first place?

Don't get me wrong - adding support for TERADATA may be a nice feature. But for those of us who aren't using it, it's cleaning up setup stuff that - in my opinion - shouldn't be included in the first place.

Because of this approach, the combination of SSRS with SQL 2008 and TERADATA on a fresh SSRS install truly SUX.

Ah yes - I'm back with another edition of the SUX (Sarah on User eXperience) series. This time, I'm singing the praises of the Netflix Silverlight app.

Recently, I had the house to myself and a day to rest. So I had the idea of playing World of Warcraft while watching movies over Netflix.

The laptop: ASUS G1

The Internet connection: Time Warner cable

A part of me thought this would be a flop and that I'd have to choose between the movie and the game. I had anticipated that streaming a movie would bog down my connection, making it impossible for me to run through the Blasted Lands - maybe more like grinding and then eventually lagging across the continent but not smoothly running through. However, I had forgotten about an awesome feature with the Netflix Silverlight app - it detects the current bandwidth and changes the streaming based on the bandwidth available. It was glorious to play World of Warcraft and watch movies and TV shows at the same time. The best part - the app didn't have to recalculate for bandwidth issues until my husband came home and logged in. Even then, it did its recalculation and resumed my Law & Order: Criminal Intent episode right where I left off. So it was steady Netflix streaming and gaming all day. The Netflix Silverlight app does not SUX - it ROCKS!