Posts Tagged ‘Microsoft’

Internet Explorer Sucks

Monday, June 22nd, 2009

Internet Explorer just simply sucks!

I’ve had poor results with this browser before, but my experiences over the weekend when working on a Web site I administrate, had me at first pulling my hair out with frustration and then eventually had me laughing so hard over the amazing stupidity of Microsoft and their shitty excuse for a browser – that I finally gave up on it.

I will no longer even attempt to support their shit.

Here’s the quick rundown. I was working on a site which utilizes Joomla as a content manager, meaning that the site design is handled by XHTML and Cascading Style Sheets (CSS). The task was a simple one, create a new division in the PHP index file for a Joomla user container in the header of the page, move a random image plugin from another container on the opposite side of the banner to the new division and then put a new plugin into the old container. Pretty simple layout for a header: plugin, banner, plugin. If you have any familiarity with Joomla, the most difficult part of this task is creating the new division in the PHP file and matching settings in the CSS sheet to make it display correctly – and all said, this is not a difficult task.

I created the division, assigned the new module, re-assigned the old space and examined the results in Opera. A few minute’s tweaking and everything looked great. I checked it via Opera on Windows – it looked perfect. I checked it with Firefox on both Linux and Windows and it looked perfect. I checked it with Safari on Windows and it looked perfect. I checked it with Safari on the Macintosh and it looked perfect. Konqueror has for the moment a problem with the Flash plugin on one side, but the layout was perfect.

Then I opened Internet Explorer 8 on my Windows box and couldn’t believe what I saw.

The entire banner was messed up in alignment. What appeared perfectly within its confines on all other browsers I had tried, was completely disjointed under IE8. I went to my wife’s system and tried IE7. The same mess.

So, I did what anyone else in this situation would do – I went off to Google.

The first thing I discovered, is that one of the most basic structures of CSS implimentation, the box model, is pretty much completely broken in IE. All CSS compliant browsers deal with a box element as the totality of margin, padding and width of the container as a summation. IE, on the other hand, includes the padding and margins as part of the value of the set width – meaning that the box renders incorrectly, becoming narrower and shorter than what it should be. IE has been doing this since version 3, from 1996, meaning that the brain-dead programmers at Microsoft haven’t gotten a clue over this glaring break from the standards for thirteen years now! By careful adjustment I was able to fix the issues without having to resort to a conditional clause for IE versus every other browser.

The next problem, however, I haven’t found a good fix for. In the random picture division, I wanted the image to simply center. Horizontal centering was easy enough to accomplish, but vertical centering just wasn’t going to happen. For all other browsers to work correctly, I had to add but two lines to the division:

div#picflash {
    display: table-cell;
    vertical-align: middle;
}

However, as usual, IE doesn’t recognize vertical-align and puts the picture at the top of the cell. To correct it, you can use Javascript in a conditional statement, testing for IE, or there are some other CSS tricks to handle it. The best of the tricks and one of the most common used requires making two sub-containers inside the container, and then adjusting the margins of the containers to cause vertical centering. The code would go something like this:

div#picflash {
    width: 165px;
    height: 150px;
    position: relative;
}

.wrapper {
    position: absolute;
    top: 50%;
}

.content {
    position: relative;
    top: -50%;
}

With this in the HTML/PHP file:

<div id="picflash">
    <div class="wrapper">
        <div class="content">
            <jdoc:include type="modules" name="user7" /> <!-- This is the Joomla container...) -->
        </div>
    </div>
</div>

Technically, this is crappy CSS code. Percentages in a division are ignored unless you set the height of the container explicitly. As such, CSS compliant browsers just ignore this.

However, it works in IE, because IE ignores the specification that the height must be specified for percentages to be used. In short, even if I were to put this crap into a conditional statement for IE only, in doing so I’m "fixing" the situation by specifically exploiting a bug in IE! So, instead of supporting a shitty browser with any fix for their breaking of standards, I decided to ignore the broken browser. IE users get to see the image aligned on the top of the cell.

What it comes down to is this: every time a Web designer makes exceptions, via conditional statements, CSS hacks, Java script wrangling, or any other distortion of the XHTML and CSS standards, that Web designer is allowing a compliance ignorant software to control a portion of the Web! They are giving Microsoft tacit approval of their violation of the standards everyone else attempts to comply with. By doing so, they are allowing Microsoft to dictate the structure of the Web – effectively giving them a free reign to continue to break existing standards and any new standards which come out in the proper Web community.

I will not support Microsoft in this disgusting attempt to usurp control of Web standards. Instead, I am designing what little I work with as close as I can to the proper standards (I’m no expert on CSS, but I will try my best!) and adding in the following conditional code to any Web page I design.

<!--[if IE]>
    This site is best viewed with a XHTML and CSS compliant browser.
    <br />
    Try <a href="http://www.mozilla.com/en-US/firefox/firefox.html" target="_blank">Firefox</a>,
    <a href="http://www.opera.com/browser/download/" target="_blank">Opera</a> or
    <a href="http://www.apple.com/safari/download/" target="_blank">Safari</a> today.
    Learn more <a href="http://www.lockergnome.com/news/2004/06/15/why-you-should-dump-internet-explorer/" target="_blank">here</a>.
<![endif]-->

The last line is a link to a very insightful article by Chris Pirillo at lockergnome.com, where he briefly summarizes the problem and why it is so important to drop this stinker of a browser.

If you use Internet Explorer, I urge you to switch to a browser which at least tries to follow the set standards, instead of arrogantly imposing Microsoft’s broken implementations.  There is no good reason to continue to support IE by using it.  In the process, I think you’ll find that the other major browsers out there provide a much richer experience than IE ever has or will.  There is nothing innovative in IE.  IE has never set new trends in browser design.  Why settle for half-assed software, just because it came with Windows?  Firefox, Opera and Safari are free to download for all.  Even Google is getting into the act with Chrome. Why not try them all and see which one you like the best?  (Mind you, this is a partial list out of dozens of browsers.  These are just the most commonly known.)

If you are a Web developer, stop stooping to Microsoft’s level and force them into compliance by allowing their browser to falter and fail.   Don’t make exceptions for stupidity.  Don’t make the design of your sites dependant on "the most popular browser" as you’re afraid that you’ll loose business.  If designers stopped catering to Microsoft’s stupidity, they would eventually find themselves painted into a corner and it would be Microsoft which would be forced to fix their problems to become compliant with the rest of the world.

Stupid Windows Tricks

Monday, June 2nd, 2008

Take a few minutes and watch this video of a demonstration of Windows 7 multi-touch technology. At first glance you may be thinking, that’s some spiffy new technology. I’m going to run down a whole list of reasons why this is going to flop.

Screen dirt

I can’t speak for everyone on this concern, but it is a big one for me. I can’t stand a dirty monitor. If there are fingerprints, smudges or smears which get in the way of my work, it simply pisses me off. At the resolution I run displays, even a tiny drop of pop spit up by carbonation of a nearby drink is noticeable. Now you want me to smear my fingers all over the screen on purpose? No thanks.

Tired arms

With your monitor in the traditional position of straight ahead of you and up at eye level, arm fatigue is going to set in very, very quickly. Don’t believe me? Try it now. Pretend you’re working with this interface on your monitor for a few minutes and see if your arms don’t start to tire. This means you either have to suffer through the arm fatigue and take more breaks from your work, or move the monitor into a non-tradition position of flat on the desk in front of you. Now try working in collaboration with someone else on a problem with the screen flat down on the desk.

Fat fingers produce little detail

Pointing with a mouse or trackball is as precise as the cursor. Pointing with our fingers works to a certain extent, but how often do we pick up a pen or other smaller diameter object to point with, even for a large screen presentation? Trying to run CAD or photo manipulation software with your fingers is going to simply suck. How about just spreadsheet work? Do you want to be pushing around on a spreadsheet, trying to narrow it down to the correct cell?

Blocked vision

Speaking of tired arms and fingers, what about the fact that your hand is in the way? Does anyone want to be editing a photo or laying out a spreadsheet with your hands blocking the view of your work? Try to imagine touching up a photo, where you’re trying to clone another portion or work at blending a scratch or other damage, where your hand is blocking your view.

Screen longevity

Touch interfaces take their toll on screens. I have a HP PocketPC, which after three years is already scratched and slightly worn in spots (such as the close button, which is always in the same place) in spite of my rather careful attitude toward keeping the screen intact. How many users are going to want to buy a new monitor every two to three years, because you’ve scratched up the one you’ve been using with your fingernails, or the touch membrane is wearing out and becoming less responsive? How many women with long nails are going to want to cut them short because their monitor at work uses capacitive connectivity rather than pressure?

Touch screens have their place, and they’ve been around a long, long time now (1971) – but never caught on for mainstream applications. Why? Because it is a senseless waste of effort for most tasks. Leave it to Microsoft to try to redo an otherwise limited vertical market of Point of Sale systems, pocket devices and industrial interfaces to a general PC interface. They just couldn’t take the clue that the reason this hasn’t taken off in the mainstream over the last 37 years is that there simply isn’t a need for it.

A whole lot of “gee-wiz” and not a damned bit of common sense in this one.

Loose Your Data, the Microsoft Way

Thursday, May 1st, 2008

May 1, 2008 (Computerworld) Microsoft Corp. confirmed on Wednesday that it delayed the rollout of Windows XP Service Pack 3 (SP3) because changes to the operating system can corrupt data in the company’s retail point-of-sale and store management software.

I hate to laugh, but I have to.  If it was some bizarre interaction with a third party software package, I might be able to forgive it as an oversight.  But to create two different service packs, for two different OS’s that both corrupt data in one of Microsoft’s own, rather expensive, software packages?  How pathetic can you get?

Certainly it is within the best interest of every systems administrator out there, to test all service packs and updates with the software they run, to ensure that their mission critical applications don’t explode on them.  It falls on their shoulders, ultimately.  However, you would hope that Microsoft, as large as they are, would test their own software against their own OS roll outs.

I know that Microsoft is the 800 pound gorilla in the software cage, which makes them a natural target, but with their recent mistakes in judgment and poor software offerings (Vista simply sucks, the Windows Genuine Advantage is anything but and has screwed up several times now telling valid customers that they’re software thieves, Windows Home Server still corrupts any data you save directly to it across the network, and the last two service packs weren’t released to paying Microsoft Developer Network customers, etc.) I have to wonder if they’re not starting to collapse under their own weight.

Iterative Insanity the Microsoft Way

Friday, March 7th, 2008

A friend of mine likes to say that the definition of insanity is doing the same thing over and over, and expecting a different result each time.

By that definition, Microsoft is the quintessential model for insanity.

I made the mistake of taking on Windows systems administration a few years ago where I work, as I thought the challenge of learning the intricacies of a previously unfamiliar OS would give me a more rounded experience with systems administration in general and allow me to learn to appreciate why Windows admins seemed to love the environment they worked with. Coming from a solid Unix background, I figured that I would find similarities in function and implementation, to the point that course work would not be needed to learn the ropes. I was correct in that aspect and learned quickly via a couple of incidents where I was able to resolve issues that long time Windows admins could not, that having my previous systems administration experience was a boon in general and very much a keystone to ability that only required study of freely available documentation to attain.

What I was also to learn, however, was that many of the paradigms I was used to would have to be ignored and the replacements that Microsoft had implemented, just plain suck. Consistency of methodology is damn near non-existent. Graphical User Interface (GUI) tools got in the way more times than they helped and their interfaces were inconsistent from each other. To get at the real functionality of the GUI tools, half the time you have to right-click on unexpected places to pull up hidden options. Even the simple structure of system settings are inconsistent and stupidly designed.

A perfect example of the nonsense I ran into can be found in the local security settings of any Windows box. You can find sensible settings, such as, “Domain member: Require strong (Windows 2000 or later) session key” with the options of “Enabled” or “Disabled”.  Just below it, however, are “Interactive logon: Do not display last user name” and “Interactive logon: Do not require CTRL+ALT+DEL” with the same options, “Enabled” or “Disabled”. This double negative verbiage is simply ridiculous.

Or how about the fact that even though you’ve setup your Active Directory (AD) domain when you promoted the first Windows server to be a Domain Controller, with clients logging in on your domain and the forest setup with trusts to other domains, et cetera, the name of the Domain Name System (DNS) domain is still “default_domain_name” (or something like that, memory serving,) until you open up the Microsoft Management Console (MMC), run the Active Directory Sites and Services plugin and right click on the entry to chose “Rename” from the popup menu. This is in spite of the fact that you have to enter the DNS name as part of the AD promotion process. I discovered this when I refused to base our entire network’s DNS service to Microsoft’s implementation and had to copy all the SRV records in the netlogon.dns file to the Unix DNS server. After digging around for an hour or so, I finally found out what was up. Of course, if I had enabled DNS and auto-updates of DNS on the AD controller, the information would have been setup correctly then. Most Windows administrators would have simply setup DNS on the AD controller and been done with it. I’ve even read articles advising doing so, no matter what you’ve been using for DNS before, just in case something breaks later with a change suddenly instigated through an update from Microsoft!

Like I said, inconsistency reigns.

The task set before me this week was a new one. The primary Active Directory controller is old and needs to retire. New hardware was ready to go and was tested, so it was time to replace the old with the new. Yes, Microsoft claims that there is no such thing as a Primary Domain Controller (PDC) anymore, but it is only a half truth – as you still have Flexible Single Master Operations (FSMO) server roles, limiting edits of various services to specific systems. You can (limitedly) spread them out among multiple machines, but that doesn’t change the fact that the FSMO roles exist on specific systems and do not have an order of precedence to roll over to another server, should the FSMO server go down. So, even if you spread out your five FSMO roles among different machines, now you have multiple points of failure instead of one. Net gain: nothing.

In my case, our AD domain is tiny. We support about 30 Windows machines anymore, so we had two AD controllers, with the first one setup as the FSMO role server for all five rolls. (This happens automatically the first time an AD controller is setup in an AD forest.) The process to transfer the FSMO roles can be done in one of two ways: right-clicking on a bunch of clumsy GUI menus through three different MMC plugins or running the ntdsutil on the command line and suffering through what is the most abysmal modal command line interface I’ve ever seen.

ntdsutil sucks – it really, really sucks, but it was better than flopping around in three different MMC plugins. So, I started the process of transferring all five FSMO roles from the old server to the new with the command line tool. The PDC Emulator and RID Master roles transferred without a hitch. But try as I might, the Schema Master, Domain Naming Master and Infrastructure Master roles would not transfer, giving a generic error that multiple searches on Google could not elucidate.

So, I decided to make the new server seize the roles which would not transfer. This worked – to an extent. All five roles were reported by the new server to be handled by the new server, but the two old domain controllers now believed that the old FSMO server was still serving all five roles. How the two which had previously transferred correctly were now on the old machine again, was yet another mystery. At this point I didn’t want conflict, so I tried to transfer the roles back from the new machine to the old, all of which failed without even an error message to tell me something was amiss. I now had two AD controllers in the same AD domain of the same AD forest, who both thought that they were the FSMO role master for all five roles.

I left it this way over the weekend, just to see if things would work out or whether additional error messages might tell me something of what was going on. No change came. No new information was revealed.

I tried demoting the new server to stop acting as an AD controller, but it would not allow me to demote the system, giving yet another seemingly random numbered error message. That was enough for me. In desperation, I did what many Windows administrators do at times like these: start over from scratch and do that exact damn thing all over again. I powered the new machine off, re-installed Windows 2003 Enterprise Server, put on anti-virus software and updated with all patches, promoted it to an AD domain controller and kicked up ntdsutil on the old machine and transferred the FSMO roles in the same order I had during the first attempt. Everything worked perfectly. A quick check with the netdom command showed that all three machines now understood that the new server handled all FSMO roles and the whole process was done in just a few seconds time. I had done everything the second time around as I had the first, each step was in the exact order as I had written down. Nothing different was done and everything suddenly worked.

A friend of mine likes to say that the definition of insanity is doing the same thing over and over, and expecting a different result each time.

I understand now that this is why so many people cannot understand that computers are not supposed to crash or otherwise fail in stupid and unpredictable ways. They keep doing things the Microsoft way and insanity prevails and becomes the norm. They can’t understand that things should work the same way every time and that system up time can be measured in years instead of days on a stable operating system. I’m half convinced that Microsoft went to their once a month “Patch Tuesday” methodology for updates, just to make sure that all Windows machines would have to be rebooted once a month, in order to keep the systems appearing stable. I have also come to realize that many people have been fooled into believing that a boondoggled GUI is “more advanced” or otherwise “better” than editing simple text files for system settings – that somehow editing a text file is primitive in comparison – overlooking the fact that cumbersome GUI’s are often simply doing that very task.

If my varied and insane experiences over the last eight years with Windows has taught me anything, it is that whenever possible, no matter how difficult the transition may be at first – if you can run the service on Unix instead, do so. If you leave it up to Windows, you leave it up to sporadic behavior, inane tools and retarded, clumsy and often secretive GUI interfaces. You seemingly leave it up to pure chance.

To me, that is insane.