Quest to Submit an Internet Explorer Bug Report

Put Simply
Put Simply

Here’s the anti-epic tale of my distinct efforts to improve Microsoft Pusher Internet Explorer.

Why would I want to improve IE? Well, I don’t really, but a sad number of users on the net don’t yet know any better. It seems clear to me that Microsoft’s selection of what web standards to implement (not the W3C internationally agreed upon standards, but rather their own) must be either the product of negligence or an attempt to push their own agenda (mainly to make their competition look foolish in the eyes of their lesser informed users). I think that kind of approach can only work for so long – users continue learn.

The Spark

Ugh.. WTF Microsoft?
Ugh.. WTF Microsoft?

I was working away on a fun little project to get a background gradient image to look good on a page I was editing. The key was that while I had this nice gradient background, if anyone went in to edit that page with a WYSIWYG, they’d get in to trouble quickly as they could only work with how high the gradient background image was. That sucked massively, there was also a lot of hand editing of style info for HTML tags required along the way, also sucky, I didn’t want editors to even need to know what HTML was to do their edits.

The solution I found was pretty awesome.. First I figured out that if I set the table I had been putting the content in to have transparent background properties, then I could dump the gradient in wrapper DIV tags. This got rid of the initial problem of each table cell repeating the gradient and screwing everything up. Of course, this added more HTML styling requirements. I solved that issue the way it’s meant to be solved, in CSS. The final key was to set a background-color for the DIV section. This has the effect of if the DIV section ends up being higher than the background image, the background color is shown. So I just set the background-color property to what the gradient faded out to and it looked seamless.. The div section could be made infinitely long the gradient would still look good.

So, there I had my editor working as it should, but as I tested it more heavily I found that IE 8 had a problem. From certain views (font size presets), it’d draw a black line along the bottom of the background image that made my gradient. I swiftly checked IE 6, Firefox 3.5 and Opera 9.x and couldn’t reproduce the issue elsewhere. Nevertheless, the bar would remain present in certain views with IE 8.

Let me SHOW you What I mean

I made a video of the issue as I felt this was definitely a bug that could annoy me for awhile as I hate stuff like that and it’s sort of a weird case to explain. Alas I posted this video on Vimeo:

Doing the right thing

So with this all documented/figured out, I decided I may as well admit this site is going to continue to have IE users for some time to come. I wasn’t willing to find another solution as the solution I found definitely seems as good as it’s getting. I expect that if I looked for a completely different approach, it wouldn’t work nearly as well with other browsers or the editor (WYSIWYG).

This meant submitting a bug report to Microsoft because I’m leaving this site as is. Of course, only a small portion of the IE users are likely to install updates, but at the very least I feel I’ve found a real bug that ought to be patched if I’m going to continue to try to endure IE. I’m tempted to add a bit of an easter egg to pop-up and insist visors install another browser, but that’ll have to live as a fantasy for now.

Subsequent Hilarity

My.. Err.. Hero?
My.. Err.. Hero?

It turns out that Microsoft doesn’t really have much of a mechanism for allowing users to provide feedback. I found they do have some support for their One Care system to be criticized, and in fact I was so impressed with how that was organized it baffled me that the same approach wasn’t being provided for IE, but maybe they just figure they’re in little danger of being de-throned.

I searched around and of course found other IE users have noticed the same lack of interest in user feedback. But I persisted, I was sure there’s got to be some means of getting the message to them, though it should never take much more effort than googling “Internet Explorer Murders Kittens Bug Report”.

How to report bugs for IE

I finally found a reasonable place to give feedback to Microsoft. They have a plugin for IE that lets you report problematic websites. I suppose the idea behind this is that IE is perfect and shouldn’t really fail, so “naturally” any problems must be with sites that are out there.

You can use this plugin to then notify Microsoft of yet another website that doesn’t fully cater to their non-W3C standards. This is what I used to submit my issue to them. The form I filled out expressly asked me to not provide any personal information for reasons I can only speculate about. Maybe they outsource reading the reports to untrustworthy types?

Lesson to be Learned

Err, that's a "feature"!
Err, that's a "feature"!

If you’re not a company stuck in the 90’s like Microshaft, you may be able to recognize that using the web is a massive part of MANY people’s work day. This means that when a widely used product like IE has a bug in it, even if it’s tiny, the users will notice and they often care.

Software projects that will remain successful in this climate must provide a simple, fast and well-designed mechanism to help guide users in submitting meaningful bug reports. That is of course unless the project can afford to hire SkyNet to conduct exhaustive Quality Assurance. Let’s face it, writing super solid software is like trying to get to the speed of light, you may feel like you’re getting close, but at the end of the day that’s a dragon you’ll never catch, not even with an infinite supply of Doc Brown’s magical fire logs.

I think competition between big players like Microsoft, Apple, Google and perhaps IBM & Sun Microsystems can be extremely healthy and driving for innovation, I sincerely hope that Microsoft manages to re-organize to really take full advantage of the current climate so they can keep the others on their toes. I have seen some great stuff come out of Microsoft on this wavelength in the past and I’m mostly thinking of XNA. I just hope when their Exchange momentum dies off they’ll manage to really get back on the horse and rock our worlds. I suppose for the moment Windows 7 has a glimmer of hope at providing that.

Of course the other massive possibility is that entirely open movements like those generally referred to as Linux could also end up coming out on top as it’s all about the users with those projects, though I think total domination from that camp will require more of the population having an interest in getting their hands dirty in geeky details.

“But I’ve only ever used ASP Browser Internet Explorer, what’s actually useful?”

You're settling for good when there's awesome.  Upgrade to Firefox 3.5!

If you’ve only ever used the “Internet” by clicking on the blue e-button, you’re in for a hell of a treat. Go get Firefox (or Opera if you must). Once you’ve installed firefox, you should then go install a few helpful addons. If you need more detailed instructions, please comment below.

My top favorite addon is AdBlock Plus. This one lets you get Firefox to block ads from known advertising web servers. Firefox will re-write what you’re looking at to appear as though the undesired ad info had never been there. This is one of those awesome helpers that you forget about until you use a machine without it, then you wonder how all those other suckers out there can stand all that noise.

After that, I fancy the Delicious addon. With that beauty I can store my bookmarks remotely on delicious. Since I use a crap-ton of different computers all the time storing bookmarks locally is a complete waste of my time, but through delicious they can all be put somewhere where I can always find them with no dependence on the workstation I’m using. The Delicious firefox addon lets you use Delicious inside firefox just like typical bookmarks.

Of course there’s a ton of other great addons to use, go check them out. And if you’re already all over the firefox band-wagon, here’s a great place to go to get a very cool script to put on your site to help people make the switch.

What do you think?

There you have it – IE is a monster and I’ve spent vastly way too much time on this relatively minor bug. Nevertheless, I think it’s a good subject to really talk about and besides, I felt it’d make for an interest blog post. What Browser do you use?

The Anti-Epic Tale of Making IIS Play Nice with Apache

Matt Damon
"Genius"

The Mission

To run an Apache server (on Windows) on the same machine that was already hosting IIS.

The Strategy

The plan was to alter each virtual host defined in IIS to not bind to the typical HTTP/HTTPS ports (80 & 443), but instead have it use arbitrary ports (was to be 8080 & 4433). With that in place, I could then run Apache normally. In order to get traffic to hit the right sites as hosted by IIS, the apache server would have it’s own virtual host definitions for each IIS site. In those definitions, there would be a Reverse Proxy config to get Apache to pass the traffic internally over to the arbitrary ports.

False Sense of Security

Just to be on the safe side, I setup a Windows 2003 Server Virtual Machine to simulate the windows environment I was dealing with. I then installed Apache (via WAMP Server), configured IIS and tested. Everything worked according to plan. After some other minor testing I decided I was ready to make the actual switch.

It hit the fan

So, I RDPed in to the Windows Webserver and installed Apache, of course, at first there was a conflict in ports as the IIS service was already bound to 80/443 that Apache was after. I turned off IIS, let Apache take the ports and reconfigured IIS to use the arbitrary ports I had specified. When I tried to restart IIS it complained about it’s ports being used. I checked and re-checked the config to find that there was no reference to the old ports (now used by Apache). Nevertheless, IIS insisted on using those ports.

I then decided that since someone awhile ago had setup several IPs for the same one network interface on the machine, that I could just as easily get IIS to use one IP and Apache on the other. I’d just get my Apache Reverse Proxy to connect to the other IP rather than obsecure ports. To make that work, I’d have to edit the hosts file to make sure the machine resolved the hostnames to the IP I wanted. I didn’t like the increased complexity, but it didn’t matter…. I found that IIS was still complaining when I told it to only use one specific IP (that wasn’t touched by Apache). WTF.

After some digging, I found this very helpful article that relieved that Microsoft seems to have a cruel sense of humor when it comes to interfaces. It would seem that inspite of the GUI for IIS showing that the virtual hosts on the machine are configured to use whatever ports & IPs I had picked, the IIS service was still trying to grab ports 80/443 on ALL NICs on the machine when it started.

Me: Microsoft, why would you bother making a UI like that?
Imaginary Microsoft Response: We develop software that “works” as fast/cheap as possible. And if you try to USE it in some regard that we don’t get hounded to patch until it works, then you’re SOL. Not that we care, the harder it is for you to migrate away from our shit products, the longer you’ll pay us to use them.

The Resolution

The jist of that article is that in order to actually configure IIS to bind ONLY to a given list of IPs, you need to manually declare what those IPs are through a command line utility called httpcfg.exe. I found this wonderful little application included with this package.

Balki: God of the Sheep Herders
Balki: God of the Sheep Herders

To get things working properly I learned first that shutting down the IIS service and reconfiguring it at the command line with the GUI for IIS still open will lead you down a road of pain.

After that all I had to do was add the right IPs that I wanted IIS to use, and run that little line:
cscript adsutil.vbs set /smtpsvc/1/DisableSocketPooling true

A swift reboot sealed the deal and all appears well now.

Next time

I think if I ran in to this sort of project in the future, I’d push to run with a Linode or something. The way I’ve got it going now works fine and we’ll continue on from there. But my suggestion is avoid running IIS period. If you have to use it, then try to keep it on it’s own machine. If you must run Apache with it, you can, just expect a Windows Update to eventually break everything and make you go become a sheep herder.