Cross-browser insanity!

I’ve been working on couple web-projects for last couple of months, doing more intense web-development than for some time (my work takes me sometimes to the system side, even to hardware, and then back again to the application level).  This time I’ve had the pleasure to work on a design that has to work on all grade A browsers, and also support the evil IE6 as something like 20-30% of the demographics of the users of the site still use that browser. Most of such users are likely locked in by a standard corporate desktop or another.

I have been developing the site for FireFox 3.x and IE7, switching back and forth while using the excellent Stylizer (of which a new version was just released, btw) to make sure the layout works in both. Then creating exceptions for IE6 and Safari as needed. The new fun thing is IE8. Not only is IE8’s “IE7 compatibility mode” not 100% IE7, but the way the browser renders pages also depends on what operating system it’s run on. IE8 in IE7 compatibility mode on Vista looks different than IE8 in IE7 compatibility mode on Windows XP! So, in essence, IE8 introduced four (or more!) new browsers to compensate for!

There is a reason for why Google’s home-page has so simple design: it’s the only way to ensure the page looks the same and doesn’t melt down regardless of what browser on whatever platform is used to view it!

We have long since passed a point where it’s reasonable for an individual web-developer to write a more complex site that reliably looks more or less the same regardless of the browser, or a platform. Different strategies must be adopted to overcome the problem. For one, I’ll be using a back-end browser/platform detection script for all future projects. It’ll make it fairly straightforward and reliable to serve corrective stylesheets that override the defaults in “global.css” for the browsers/platforms that need correcting. Attempting to correct for IE8’s different modes, or Safari’s different versions in JavaScript is enough to drive anyone mad. Perhaps the only good thing about IE8’s arrival is that it will finally force IE6 into obsolescence (I rather take IE8’s shaky modes than IE6!)

I’m also increasingly leaning toward Flex RIAs for most any purpose. With Flex/Flash apps the user either sees the application or doesn’t — and the design will always look the same, regardless of the browser or the platform used to view it.

On the web it’s obviously impossible to enforce regulations for how the browsers should or should not function, but from a developer’s point of view it would be great if the browsers would need to be certified to meet fairly tough W3C compliance standards and anyone using a non-certified browsers would be SOL (and moreover, nobody would scorn at—or be surprised about—the lack of a site’s support for the non-certified browsers).

Microsoft Server Products are bad for business!

I have been using various Windows Server platforms for a good decade now. I’m not a MCSE, but I know my way fairly well around Windows 2000 and 2003. Yet I’ve never been able to completely shed the feeling of looking for a needle in a haystack when something goes seriously wrong and Windows gives an error message such as: “Error code 00000050, parameter1 a04bd7e8, parameter2 00000000, parameter3 8089c425, parameter4 00000000” in the System Log as the reason for mysterious, repeated reboots. Perhaps if I were a MCSE I would know how to go about debugging such a problem in a more methodical fashion than the “shot-in-the-dark-debugging” I often have to employ in such situations, and thus reach a conclusion (and a fix) in a reasonable amount of time. But maybe it would take just as much effort, MCSE or not; the Windows Server products keep the administrator at an arm’s length when it comes to divulging their inner workings, or at least they seem to run any diagnostic information through an obsfuscator of some kind. Oftentimes having a good reference library and good web mining skills aren’t enough and the only remaining option is to contact the support – which costs money.

Microsoft also often recommends against running various functions (mail, database, directory controller to name a few) on a single server, no matter how small the environment. Domain Controller should have its own box. So should SQL Server, and (of course) Exchange. And the web server often doesn’t run well in a box with any of the above. Naturally you need an operating system license for all of the servers with dedicated functionality. A SQL Server license costs about $6,000 (per CPU). Exchange starts from about $1,100 for five users, etc. Why does anyone want to pay such high prices when better (more powerful, simpler to maintain) options exist? Support! But if you chose an open source alternative (such as, for example, FreeBSD or Linux for the operating system, MySQL for database, Apache for web server, Postfix for mail server…) you wouldn’t need support nearly as often, assuming you have an equally competent administrator for both environments.

My latest harrowing experience with Microsoft Server products was with Exchange 2003 Standard. I was faced with a server reinstall. The server is also a DC, and realizing the potential unexpected interactions between the various components I did a fair amount of research before starting the reinstall. Alas, this did not help. Exchange’s web access bombed completely even though the install was technically “clean” and the different components were carefully installed in the recommended order, and patched to the current patch levels.

I ended up blowing OWA2003 away, redirecting webmail to a FreeBSD server, and setting up Squirrelmail via IMAP to Exchange which worked right off the bat without any messy configuration issues with ASP.NET accounts. And the users have a more versatile web-mail interface than what OWA2003 would’ve offered.

As a result of this experience I’ve decided to move the LAN in question away from Exchange — into Postfix on FreeBSD. And yes, the same UNIX server will also handle intranet web, MySQL databases and external domain DNS services (for DNS there will be a secondary elsewhere) with little effort. It also says something about Exchange that the lengthy list of Postfix’s configuration parameters feels very straightforward when compared to Exchange’s configuration (having used both products now for several years). Postfix’s numerous configuration options give a very fine-grained control over how the MTA should function. If something goes wrong, Postfix (and Dovecot which I’ll use for IMAP/POP interface) tells you what’s wrong. And should I be totally stumped, Postfix’s excellent support community (mailing list) provides almost instantaneous solutions to even the most complex questions.

It is quite apparent that Microsoft is targeting Exchange primarily to large corporations considering that the production version of Exchange 2007 only runs on 64-bit Windows servers. Such organizations can also afford to throw money around for “Exchange administrators” whose whole job is to maintain the mail server. Perhaps it’s not wasted money, large organizations often have complex enough mail systems so that dedicated individuals or even teams are necessary. But when implementing Exchange in a smaller environment—except for perhaps the wizard-driven SMB-version (which keeps the admins at broomstick’s length away)—the heavier demand for Exchange management is still there even though the mail volume is lower. Small and medium-size organizations can save incredible amounts of money in license fees and in hardware investments simply by choosing Open Source software that will do the job in most cases much better than Microsoft’s Server Products. I would venture to say that Postfix, for example, offers more detailed control over how the mail is processed than Exchange while at the same time offering lower management complexity, a lot more power, and less need for ongoing maintenance.

Going forward, I will be recommending a mixed solution for the SMBs: Windows desktops (XP, for now) with Windows domain to centralize logins and to facilitate file sharing. That takes two Windows servers for most SMB LAN environments (one generally suffices performance-wise, but a second system is recommended for AD backup and it also functions as a backup server in case the primary server fails. For mail, database, ftp, LDAP, external DNS, and web, however, I’m recommending UNIX servers. My personal preference is FreeBSD, but Linux will work just as well. Again, perhaps two servers which can share and mirror operations under normal circumstances and function as backup for each other in event of a hardware failure. Total of four boxes (or two if cost is a concern and an outage stemming from a system failure isn’t devastating to the business) configured as described will create a very versatile system with a high degree of stability.

I end this post with two, somewhat connected observations: First, externalizing spam filtering is a good idea. Katharion provides excellent functionality, and around the end of the year they will also include webmail access to users’ email which is cached for thirty days. This doubles as a backup mail service for internal SMB mail servers. I’ll write more about Katharion in a future post.

Second, it may be time to ditch Outlook as well. Why doesn’t Outlook 2007 provide secure IMAP connections?! If team calendaring is not needed, Thunderbird looks like a much better choice (and even if calendaring and contacts are needed, they can be implemented with other available products).

Edit: Outlook 2007 does offer TLS for IMAP connections (Tools > Account Settings > [select profile] > Change > More Settings > Advanced > Use the following type of encrypted connection: [None/SSL/TLS/Auto]).  Unfortunately, Thunderbird continues to have a number of issues, not least of which is the somewhat clumsy and aged-looking GUI which makes the program less flexible and comfortable to use than Outlook. Outlook’s superiority isn’t completely unexpected: while I maintain that Microsoft Server Products are overpriced, underperforming resource-hungry bloatware, I also recognize that their desktop software is pretty good (excluding Vista.. I really hope they get it right with Windows 7). The Office Suite is very well designed, and VisualStudio is a stellar development tool. Now if MS fixed the HTML rendering problem in Outlook 2007…

To recap: Windows for the desktop, domain controller (obviously), and for Windows LAN file sharing. UNIX for mail, database, web, DNS and other applications requiring good performance, configurability and security on the internet.

“Windows 7 is Vista.” Really?

I see Microsoft has already started to lay down the groundwork for the failure of Windows 7 (Ballmer: Windows 7 is Vista, just ‘a lot better’, InfoWorld). Saying something like that at this point in time should work about as well as if John McCain were to declare that “he is George W. Bush, just a lot better.” People don’t like Vista as there is very little apparent gain from it (as compared to XP), and if Windows 7 is Vista 2.0 it must mean that large number of Vista’s obnoxioius features will still present in Windows 7.

When Windows NT came out its benefits were obvious over Windows 98. Subsequently Windows 2000 took out the rough edges off of NT making the new environment very useable, and lightyears ahead of 98 in stability, features, etc. XP further refined that lineage. Vista, on the other hand, has no such apparent benefits over XP. Even though Microsoft has put significant amount of time into developing the kernel under the hood, to the users it looks more bloated, more resource-hungry, more glitsy, but with few features that leave the user wanting to switch over (DirectX 10 being perhaps one of the only ones.. and if you don’t play games, even it has little significance to you). Obviously Windows 7 continues the lineage, but just as John McCain is desperately trying to point out that he is not George W. Bush, Microsoft would be well advised to play down the likeness of Windows 7 to Vista.

Rather than advertising Windows 7’s already painfully obvious lineage, Microsoft could, for a change, attempt something revolutionary such as making the new version of the Windows actually less resource hungry so that it would run faster on the same hardware as its predecessor. With many UNIX distributions such as FreeBSD that is generally the case; new versions squeeze more torque out of the same hardware than did their predecessors.

CI Host, an evil-doer of the hosting world

If you Google “CI Host sucks” you get about 340,000 hits. Even with the quotes (exact string search) you get 70 hits. This post joins that group.

I’ve been a co-location customer with CI Host since January 2002, and used their shared hosting for some time before then. Their shared hosting really sucked… so I’m not sure why I thought their co-lo service would be any better, but to my defense I must note that at the time there were no local co-lo alternatives in the same price-range. Granted, with one’s own, remotely managed server there has been no need to deal with CI Host’s non-existent customer service, at least to the same degree as with shared hosting. But co-locating introduced its own issues, such as periodic loss of A/C while the server power is still available (this has happened three times in last six years) where the server almost cooks before they either got A/C back online, or I found out as my server’s environmental sensors started sending high temp alerts and I was able to turn off the server before hard drives started failing.

Being now aware of all these problems as well as to save money I started recently a project to consolidate servers into a different, much better data center.  I had some credit left on my CI Host account, and it was enough to keep the service up through the 20th of October, this month, or so I thought. In late September I contacted CI Host billing and told them I was planning to cancel the service in early October. “No problem,” they said, “we’ll erase your credit card info to prevent automatic billing on October 8. Just submit your cancellation notice with instructions so that the service won’t be terminated when the billing doesn’t go through.” So I sent in my cancellation on September 23, and faxed in the signature form (mind you, the fax number they provided on the cancellation confirmation email was “no longer in service”, so I had to find their current, functional fax number first).

Today — on October 8 — I received an invoice from their billing department, with the difference between the total amount for the month and the remaining credit due immediately.  Surprised, I called them, and was told that “CI Host does not pro-rate credit for part of a month,” and that “your invoice is due now,” (or we’ll terminate the service and won’t relinguish the server when you come to pick it up) no exceptions.

Arrgh!!  What is this?!  There was also “nobody else to talk to” than “Sheila” with whom I spoke. No supervisor – she was the supervisor. The fact that I’d been a customer for almost seven years, had referred several customers to them (which I now regret), had stated that I don’t need the remainng credit (about $20) refunded after I’ve removed the server, and that I had been told otherwise couple of weeks ago (when I still would’ve had the time to remove the server before the end of September and the beginning of a new billing cycle) made no difference.

I nearly removed the server from the center last Saturday after their network (and cleverly also the customer service phones which probably operate over VoIP) had been down for three hours. I wish I had, because then I could’ve simply refused to pay. Now I had no choice since my server was being held hostage, and I had not demanded it on the paper that the remaining credit would indeed have been good through October 20th without an extra payment.

Now, some $36 I had to pay is not a huge sum of money, but the way they treated a long-term customer was plain wrong. Considering the number of unsatisfied customers and some major gaffes over the last decade or so, it’s miraculous that they’re still in business. My guess (and hope) is that they won’t last much longer, they don’t deserve it. I will never refer another person to them, and am sure to tell the story to as many people as possible. Was it worth the $36 for them?

If you need top-notch co-lo service, look into VIRTBIZ (starting at about $10/mo more than CI Host per month), or Colo4Dallas. Both have excellent level of service. For managed hosting try out Rackspace. Using a sucky hosting company like CI Host is simply not worth the grief!