Google Chrome is not usable in a corporate Windows environment

Companies around the world seem to love Internet Explorer. It’s the number 1 corporate browser and every web designer has horror stories to tell about how many workarounds they have to put in to support IE 6-8 and how the update cycle is not only way too long but also how new versions don’t help with companies that don’t want to update. Firefox and Chrome release new versions every few weeks, constantly innovating and improving, while Internet Explorer has to be supported for years.

Why don’t companies switch away from Internet Explorer and use modern browsers like Firefox or Chrome?

Now, I can’t speak too much about Firefox (apart from the fact that maybe the lack of an official integration into Windows Systems Management features is an issue – FrontMotion is an alternative, but it’s not officially Mozilla) but as a corporate developer I can definitely speak why Chrome is not a good browser for corporate environments running Windows: Google has a long history of shipping broken releases of Chrome.

Let’s back this up with facts, shall we?

One of our internal websites has an <img> tag which references an image on another internal website, both websites are behind NTLM authentication. The simplest thing in the world: The Image gives an auth challenge and the browser answers it, downloads the image and displays it. Works in Internet Explorer since forever, works in Firefox (may display a login prompt if the other website isn’t in the list of trusted urls), used to work in Chrome.

Except that it no longer works, Chrome 30 doesn’t load the images anymore. The main bug report for this is 303046 from October 2. Chrome 31 was released on November 12, 2013 and fixed that – 41 days turnaround time.

Chrome 23 had a bug where a failed Kerberos Auth would not fall back to NTLM. Kerberos wasn’t even supported in the beginning, I think it took until version 6 or 7 and they had to solve some issues involving proxies after that.

Here’s a fun one in Chrome 19 (well, duplicate of this one): A POST request with an attachment to an NTLM Authenticated site would destroy the attachment. That might even have been a regression since a similar bug was reported in Chrome 7.

Chrome 5 would fill up our IIS logs because it was requesting the favicon.ico. Thousands of times, every few milliseconds while the user was on the page.

Each of these bugs were in a stable build that was pushed to users through automatic updates, and sometimes these issues had been reported in the Dev/Canary build weeks in advance yet still made it all the way through the release process. That in turn means that it would take weeks before a fix would be available in another stable release.

Chrome might be a great browser if you’re not in a corporate environment or if your corporate environment doesn’t run on Windows. But if you are a Windows shop that uses NTLM authentication, Chrome just isn’t stable enough to use, unless you’re willing to have some of your internal sites broken for several weeks every time Chrome ships another NTLM-related bug in the stable release. It seems that Google’s priority is the fancy new HTML5 stuff, not rock solid corporate NTLM support.

Feel free to complain about Internet Explorer as much as you want, but please don’t wonder why companies aren’t migrating to other browsers when other browsers simply don’t support corporate environments with their specific management/policy and authentication needs.

Don’t do Tutorial prompts

What is wrong in this picture?

image

If you said “You’re using Internet Explorer” or “You’re using Google+” you might be right, but that’s not what I’m talking about.

I’m talking about the fact that there is a big tutorial prompt between me and the application which prevents me from actually using the application.

Google Apps does it. iTunes does it. The Kindle Paperwhite does it. Photoshop Touch does it. Video games do it. Everyone does it.

It’s annoying. Especially the unskippable ones (e.g., on the Kindle Paperwhite). I understand that some of your UX studies show that certain people have trouble figuring out your application. Now, a good team would redesign the app to be more user friendly (and also make it accessible to colorblind and blind people if they were serious about this stuff). A bad team instead just takes the path of least resistance and sticks in a few tutorial prompts.

And a really shitty team goes even further: Instead of a single tutorial on first startup, they have popups every time you use a new feature for the first time. So after you dismissed the “Welcome!” prompt and think you can now use the application, you have to constantly dismiss “helpful” messages. Imagine riding a train and every few hundred feet, someone yanks the emergency brake. Not fun.

Now, there is nothing wrong with having a help/overlay function. Just stick it in the Help menu, accessible by the question mark icon which is widely accepted. But don’t force your tutorial on everyone, because they are an interruption of the usual flow. I want to use your application to get my stuff done, so stay out of my way.

People are using computers since decades, and novice users managed to learn how to use stuff on their own just fine. Not just computer wizards, but normal, ordinary people. Look at Microsoft Office 95, that one was just fine.

Alternatively, if you are a platform vendor, allow me to check a “I know computers” checkbox in my account (maybe call it FizzBin?) to release me from the obligation to jump through several hoops to actually use an application.

Be careful with choices that carry over multiple games

As I said before, I absolutely love story driven games. One thing that often turns a great game into a great series are expansions and sequels that actually continue the story and allow a flow between them. Might and Magic 1-5 had a pretty epic saga between Corak and Sheltem, Ultima was essentially 3 trilogies with Ultima 7 split into 4 parts as well, and Wizardry 6-8 formed the Cosmic Bane saga.

One of the really intriguing features that sequels offer is a character import that alters the story of the game before it is even started, based on the choices made in the previous game. Wizardry 6 had 3 different endings, and Wizardry 7 had 4 different beginnings (one for each ending and one for brand new players). In Wizardry 6, you could get a special ring which you could give to an NPC in Wizardry 8 for bonus xp and a bit of extra story. Dragon Age: Awakening and Dragon Age II picked up on a few choices made in Origins, depending on who is made King.

Playing a sequel and seeing how earlier choices made an impact – even if it’s small – is very intriguing. It encourages experimentation and adds replay value. But it can also cause a lot of grief. Let me tell you about my relationship with Mass Effect and it’s sequels.

The first Mass Effect is one of my favorite games. The universe is spectacular, the races are diverse, the dialogue is immortal and the gameplay is fun without getting in the way of the story (although yes, the sidequest are one of three possible choices, repeated dozens of times). I finished that game 6 or 7 times and ended up with a Level 60 character and every single side quest done. But most importantly, I had a character that I really identified with because all the choices were mine, set through hundreds of dialogues, dozens of Renegade/Paragon choices. But there was one decision that is really important to me. Without wanting to spoil too much, you have to make a choice between 2 side characters, one will live and one will die. I picked the one I really enjoyed as a character, the one who had a really interesting attitude and some great dialogue. The character that I let die is a shallow, generic red shirt in my eyes. There is also another character that can live or die, and since it’s a really awesome character I let him live. And then, there are two really interesting choices at the end.

Mass Effect 2 came out in 2010, and I had to start a new game because of a new Gamertag (that’s a whole different rant). With no option to import my ME1 character, I had to start a brand new game with the default choices. And to this day, I’m convinced that the ME2 default choices are meant as a punishment for the people who didn’t play ME1, because they are horrible. However, while ME2 mentions them, it doesn’t actually do much with those choices yet and focuses on its own story. You start the game, play through the first part and then a character offers to tell you about the past. Because I was already playing ME2, it was much easier to swallow. It then goes on doing its own thing and only much later you actually run into some of the ME1 choices. That made it much, much easier to live with them and just go on.

Today, I received my copy of Mass Effect 3. I was really enthusiastic about it, until I started it. The character import immediately shows up and tells you the choices before you even start the game. That’s already a downer that made me consider whether I wanted to first play the prequel to get the right choices. I resigned and started a new ME3 game. 5 minutes into the game (as part of the intro), I run into the character I wanted to die in ME1 in favor of the much better other character. A few seconds later, I switched off my Xbox.

Any enthusiasm I had for ME3 is gone. I can’t play it with the default choices, so now I must play through ME2 again, and it may be months before I even start playing ME3. For ME2, BioWare actually did the right thing: They offer DLC (“Genesis”) that is essentially an interactive comic in which you can make all the ME1 choices. The DLC came out much later than the game, so I didn’t have it for my character back then, but right now it saves me from playing through ME1 again (it would still be nice to get a character from another Gamertag).

This option should exist in ME3, because it’s the right thing to do. A lot of you might say that I should just play the game and that I’m being silly and that the changes made by these choices are really, really tiny. Fair enough, many people play games for gameplay reasons alone. But I’m a story gamer, and for me, the default choice in ME3 is a show stopper, even worse that you are confronted with them before you even start to play the game.

That is why multi-game storylines can be dangerous, because it may really ruin the motivation and enthusiasm a person puts into a game. I’m attached to the Universe and the people in them. I believe that any game which allows savegame import and adjust story choices based on that needs a way for people to set the variables themselves in case they don’t have a character to import. I realize that part of the problem is that I’m playing on an Xbox. On a PC, I would have just grabbed a Savegame editor and created the ME2 character I want for import into ME3.

Still, a game that’s story driven should make sure that such an option exists.

Piracy is not a solution, but it’s easier than actual alternatives

Over the past 30 or more years, a war is raging. The war between pirates and copyright holders started with pirated software and certainly influenced our geek culture. When most people hear the Enlightenment: Druid II Theme, they don’t really think about the game but about the Fairlight Intro. (By the way, I think it’s incredibly ironic that Tony Krvaric, alias Strider, one of the Fairlight Founders is the Chairman of the Republic Party in San Diego…)

In the past decade and a half, piracy expanded from software to music (thanks to MP3) and eventually movies and TV shows (Thanks to DivX). I’m not going to recite the entire history from Napster to the Pirate Bay here, I’m just going to express my stance on this. First off, I am negatively affected by some of the restrictions imposed by the industry. I moved from Europe to the United States and realized that I can’t play any of my DVDs because they are Region 2. Also, my Xbox Live count does not allow the change of my billing country, which meant that I had to create a new Gamertag, lose all my achievements, lose my Mass Effect 1 Savegame (which had a Level 60 character and all the right decisions) and lose access to the XBLA Games I bought unless I log in with that Gamertag. On the other hand, my Steam account worked without a hitch because Steam gets their business right while Microsoft doesn’t care about their customers and is too weak to negotiate world wide deals.

Here in the USA, TV is ridiculously expensive. I come from Germany where we think that the government-imposed mandatory Pay-TV (GEZ) is expensive (and kills any PayTV competition), but compared to TV over here it’s dirt cheap. On the other hand, we do have Netflix and Hulu Plus here, and a few Music streaming services which gives me access to a whole range of content, legally. I can not get everything though. Certain shows are only available on TV (pretty much anything HBO), I’m cut off many sports events like the German Soccer Bundesliga (some TV Channels offer select games and repeats, but a live Conference doesn’t seem to be available). I can not buy certain music Albums because the bands are only popular in their home country and haven’t set up international distribution.

In short: Between my wallet and something I’d like to pay for, there are sometimes certain walls. The Oatmeal has made a great comic that illustrates these walls better than I ever could and it concludes in the same way the thought process concludes for many people, but it’s not a thought process I agree with. Basically it boils down to “If I can’t watch it legally, I’ll pirate it”.

I do not think that pirating is the right solution. First of all, you are not entitled to anything. Somewhere, there is the belief that there is a right to access to copyrighted material. There is not. There is a company who paid money and owns the right, and they are telling you to fuck off. They don’t want to take your money.

Second, the author made a conscious choice selling their rights. I often hear how bands whose CDs are shipped with playback protection and rootkits are really the victims, how the evil major music companies are not paying them much money and how they rely on the publicity made by live concerts and exposure, and how piracy really benefits them. I am not disagreeing that exposure helps bands because Merchandise and Concert Tickets are their primary source of income. However, they also made a choice. They went to a major label, gave them the rights to their songs so that GEMA and RIAA now own them. In exchange, they benefitted from the marketing and sales power of those labels. It’s a mutual relationship. It’s ridiculously hard for bands to gain exposure unless they are already successful (Radiohead and NIN successfully sell Albums directly now) or become viral on the internet (OK GO’s treadmill video).

In making this choice however, the creators of a work submitted themselves to the terms of condition of the label. Same for TV Shows. I really do not think that someone put a gun to George R. R. Martin’s head and forced him to sell his rights to HBO. I’m pretty sure he could have sold them to someone else, or have kept them. But he sold the rights to HBO, and if HBO makes the choice to exclude me as a customer, that’s in the end Mr. Martin’s decision.

Third, it hinders exposure for other shows and bands that are trying to be customer friendly. Every time you start a conversation about Game of Thrones in your workplace, HBO’s marketing wins. On the other hand, every other show loses. There is only so much time in the day and every moment exists only once. The time you spend watching and discussing Game of Thrones is a moment not spent helping The Crew getting more exposure. It’s extremely hard to create a TV show or Movie. Over the past few years, we have seen tremendous progress in alternative/indie development thanks to video streaming, MySpace, Steam and other distribution channels. But the thing that really matters is exposure.

Fourth, it helps fueling things like SOPA. Child Porn, Terrorism, Nazi Propaganda and Piracy are the cornerstones of every election. The internet is evil, it needs to be controlled and censored. How dare you to protest against SOPA, you child molesting Nazi Terrorist? This isn’t limited to one country, in Germany it’s people like Ursula von der Leyen and Karl-Theodor zu Guttenberg who brand people fighting for their rights as child molesters. It’s good to see that the SOPA protests worked for now, but don’t believe that that’s the last we’ve heard of it (ACTA goes into that same area). You have to take away their arguments. If the companies are losing money because they fail to sell to the market, it’s their fault. If they can blame pirates, it’s our loss.

Boycott is the only proper way, but it’s hard. Many kids start smoking in school because they want to belong to a group. They wear certain clothes because they want to belong to a group. The desire to belong never really goes away. If everyone in the office talks about a show, we don’t want to be excluded. And let’s face it, some shows and movies are genuinely fantastic.

Sometimes, getting in touch with a company helps. I’m a fan of JBO, a band that’s really only somewhat popular in Germany. When they released their 2009 album I don’t like Metal – I love it, it was not on either iTunes or Amazon MP3. I asked their record company – Megapress – and initially they could only offer to send me a CD from Germany. However, in the meantime they worked on it and now pretty much all of their Albums are on both iTunes and Amazon MP3. A small victory.

At the end of the day, I don’t care what you do as long as you stop being hypocrites about it. Piracy is not a fight for freedom, it’s a way to acquire something we want that the company doesn’t want to sell to you. If we were concerned about freedom, we would ignore the product and support products that treat us as customers, not just as cash sources. You buy the BluRay, you accept sitting through 30 minutes of mandatory trailers before the menus and not being able to watch the movie if you move to another continent. If you don’t agree, then don’t buy the product.

But we then also realize that those products often aren’t as good. AAA games, prime time TV shows, blockbuster movies cost money. A ton of it. Crowdsourcing like Kickstarter helps for smaller/indie games, but I doubt you could fund a triple-A MMORPG with it. Someone has to go in and gamble a million or two on it, with a very real risk of losing it because people rather spend their time with pirated products. We look at successes by Double Fine’s Adventure, Dr. Horrible’s Sing Along Blog or Radiohead’s In Rainbows and forget that these are anomalies. Those products are successful because they already feed of an existing fan base. The reality is that most indie productions are having trouble securing even relatively modest amounts of money and even if they manage to make something, they may not get too many customers.

Movement is happing however. We are seeing tremendous changes already, and now that Netflix and Amazon decided to take up content production we might finally see some money behind things we consider ideals. Following Tim Schafers footsteps, Obsidian is considering a similar move, and Wasteland 2 was mentioned as well. Machinae Supremacy is successful with a hybrid internet/record label approach, and I already mentioned OK GO. I believe that at least for PC Video Games, we’re really in the middle of a revolution where us Gamers become the shareholders. We want another graphic adventure that combines everything we loved about Lucas Arts adventures? We want a good FPS game (after all, the last really FPSes were Painkiller, Unreal Tournament 3 and the Serious Sam series)? How about a shooter that combines everything we love about CAVE’s bullet hell games with some amazing scenario (like Jamestown)?

Piracy hinders that movement because it gives too much exposure and benefit to the companies we oppose. Freedom and Piracy seem related, but are different concepts. Personally, I believe it’s extremely important to make conscious decisions. Read the Terms you accept, realize that companies don’t want to sell but rather rent a product, on their terms. Accept that you may not be able to get everything you want. Freedom is the ability to say no and walk away to one of the alternatives. Piracy is the inability to say no and unwillingness to change the status quo. Having said that, I also cannot deny that iTunes Music Store and other were founded on losses made through piracy. Who knows if record companies really would’ve agreed to this if it weren’t for Napster?

Don’t stop fighting. There are attempts to prevent completion from emerging and to weaken our customers rights. Cable Companies are actively fighting for their position, which is why it’s important for Boxee to fight against them. GoDaddy tried to use SOPA for competitive advantage because they would’ve been exempt for it. RIAA/MPAA tried to get Spyware onto every PC, and Sony BMG outright shipped a Rootkit.

At the end, it’s all about a) making sure we keep the freedom of choice and oppose any attempt to take that freedom away and b) using that freedom to supports the things we agree with and deny attention to the things we don’t agree with.

Or at the very least, stop whining when companies you support and empower in this way screw you over even more.

Thoughts on .net in 2012

One of the hot topics in 2011 was the rise of server-side JavaScript thanks to node.js, the future of Windows with WinRT, and a perceived exodus of high profile .net developers to Ruby on Rails or node.js, proclaiming that it’s so much easier to get stuff up and running once you leave .net. Also, in the wake of BUILD conference, .net was already declared dead, which turned out to be a false alarm, it’s only Silverlight that’s dead (unless you are building a video player, because HTML5 Audio/Video sucks and will continue to suck).

Personally, I’m 100% convinced that .net is doing fine and will do fine for years to come. We just have to realize though where .net (and Java, for that matter) are used: Inside Enterprises. There is not a single day where I don’t see someone pulling off some amazing stuff on Twitter, usually built in JavaScript, CoffeeScript or Ruby. Looking at people pulling off amazing stuff in .net is always a big undertaking though, because there are pretty much no big non-Microsoft .net projects that are “hip”. I think FubuMVC, Caliburn.Micro and Bouncy Castle are the only three that I could mention off-hand. But then again, I see amazing stuff done in .net almost every day, except that no one else outside of my work environment will ever see it. Talking to other .net developers in other companies usually yields similar experiences – people are pulling off some seriously fantastic stuff, but it will never ever leave the company it was created in. The open source environment in .net has improved since I blogged about it 4 years ago, but it is still only a fraction of what node.js or ruby has. Just look at the list of most watched C# projects on GitHub or CodePlex and think how long ago some .net project really made headlines.

That doesn’t mean it’s a bad environment to work in, quite the opposite actually. If you look at popular libraries for node.js or ruby, you will often find that the BCL or Microsoft’s .net Libraries already have something built-in, and it’s usually rock solid and fast. You will find Microsoft supplying the big features that everyone uses or will use – LINQ, LINQ 2 Sql, Dynamics, TPL, Async/Await, ASP.net MVC are just a few I can think of. Combine the “No one ever got fired for choosing Microsoft” mentality in big enterprises with the fact that the vast majority of software development is done in enterprises, and you see why this attitude exists and why Microsoft has to deliver.

There is no denying that Microsoft had quite a few blunders, of course. WPF, EF and Workflow were downright garbage in .net 3.x, WCF is overly complex for simple scenarios and Velocity… let’s just say that I’ve never heard anyone say anything good about it, and looking at it’s API I doubt I’ll have good things to say about it. Then, there are signs of the more than 10 year legacy that .net already has, together with the desire for backwards compatibility. System.Configuration is horrible because you cannot just create a Configuration object from a string or any other mechanism, that thing is hard wired to look at a file on your hard drive, which makes it really inflexible for modern, multi-tenant deployments. Have you tried parsing JSON in .net? How many different JSON Libraries/Deserializers do we have as part of the Framework? And how many did Silverlight add? And yet, people mostly prefer the Newtonsoft JSON.net. Have you worked with the ASP.net Provider Model, specifically Membership Providers? Only a mother could love the API of that thing. And speaking of ASP.net, have you ever tried catching an “Attachment too large” error? The error that gets thrown twice, once in IIS before it reaches your app and then in ASP.net itself without a clear way to associate it with the request?

I could go on and on and on about things that are seriously broken in .net, and I haven’t even started about testability yet (there is a very good reason for products like TypeMock to exist). It is still overall a great experience, but it is frustrating that we can’t do much about the shortcomings of it. To work around the stupid file handling and Configuration madness in ASP.net, we would need a whole different web server since we can’t just patch IIS or the ASP.net core components thanks to their closed source nature. Of course, running Mono on nginx is a way to work around this, but enterprises won’t approve of such a setup and if it breaks, your behind may be on the line.

I’ve often experimented with different setups, only to realize that I really like C#. I like its static nature which usually gives good, understandable compiler errors rather than cryptic runtime errors (face it, rails can be a pain to debug). I like that I can mix in dynamics for non-critical things like view models. I like that the Microsoft-provided libraries are mostly good. I like that we can buy support and that there are tons of resources about most topics, since everyone uses pretty much the same stack. I like that they keep backwards compatibility so sacred, even if it means that there is a lot of obsolete stuff in the API (like System.Collections.ArrayList – there is no reason whatsoever to use it. If you need a container for multiple types, fall back to List<object>.

On the other hand, it can be a really frustrating experience when you run against a wall that you can’t climb because of its closed source nature and Microsofts reluctance to fix things (Take WPF in .net 3.5 as an example: Things were reported but not fixed. Then 4.0 comes out with Visual Studio, they run into the same problem (e.g., the scrolling popup menus) and HotFix it. That was the moment I’ve given up on WPF forever) until a major release, if ever. Sometimes it is a really tough sell to use other non-microsoft components like RabbitMQ instead of MSMQ (Search for MSMQ on MSDN and look on the big highlighted article – to me, that’s proof that Microsoft doesn’t care about their own message queue anymore), or NServiceBus, or a sane ORM instead of Entity Framework.

Most applications start out as simple CRUD applications, and it is usually a lot quicker to start them in node or rails. However, simple CRUD applications usually evolve into more sophisticated pieces, requiring more business logic and safeguards in different places, and here I must say that .net shines – in the long run, its strengths play out well.

However, I really think that we can do better in the web world, much better. Chad Myers had an interesting posting, and even though it was ripped to pieces by Rob Connery, it still holds a lot of truth. Web Applications are unnecessarily complex. I will write a follow up posting with some thoughts about this.

My conclusion would be that .net is overall doing perfectly well. It is used by tons of companies for very important apps, but it was never aimed to be a “hip” language. Microsoft is deeply rooted in the Enterprise, they are pretty much the exact opposite of Apple. That doesn’t mean that they do a worse job at it, it just means you won’t see as much about it since enterprises like to keep their “secrets” internal and err on the side of safety/secrecy. I have no doubt that there will be .net jobs for the next decade and beyond, while some other language will come and go.

Dropbox – enough is enough

image

I used to love Dropbox. I own multiple machines and dual boot them, so a convenient way to share files was a big win, and Dropbox delivered on it. They have a seamless Windows and Mac OS X client.

Recently, they had a few security issues – that sucks, but it seems to have been a genuine mistake rather than gross incompetence (like storing cleartext passwords like other did), so I gave them another chance.

But then they crossed the line that no company may ever cross: Taking ownership of your data. TwitPic tried to do that. Adobe tried to do that. And now Dropbox does as well, by adding this to their terms of use:

By submitting your stuff to the Services, you grant us (and those we work with to provide the Services) worldwide, non-exclusive, royalty-free, sublicenseable rights to use, copy, distribute, prepare derivative works (such as translations or format conversions) of, perform, or publicly display that stuff to the extent we think it necessary for the Service.

In all three cases, the TOU have been revised, or “clarified” as the vendors put it. But even though I do know about Hanlon’s razor, I’m unwilling to believe that it’s always just a mistake or unclear language, but rather an attempt of free services that are in financial struggle because no one buys their premium services and they simply have to make money.

As I’m a free user, I contribute to these struggles because I cost them money without bringing any in, so I’ve just decided to do Dropbox a favor by logging in and clicking the “Delete my account” link at the bottom of the account settings.

As a User, always remember that in the moment you give your data to any website – be it a hosted blog, a social network, a sharing site, “the cloud” – you have lost a great deal of control over it and have to be vigilant about TOU changes and companies taking advantage of your data for monetary or other reasons.

Choose wisely, and remember that there is always an alternative company that didn’t try to pull a trick like that (yet).

Business IT needs to step up into the 21st century

There is a lot of discussion going on at the moment about Firefox’ rapid release cycles, releasing Firefox 5 just a few weeks after Firefox 4. A lot of business customers are complaining about this, saying that the testing cycle of FF4 is still ongoing, and now it’s EOL already. Others think that it should be Firefox 4.0.2 or 4.1 to appease both.

I say that Business IT finally needs to move into the 21st century and embrace this thing called “Internet”. Why do you need a long testing cycle for a web browser? This is most likely a sign that your internal web applications are written for a specific browser, usually Internet Explorer 6. It means that your web applications contain countless hacks for that browser and because you didn’t upgrade to Internet Explorer 7 and 8 when they came out in 2006 and 2009 respectively. It means that you have amassed considerable technical debt, and now you have to pay the piper.

I say: Sucks to be you. The Web is improving fast. When you wrote that ASP.net 1.1 Application that displays an Oracle Database in a data grid, you made a commitment to the web. You committed to abandon a stable platform like Windows (even with all the negative reactions to Vista, Microsoft is doing a lot to ensure backwards compatibility) and chose a platform that has been chaotic, anarchistic and unstable since the dawn of time, or at least since Netscape 2.

The year is 2011. You don’t have to embrace HTML5, but you should make sure all your applications work in IE8, Firefox, Chrome and Safari/Mac without hacks, because then browser updates will be no problem. If you are still on Internet Explorer 6 or 7, upgrade to 8 (XP) or 9 (Modern Windows). If you are vendor-locked in to IE6 – I’m sorry, but you sucked. Your Purchasing Department really dropped the ball when they bet on IE6, because no sane company ties itself to a single product version of anything.

If you wrote an in-house web app or browser extension, then just upgrade it. And don’t tell me anything about cost here – your business made the decision to go to the web, so if changes to the web environment come as a surprise, you didn’t do your homework properly. Please, go back and write Windows Client apps again or do your job properly. If you want to be a web developer, then you need to do more than just drag/drop a DataGridView and connect it to a SqlDataSource. If you want to be an IT Person, learn how to work with the developers to make them change their apps.

Or, more likely: Continue to whine about how fast stuff changes, how vendors dare to improve their products, how they change the version number. Continue to embrace the waterfall model, get obsessed with version numbers, create test plans that take a year to execute, and stay out of touch with the real world. After all, business needs are more important than quality.

Just do me one favor then: Make sure that your crappy web apps can’t be easily hacked. I’m getting tired with incompetent companies constantly losing my customer data to hackers. But then again, there are no penalties for losing customer data, so my plea will go unheard.

Why is it so hard to list proper technical specifications?

I never read user manuals, because they are usually a waste of time. The main reasons for me to read user manuals is because I need to check something that is not listed in the technical specifications.

A few weeks back I ranted about TV manufacturers unable to properly list their Inputs/Outputs in the specs and how I have to read the user manual to find out if I really am able to use it. Weirdly, some companies are unable to provide a shot from the back and a user manual.

My current reason to rant is the Acer B233HU monitor. I bought it more or less blindly because it has a resolution of 2048×1152 and because it has an HDMI input that supports that resolution (my graphics card can drive 3 monitors, but only has 2 DVI Ports, so I needed a HDMI or Display Port Monitor). Now I’m realizing how much space my monitors take up on my desk, so I remembered Jeff Atwood posting about Monitor Arms some time ago.

Now, to buy a Monitor Arm, I need to know the proper measurements for VESA Mounts. There is 75x75mm, 100x100mm and some other sizes. For my Philips 240BW that’s no problem: Go to Philips website, look at specs, see that it’s 100x100mm. But my Acer Monitor? No information. I can guess or measure myself that it’s also 100x100mm (it is), but really, that belongs in the specs or the manual!

I think it’s astounding that they list stuff like what the pins of the DVI Port do (As it’s important for me to know that Pin 24 is DDC TMDS Clock-) but not what measurements their VESA Mount it.

Seriously, why is it so hard for companies to determine which specs are important and list them? Yes, I know that I belong to the minority of people who look at the specs and buy stuff that fits a need rather than just buying stuff because of bling-bling and advertising, but do you really need to constantly remind me of that fact? Can’t you just – at least sometimes – pretend that us engineers are still valued customers?

If you want my money, show me your sexy back!

Okay, so I moved across the pond from good ol’ Europe to California (expect a separate blog post about that). While I’m bringing some stuff with me, I am in the business of buying a lot of new stuff, namely a TV and Amplifier (among others). While browsing through the endless number of available components, I was reminded again of the inability of marketing departments to appeal to us geeks: Many companies have 3 or 4 pictures from the front, but none of the back of their items!

Really, why is that? I was looking at a TV, and I want to know if I can connect my equipment and I needed one with RCA Audio Outputs to go into my stereo amplifier. I’m not a big fan of digging through walls of text (often incomplete) describing the in- and outputs, often using different terminology. I want two things. First, I want this:

Sharp LC-52LE700UN backside

This is a picture of the connectors on the Sharp LC-52LE700UN, the TV I have on my wish-list now. From this picture, I can see it has everything I want. So the second thing I want is a link to the PDF of the User Manual so that I can double check that there are no caveats.

There are dozens of companies trying to sell their stuff. Amazon listed over 100 TVs when I searched for my criteria. How am I supposed to find the one which has what I need? By looking at the connectors! By simply looking at this, I can already remove many candidates from the list. For the remaining ones, I can then read the User’s Manual to see which suits me best.

Yes, I realize that style is a big sales factor, and I’m not saying that pictures from the front/sides are unimportant. But on the other hand: As a geek, I get more excited when I see a battery of connections. Seriously, leave that shiny black high-gloss coating to the ladies and instead show me RCA sockets!

The same goes for audio equipment, and here even more as some amplifiers have shared inputs or a separate phono input. I was looking for a cheap Stereo Amplifier as I still had speakers but no Amp, and I ended up with the Sony STR-DH100 primarily because of the clear back shot and available user manual, and only then I started reading the reviews.

Remember companies: There are dozens, sometimes hundreds of products available in a category, and as a customer I want to be able to remove all but 5 or 6 of them ASAP, so that I can take a real in-depth look at those remaining. So do me a favor and show me your backs.

Love, Michael.

The little “X” Button is meant to close, not to minimize!

One of my pet peeves is minimizing an application to tray. As you know there are three buttons in a standard Windows toolbar: Minimize, Maximize, Close. Minimize usually minimizes to the task bar. So there is no official button to minimize to tray. That leaves three usual options:

Have the minimize button minimize to tray
That seems to make most sense to me. If your application can minimize to tray, why would you want to alternatively minimize it to the taskbar as well? The downside of this is that for novice users it may be confusing (“Where did my app go?”).

Have a separate button to minimize to tray
Some applications have a new button for minimizing to tray:

Minimize to Tray

That seems to be a good balance between “do not confuse new users” and “offer a way to minimize to tray”. It’s just not consistent as different applications use different buttons, and some programmers do not seem to be able to do this properly, causing weird behavior (i.e. Classic Windows-Style Buttons in a Windows XP Screen).

Use the X Button
Minimize minimizes to taskbar, and the X minimizes to tray. To Exit, right click the tray icon and select “Exit”. That is braindead, sorry. The X Button is meant to close, and nothing else. Also, as the Systray (or Taskbar Notification Area) is usually set to auto-hide icons, closing an app is now a 4-Click Action: Click X, Click to expand Tray, Search Icon (and hope you find it before the Tray collapses again), Right Click Icon, Click Exit.

The reason why I am posting this is because TweetDeck just implemented that behavior, and I think it sucks. Really. If I click the X, i want it to close, and not find out later that it’s happily still taking my API Requests (Bad when working on a second PC) and using 126 Megabytes RAM.

X marks the spot to close, not to minimize.

Thank you.