It Must Be Microsoft’s Fault

Steven J. Vaughan-Nichols unleashes a scathing attack on Microsoft following the outage suffered by the London Stock Exchange:

It should have been a great day on the London Stock Exchange.

It was, the traders got to watch funny videos on YouTube all day instead of working.

Later the LSE gave the vague explanation, that “It was software-related, a coincidence, due to two processes we couldn’t have foreseen,” and not caused by high-volume. The spokesperson added, “We’ve introduced a fix and we’re confident it will not happen again.”

Somehow “we couldn’t have foreseen” and “we’re confident it will not happen again” don’t fit very well together.

Well, they didn’t foresee it. It happened, and it crashed the system. They now know what happened, and they’ve made a fix that makes sure that bug never strikes again. Comprende?

So what really happened? I doubt we’ll ever get a detailed, nitty-gritty explanation, but I have friends in London and…

None of them talk to me any more so I had to conjure this story out of my rectum.

On top of this runs the TradElec software itself. This is a custom set of C# and .NET programs, which was created by Microsoft and Accenture, the global consulting firm. Its back-end databases, believe it or not, run on Microsoft SQL Server 2000.

Nothing wrong there, at least they aren’t using a database with it’s own host of corruption and performance issues…

The programmers and serious database administrators in the audience can already see where this is going.

Yep, a Linux fanboy with nothing better to write about is going to do another misinformed rant about Microsoft.

Sorry, Microsoft, .NET Framework is simply incapable of performing this kind of work, and SQL Server 2000, or any version of SQL Server really, can’t possibly handle the world’s number three stock exchange’s transaction load on a consistent basis.

Okay, got any evidence to back up those statements?

I’d been hearing from friends who trade on the LSE for ages about how slow the system could get. Now, I know why.

No then.

What I find really amazing is that the LSE’s software stack hadn’t blown its top earlier. Even setting aside my feelings for Linux, there’s simply no way I’d recommend Server 2003, .NET and SQL Server for a job even a tenth this size. If a customer of mine insisted that they didn’t want open source – more fool them – I’d recommended Sun Solaris, JEE (Java Enterprise Edition) and Oracle or IBM AIX or z/OS, WebSphere and DB2.

Yes yes! Anything but Microsoft! Write it in C++, no C, no Haskell, no Smalltalk, no assembly, no in direct machine code! Yes, that’s the best way to do it!

What I’d really prefer to see is RHEL (Red Hat Enterprise Linux), JBoss, and MySQL or Oracle or Novell’s SLES (SUSE Linux Enterprise Server), JEE, and, again MySQL or Oracle for the DBMS engine.

Ah good old MySQL with it’s corruption and performance issues. Yes, that’s a much better DBMS than SQL Server for crucial financial data. And I’m sure the dog bowl mess that is JBoss and J2EE will be much better to work with than .NET. Like I said, anything but Microsoft!

In any case, though, the real moral of this story is that if you really want HA (high availability) or HPC (high performance computing), Microsoft’s products should be at the bottom of your list. Unix, mainframes, and, yes Linux, are far, far better for companies that need fast and reliable computing.

No, the real moral of the story is that Linux fanboys will latch onto any story where they can falsely discredit Microsoft using lies and spin, and none of them are worth reading. This is one I’m making an example out of.

Vaughan-Nichols fails to mention (or maybe he failed to research) that the outage wasn’t the fault of the .NET application he attacks (TradeElect), but on the “trading gateway between the LSE’s Extranex private network (linking the exchange and clients) and the TradElect electronic trading platform”.

Visual Studio 2008 and .NET 3.5

Today Microsoft released Visual Studio 2008 and .NET 3.5. My personal favourites are the new language features for C#; automatic properties, extension methods, lambda expressions and anonymous types.

Microsoft Promoting Functional Programming

Microsoft is promoting F# to be a fully supported programming language in Visual Studio.

F# offers developers many valuable and compelling features without sacrificing much runtime efficiency. F# supports type inference, pattern matching, high-order functions, and currying. F# also supports interactive execution, which means that F# programs can be run like scripts or inputted in an interactive top-level environment similar to the Python shell or Ruby’s IRB. F# also has full access to the .NET APIs and components written in other .NET languages.

Its a good day to be a .NET developer.

URL Rewriting with IIS

Scott Guthrie explains the methods currently available to IIS and ASP .NET for URL Rewriting and notes that IIS7 will allow full, extension-less URL Rewriting without a complex ISAPI Filter.

The good news, though, is that IIS 7.0 makes handling these types of scenarios super easy. You can now have an HttpModule execute anywhere within the IIS request pipeline – which means you can use the URLRewriter module above to process and rewrite extension-less URLs (or even URLs with a .asp, .php, or .jsp extension).

Convert string into enum

A handy tip I just discovered, if you want to convert a String into an Enum type in C#, you can call:

object Enum.Parse(System.Type enumType, string value, bool ignoreCase);
You can then cast this into the required type, and it will save you from creating huge switch statements instead.

Ruby for .NET

RubyCLR is ruby for the .NET framework. You can now create full .NET applications with ruby.

I think it’ll take a lot for me to give up on C# with .NET, but you just have to love ruby.

Warning: require_once(/nfs/c02/h05/mnt/20370/domains/ [function.require-once]: failed to open stream: No such file or directory in /nfs/c02/h04/mnt/20370/domains/ on line 22

Fatal error: require_once() [function.require]: Failed opening required '/nfs/c02/h05/mnt/20370/domains/' (include_path='.:/usr/local/php-5.3.29/share/pear') in /nfs/c02/h04/mnt/20370/domains/ on line 22