73 comments

[ 4.5 ms ] story [ 148 ms ] thread
It's very very hard to take a company seriously that persistently have ridiculously lame bugs in their code and systems.

For example Windows Azure suffered outages in February because the programmers did not anticipate a leap year happening.

http://www.forbes.com/sites/ciocentral/2012/02/29/microsoft-...

Jeezus, don't be so melodramatic and selective, everyone creates bugs.

Remember when android would lose text messages? Or Amazon's supposedly redundant system went down all at once?

Don't point a finger at MS for what wasn't even a complete outage.

And not taking the biggest and most successful software company in the world seriously makes you look like a complete fanboi tool.

Talk about "fanboi". Microsoft may be big but, on the internet, they have far less experience and far less usage. The internet isn't the desktop. There, Microsoft is a small player.
McDonalds are the biggest and most successful restaurant in the world. But I doubt any chef would describe their food as being fantastic.

When I want to eat a really nice meal with friends or family, I rule out McDonalds. Does this make me a "fanboi tool"?

Microsoft have a pretty long history of date related bugs in their software and products stretching back years. They do not seem to understand how leap years work.

Windows 98: http://news.bbc.co.uk/1/hi/sci/tech/150947.stm Zune: http://bit-player.org/2009/the-zune-bug Excel: "Excel 2000 incorrectly assumes that the year 1900 is a leap year" Exchange 2007: http://www.theregister.co.uk/2008/03/04/microsoft_admits_to_...

etc etc

Mc Donald's is not used by the 90% of the world. Microsoft clearly is a very successful company which builds great products. Just because their philosophy doesn't align with mine, or because I like Linux doesn't mean I have to diss them. Look at Kinect for example, It. Is. Revolutionary.
I'd guess McDonalds has a similar market share in food as Microsoft has in software... Do you disagree?

I bought a Kinect. I used it for a couple of days. It had a novelty value, but no staying power. I don't think I'm alone there.

In any event, my original point was that trusting your hosting to a company which had an outage due to not foreseeing a leap year, may not be a good decision.

Outages due to particularly hairy code related to redundancy and failover etc, I can forgive. But an outage caused by a leap year? No way.

You my friend are not aware of the radical things people are doing with kinect, just the other day I saw a demo of a quad copter with a kinect on top of it, and once you release it into a room, it will give you the whole 3D profile of the house without a human controlling it! If that does that not dazzle you, I am not sure what does.

And about the bug being a leap year bug is really a nonissue, a bug is a bug. An year ago, Github nuked their whole production database, because of a deployment glitch. We all create softwares with bugs, it's the response to that which matters. And, Microsoft does a stellar job at that.

Yes, yes; this obviously makes Microsoft irrelevant roll eyes

Some of you need to be treated for Microsoft Derangement Syndrome.

It makes them as relevant as McDonalds is, when I'm considering where to go to get some good food.
Are you quite new to programming by any chance?

Dates are actually really, really hard to get right. They've been a problem for everyone for decades. When I started programming professionally about 10 years ago you'd be lucky if most programmers had even heard of UTC, let alone knew what it meant. Date bugs happen to everyone.

These days the higher order languages hide all the big problems from you. But when you get closer to the metal and you've not got someone else's library to help you it's very easy to make a mistake.

I've been programming for 25 years or so.

Hmm dates... It's almost as if you'd want to just count the number of seconds/ms since some point in time. Then you can do arithmetic easily, don't have to worry about calendars, leap years, etc... :/

Converting a date to a human readable form is hard. There is no way on earth that computers should be storing dates in human calendar readable forms. They should only ever be converted to that format for display purposes. That is the lesson MS don't ever seem to learn.

Converting a date to a human readable form is hard.

No, converting a date to human readable form is the easy part.

The hard part is converting the number of seconds from some epoch into a date.

The number of seconds from some reference point is not the same as a date.

Right. Like when you want some maintenance task to run once per month; you can just ignore the calendar and do simple arithmetic.
So if I want add a year to a date and time I just have to add the number of seconds in a year which sounds ludicrously easy I agree. I want to know the exact date and time one year from February the 29th at 12:00 hours 2012. I want the answer to be consistent so what is the date and how many seconds do I add? I would also like to know the exact date and time one year from February the 28th at 12:00 hours 2011. I want the answer to be consistent so what is the date and how many seconds do I add?
The Excel one seems to have historical justification; that spolsky chap mentions it here: http://www.joelonsoftware.com/items/2006/06/16.html. Basically, early Excel was being compatible with Lotus, which ignored 1900 being a leap year probably because of limited memory back then. Possibly MS should have fixed it before Excel 2000, but it's not a simple situation when being correct with leap years breaks compatibility with something else.
Didn't Apple have a similar issue with time changes?

While I'm not excusing either, it isn't necessarily symptomatic of widespread failure.

Sony says hi, http://en.wikipedia.org/wiki/PlayStation_3#Leap_year_bug

And Apple can't even handle regular years or daylight time: http://www.appleinsider.com/articles/11/01/01/apple_admits_n...

And handling this in a phone or game device should be about as difficult as on a clock... A cloud on the other hand is much more difficult, as google points out: http://googleblog.blogspot.se/2011/09/time-technology-and-le...

Claiming that Microsofts progammers didn't even anticipate a leap year is kind of pathetic. Sure, it might have been an unnecessary bug (whether it was or not is not possible to decide from that article), but most bugs are...

Sure, it happens in other areas too. But the last place you want it happening is on a hosting platform.

The consequences of your hosting being down are larger than not getting an alarm on your iphone or being able to connect to PSN.

By that same metric, Apple also cannot be taken seriously because they can't do Daylight Savings Time right, even their bug fix had a bug.

http://www.pcworld.com/article/222029/iphones_daylight_savin...

I was just about to point this out. It caused me to not wake up on time and miss a major family event. It was also one of the reasons I got rid of my iPhone. The (lack of) backlash that this bug caused really made me understand how ridiculous the situation had gotten with Apple's infallible perception.
I'd prefer lame bugs over serious ones, like Amazon's EC2 data loss last year.
There are reasons why articles like this are written and should be taken as a warning to anyone considering using Azure.
"I can code in somewhere between 60 and 80 languages, and I can assure you there is nothing like C#."

Um, really? I can just barely name 35 languages, even including esoteric ones like Brainf*ck and Shakespeare.

Indeed. And although I love C# and use it all the time, it's ridiculous to claim there is 'nothing like it'. Um, Java for instance?!
The C# syntax is a lot better than java. Java's verbosity is too much. And Microsoft had done a good job at making things easier in each new version of C#.
Yes, but the claim was that there's nothing like it, not which is better.
That does seem a little hyperbolic. Shame, because the original statement is very valid- C#/.NET is looked down upon in Silicon Valley, but rarely for valid reasons. It's just not "cool".
People look down on it because:

1 - Most people want to run OSS...specifically Linux so they can leverage all the tools that run better on (or only run on) Linux. Like memcached, varnish, redis...Running .NET on Linux is silly.

2 - Want a dynamic language because it's more productive.

It isn't because it's "not cool". It's because general purpose languages are a dime a dozen, and there's no reason not to pick the best one possible. The only advantage .NET has is if you are doing work that integrates with other MS products.

What are "generate purpose languages"?

If you meant "general purpose languages", which one is "the best one possible" and for what reasons?

fixed, thanks.

It depends on the context. Again, if you are doing tight integration with other MS/Windows apps, .NET has a distinct advantage. And, in that case, I would probably say that C# is the best possible solution.

Java, which I'm not a fan of, has obvious advantages because of the size of tooling and community. It's also cross platform (which, again, may or may not be a big deal) while having good performance. More broadly, the JVM has those same advantages, plus distinct languages.

I'm a fan of dynamic languages. I think Python and Ruby are the best choice for what a lot of people are doing, especially on the web. Python obviously has a lot going for it in the scientific and research community.

I'm a former ASP.NET MVP, for what very little that's worth. For building websites, ASP.NET (WebForms, or MVC), is not a productive choice. I'd rather build something in PHP.

(comment deleted)
Although I think point 1 is valid point 2 seems somewhat hyperbolic. Could you clarify why dynamic languages are more productive than C#?
Something that I've written about a lot...yesterday I looked at it from the testing angle:

http://openmymind.net/2012/4/24/I-Rather-Have-Silly-Tests-Th...

It essentially comes down to less code. Some of that is simply less language clutter:

public virtual void Add(int a, int b) { }

vs

def add(a, b) end

Some of it is just what's possible due to dynamic languages, whether that's because of the type system, or, more likely, meta programming.

The benefit of meta programming compounds itself through libraries too. So not only is my code able to leverage it, but I can use libaries that leverage it and end up with User.find_by_name("leto") (as a classic, but certainly not singular, example)

I'm sorry I don't understand. Your example does nothing and has very opaque variable names. As soon as you have some code and variable names that are helpful the language clutter seems pretty irrelevant. I agree that libraries are useful but they exist in non dynamic languages. You can Meta program in C#. I'm not denying that dynamic languages are neat but I still don't see how you can simply define them as fundamentally better rather than your preferred choice.
What's silly about running .NET on Linux? If C# is a decent language on its own, and Mono is a decent way to run it (neither of which I'm completely sure of, but I think that's the case) then it seems like it could be a fine choice.
Honestly, it's a pill I simply haven't swallowed. I'll admit I'm a ton less apprehensive now that they've been forced to split from Novel. The risk of them being shut down (and then what?) always bothered me..now we know, and it doesn't look so bad.

If I have compelling need for a static language (performance?), I'm not sure if I'd pick C#, Java/Scala. But I maintain that all three are less productive than Ruby/Python, so unless you are building Cassandra/Lucene/Redis/Nginx/... I won't be too compelled about performance arguments.

> and Mono is a decent way to run it

I had consistently better performance running the same (CPU-bound, little IO) program on Windows Server than running it on Mono/Linux. I did that in 2005, so, YMMV.

Why would you pick C# over, say, Objective-C, Go or Java if you intend to run your software on Linux?

I imagine things have changed in seven years, although I won't say that Linux would win.

C# is definitely better than Java as a language. It's arguably better than Objective-C (whose main advantage is ease of talking to C APIs), and I have no idea about Go but I imagine there are probably decent reasons to prefer C# over it at least in some cases.

There is another point to be made: with the enormously rich language ecosystem that runs so well on the Linux platform, why limit oneself to the subset that runs well on Windows?
Sure. I'm just saying that if C# is actually a better language than the alternatives (and it does seem pretty good, but I'm not that familiar with it) and if C# integrates with Linux as well as the rest, then it would be a decent, not-silly choice. I'm sure there are plenty of reasons why you'd choose something else instead though. But I don't think it's necessarily silly to choose C# on Linux purely on the merits of the language, nothing to do with Windows.
I don't think Linux integration is that good - Ubuntu just released a Mono-free OS release (you can install it, if you want, but it doesn't come installed by default) - and I wouldn't bet on it getting better.

I'm kind of curious about languages such as Vala and Go and how they compare to C# and Java.

> It's just not "cool".

What a completely misunderstood view. Microsoft has earned the distrust of many many a coder through their cut-throat business tactics and complete disregard/disdain for other operating systems and platforms.

Wake me up when I can run a MS stack for near-free in perpetuity... because that's what Microsoft is competing against in the startup world. Do you think Instagram or Twitter's architecture would have been possible without OSS?

My thoughts exactly - even if he could code Hello World in 60 languages he couldn't know them in any meaningful sense. And in a spectrum that includes Python, COBOL, Lisp and Brainfuck, I would say that Java is like C#. It's quite a good language, but "nothing like it" is a bit over the top.
My guess is that the interviewer misheard him and he actually said "between 16 and 18 languages".
This seems to be have been corrected in the article.
“In this echo chamber which is the [San Francisco] Bay Area, unless you follow what everyone else does, then there’s an assumption that you don’t know what you’re doing,”

How true is this?

If this site is anything to go by: very, very true.
I am considering a move to SV and this quote left me w the same question. How about it guys?

My perception so far is - It is quite possibly true, and I have noticed a strong anti-MS bias. I like and use Ruby\Rails but I have developed in .NET, and Visual Studio, C# are quality tools. VB.net is totally maligned but quite good: very English syntax w/o managing all the damn brackets.

I switched to open source because I hope to have a lot of users, thus a lot of servers. My feeling is the MS space is excellent for B to B, or internal intranet stuff, where the tight integration w Windows et al is useful and the licensing costs are moderate because of the low volume of users.

Appharbor is awesome for .NET (as an alternative to Azure).

The article does ring true that valley based consumer startups run on Python/Ruby more often.

(I am really not sure about the "enterprise" ones.)

You can't deploy to Azure without windows.

Cloud9 ide allows you to deploy from their platform to Azure but it was a headache getting anything working.

(comment deleted)
Sure you can. The Azure website's control panel has a package upload dialog box. As long as it is a valid Azure package it doesn't matter where you upload from.
“People say, ‘Oh, I’ll have to teach you about Java sometime, so then you’ll know the bright side.’”

Did this strike anyone else as something _nobody ever_ would say? I think it's pretty much consensus that C# is basically the next-generation of Java.

As for Rails, Python, etc. being the most common tools in SV, I tend to this it might be because they are free. The thing is (in my experience) MS dev tools are usually very good, and probably don't cost nearly as much as most people think they would. However, entrepreneurial folks are just more likely to start with something free, and then when the time comes to get more serious about their startup, it just makes sense to keep running with what you know.

The obvious counterargument is that you can get everything required for Java for free and there's the MS small business deal where you practically get carte blanche access to MS tools for free for (3?) years, and that still doesn't sway many startups towards those toolsets.
As for Rails, Python, etc. being the most common tools in SV, I tend to this it might be because they are free.

I don't want to go all Richard Stallman on you, but I think it might also be because they are Free. I mean, I've never bothered looking into MS dev tools because I assume they'll only run well on Windows, and they'll be designed for a server stack that will only run well on Windows, and then I'll be tied to getting my dev tools and server stack from one company on one OS, and it will be Microsoft.

It happens that I like developing on a Mac with a Python IDE right now, so I freely admit that I'm both biased and ignorant. But I do know, know, that if a year or two down the line Apple gets too controlling, I can switch to Windows or Linux and keep using my same stack with tools that are just as good. And if Guido decides to become Tyrannical Dictator for Life and screw up Python, he'll have no real power to do that because the community can do exactly what they're doing without him. Are those things true about MS dev tools?

I got into Microsoft Bizspark and it came with Free azure hosting. So far so good. Coming from heroku with a Django app, It was a bit tough at the start but when you get the hang of everything, it does it's job.
is it better or just cheaper? (seriously, I'm interested in your opinion) did you switch for costs only or are there benefits to Azure as well?
BizSpark can be a big advantage, especially if you're bootstrapping. You get quite a bit of capacity for free in the first year.
I can't really compare it to Heroku. You have to compare it with EC2. First thing. They are planning to roll out Linux hosting but as of right now it's only windows and I have never used Windows EC2. With Azure you actually get a Windows machine in a datacenter that you choose. You can Remote desktop into it and control it, like you can control your local computer. Deployment is kinda tricky. But it's important to get Remote desktop working first so you can see what's happening in the system. It's not like heroku how you can do Heroku --logs. It's very important to remember that with Azure. You have to do everything. Heroku makes deploying, logging very simple for you. But at the same time you have less control. To sum up. There is a steep learning curve coming from heroku. But overall, I think it's was worth it.

This is what you get with Bizspark: http://www.microsoft.com/bizspark/azure/

Microsoft's problem is sycophants. There are enough people telling them how great their products are, that when those same products don't do well, Microsoft looks outwardly for the problem.

Windows Phone must be great, a lot of reviewers said so. Poor sales? Perception and marketing! (Forget lack of leadership, vision and innovation)

Azure is shunned? That's because people misunderstand it. Nothing to do with being slow out the gate, falling farther behind with each new AWS product, and not having any price advantage (in some cases, it's far worse).

Bing losing money? That's just not fair, our results are as good as google. (NO THEY ARE NOT).

These sycophants are both internal to the company and external.

The sooner Microsoft realizes that it's failing to succeed in new markets because it's average-at-best, the better for them. As long as they keep believing that their failing products are great and thus the failure is [largely] outside of their control, nothing will change.

>Windows Phone must be great, a lot of reviewers said so. Poor sales? Perception and marketing! (Forget lack of leadership, vision and innovation)

There is no reason for both of them to be problems.

You mean like how when you go looking for Windows Phone the salesman almost always pushes you hard towards other phones? There are too many instances of this to ignore.

Meanwhile, in multiple third party independent surveys, Windows Phone continues to do well:

http://www.neowin.net/news/windows-phone-tops-in-user-satisf...

http://socialtimes.com/windows-phone-bests-android-in-user-s...

http://thenextweb.com/apple/2012/03/28/revealing-user-survey...

For years we have heard the talk-ers proclaim how the .NET stack doesn't scale is too expensive for a startup. Meanwhile the do-ers built Stackoverflow and it has none of the scaling problems that sites built on other tools like Reddit have.

The perception problem is real and for you to totally ignore it shows your own biases.

Windows Phone isn't selling because it came out 4 years after the iPhone. It's an absolutely failure at the leadership level. They ridiculed the iPhone when it came out. What's the leadership going to say "We really dropped the ball on this one"? Ya right...blame anyone else.

I'm not arguing that Windows Phone isn't better (nor am I arguing that it is). I'm arguing that the reason it isn't selling is 100% internal to Microsoft and isn't merely a marketing and perception problem.

You're talking about public statements. Of course, any company ridicules competitors' strategies. Where are statments from Apple heaping praise on the Kinect?
Azure competes with AppEngine and Heroku, not AWS and Rackspace.
This piece reads like it was written by a Microsoft PR person, and not a investigative journalistic piece in Wired. After reading this[1] I can't help but be extremely critical of articles written this way. (or most magazine articles these days)

[1] http://www.paulgraham.com/submarine.html

I like C# and a lot of my career has been .NET work, but I detest this sanctimonious attitude .NET devs cop sometimes, like they're being iconoclastic or rebellious for using the MS stack. Like everyone who doesn't do what they're doing is engaging in groupthink or trying to be "cool". Believe it or not, people actually have good reasons for not using MS software!
I've deployed some Node.js code on both Azure and Heroku, and I have to say the Heroku experience is in many ways superior:

* Both seem to do Node quite well, supporting both web instances and workers

* Deployment to Azure can take 30 minutes. On Heroku we average 30 seconds

* App setup on Heroku uses environment variables and the simple Procfile. On Azure you need to deal with poorly-documented XML files (most documentation deals with how to generate those with wizards in Visual Studio)

* Heroku's toolbelt works on Linux, Mac, and Windows. With Azure you have to use Visual Studio or Windows Powershell

* Azure provides some useful services like table storage and message queue. But Heroku has a much wider array of nicely-working add-ons to choose from, many of these things you could run on your own servers as well, like Redis or Postgres

* Last time I checked, Azure was quite expensive. This may have changed with their recent pricing cuts

* On the plus side, Azure lets you choose where to run your app geographically (USA, Europe, Asia?)

Compare:

http://universalruntime.tumblr.com/post/14303346830/running-...

https://devcenter.heroku.com/articles/nodejs

Does anyone here have actual experience to share on using Azure that has also used AWS? I'm building a node.js app and by default I'd use AWS but should I consider Azure?
So, someone who loves C# loves Windows Azure. I'm not surprised and as noted by many other posters, this article hardly has a genuine ring to it. Nice try Microsoft.