Here are a couple of bad design decisions I’ve run into that have ruined my interaction with websites or products. They all relate in some way to Flex and Grails, so I thought I would put them up somewhere.
1. NBC Olympics Site + Silverlight
During the olympics, I heard about NBC having full replay of some olympics events. Went to the site, and was greeted by a wonderful : In order to view these videos, you need Silverlight installed.
OK, fine. Silverlight is a big download but it’s an up and coming technology. Seeing that NBC is probably part of the Microsoft partners ( and got the memo that Microsoft was promoting Silverlight, as opposed to say, um, the Microsoft Vista site — which was created by people with common sense and runs Flash ). So I gave it a chance.
Downloaded the plugin files, waited. Installed files. Waited.
Man, Silverlight sure does take a while to download.
Went back to the site and was greeted by : Sorry, we cannot stream content outside of the United States. ( I’m in Canada )
NBC DESIGN GUY, IF YOU KNEW THIS, WHY DIDN’T YOU CHECK MY COUNTRY BEFORE YOU FORCED ME TO DOWNLOAD YOUR PIECE OF GARBAGE PLUGIN.
First thing to get deleted was the Silverlight plugin. What a joke. It’s bad design choices in really good and elegant sites like this that sours the user experience
Sorry, had to get that off my chest.
2. XStream’s handling of the underscore ( Grails + XML )
If you ever serialized domain objects into XML, maybe you might have noticed that your domain classes named Blahda_Pac get translated into Blahda__Pac. This is quite confusing. I just had a long discussion with my co-worker Tim about this today.
After a little bit of digging, we find this gem of wisdom in the XStream site:
Why do field names suddenly have double underscores in the generated XML?
XStream maps Java class names and field names to XML tags or attributes. Unfortunately this mapping cannot be 1:1, since some identifiers of Java contain a dollar sign which is invalid in XML names. Therefore XStream uses an XmlFriendlyReplacer to replace this character with a replacement. By default this replacement uses an underscore and therefore the replacer must escape the underscore itself also. You may provide a different configured instance of the XmlFriendlyReplacer or a complete own implementation, but you must ensure, that the resulting names are valid for XML.
Ok, that makes sense.
Wait, so you mean to say that in their infinite wisdom, whoever designed the XStream converter decided that there were more classes out there with the name blah$kd$kd$kds than, um english_CA?
How often do people really use the $ in their domain classes? And you decide to replace this with one of the most commonly used separator characters that work in both Java and XML world?
Why not replace the $ with the double underscore __ and leave the underscore the fuck alone!?
3. Flex’s handling of XML Databinding
In Flex, you bind data like so,
However, if you try to bind data as XML, you will see this magnificently lovely peal or wisdom
[Warning]Data binding will not be able to detect changes to somedata
If you dig a little deeper, you will see that this is because the brilliant genius that had the joyful task of programming the XML event change handling decided it would be a good idea to bind this model in Flex with completely different events!
Not even events that inherit the same events or subclass it, completely different ones?!
So now, in order to compensate for this stupid design choice, I have to explicitly tell Flex that I am binding an XML.
We recently started another project in Flex, and EVERY SINGLE ONE of our programmers made this mistake and ignore the stupid warning. The stupid thing is that Flex knows that somedata is an XML. Would it been so hard to add some code to handle this?
Maybe. Maybe after writing an entire framework, it was too hard to add
if( bindableData instanceof xml or xmllist )
handle events xml way
Wait, actually somebody decided somewhere that it would be a better idea to throw a warning in the debugger instead of just making it work intuitively. Wow.
4. Adobe Bridge + it’s friendly Opera browser installation.
So for the last few weeks some of my file preferences have been opening to the Opera browser. Mysteriously and magically.
Guess who decided to bundle Opera in their tool? Adobe Bridge…Ya, that’s the first place I would go looking for the Opera browser that breaks my download of the Ubuntu torrent. Great job guys.
Why does your browser take over my preferences without asking me? Adobe Bridge — you’re uninstalled!
Sadly, this stuff is what can be easily changed and a little more attention to detail would have made. I will get off my soapbox and stop being an arrogant prick now…