

MySpace runs on IIS? Really? - andreyf
http://www.myspace.com/fullstealthfilms/

======
ratsbane
It's not completely impossible to do good work on the .Net platform.

But it is very, very unlikely.

.Net teaches programmers to write code to .Net, to Microsoft rules. It teaches
its victims to use the excreable "viewstate" and POST when they mean to GET
and pass volumes of unnecessary and poorly-encoded data back and forth between
the server and client. .Net programmers learn to drag and drop things onto
forms which Visual Studio then clogs up with layers of absolute-positioning
tags, ensuring that the resulting pages will only display correctly on certain
browsers with certain window-sizes and absolutely will not print properly,
even when the planets are properly aligned. But that's okay, with .Net you can
use Reporting Services to design hundreds of divergent "reports." .Net teaches
programmers to code to Microsoft's api, not to web standards, fundamental
principles of math and computer science or, frequently, to common sense.

It isn't to Microsoft's advantage for developers to consider other options and
thus they try with great success to prevent .Net developers from realizing
those options even exist. Microsoft documentation almost never refers to RFCs,
even when doing so would be helpful. They hide the browser object model as
much as they can and instead present the .Net wrapper for the browser object
model as the only truth, with a Microsoft registered-trademark character after
every thought.

It is possible to do good work on the .Net platform; it's just very, very
unlikely.

Perhaps I've gone too far with this rant. As you may guess, it results from
great frustration with well-funded idiocy in the wasteland of corporate
American IT. Also I just tried to pay my property taxes online and the lovely
.aspx page blew up with a CLIENT-SIDE VBSCRIPT error.

Good grief.

But here is a final and positive thought: quite a lot of business in the world
is run on very poorly-designed systems, whether .Net or otherwise. Perhaps
there much opportunity and advantage to be gained in creating better systems
to replace them.

~~~
nandan
Perhaps you are being a bit too strong here. I might hold an uncommon
contrarian view for news.yc but, here goes nothing:

"It teaches its victims to use the excreable "viewstate" and POST when they
mean to GET and pass volumes of unnecessary and poorly-encoded data back and
forth between the server and client."

You are right here to the extent that "viewstate" is the default way of
managing state, scalably, in ASP.NET. And this adds to the amount of data
being streamed between the server and the client, and back. But, when
performance is the "key" consideration, you can turn off viewstate for
controls that dont rely on it, or for the page as a whole. If you are really
hard-core about performance, you can write HTTP handlers that override parts
or whole of the default handlers. Thus, you can maintain state on the server
side completely if you wish to (dealing also with the concomitant issues to
scale the site).

".Net programmers learn to drag and drop things onto forms which Visual Studio
then clogs up with layers of absolute-positioning tags, ensuring that the
resulting pages will only display correctly on certain browsers with certain
window-sizes and absolutely will not print properly, even when the planets are
properly aligned."

If you look into the "flow" layout mode, you will see that "absolute-
positioning" is only one of the options that the Visual Studio Designer
presents to you. There are no browser compatibility issues per se with the
"flow" layout mode for printing or otherwise.

Also, Drag and Drop is a _Good Thing_. I have been dabbling with RoR lately
and am yet to find good tooling around it. But, Visual Studio .NET is
definitely one of the most powerful IDEs I have worked in. Drag and Drop =
Increase in productivity.

"But that's okay, with .Net you can use Reporting Services to design hundreds
of divergent 'reports.'"

From what you say in your comment, you seem to have quite a bit of experience
with developing web applications for businesses. Given that, I am quite
surprised you havent encountered similar attitudes that I have, as far as
"Reports" go. Business Users _LOVE_ reports. "Reports" have been given a
substantial amount of attention in most projects I have been associated with.
So they are not "divergent" by any means. Drag Drop Capability for Designing
of Reports, with Design Time handles for all the entities that compose it, is
again very powerful for a host of business scenarios.

".Net teaches programmers to code to Microsoft's api, not to web standards,
fundamental principles of math and computer science or, frequently, to common
sense."

"It isn't to Microsoft's advantage for developers to consider other options
and thus they try with great success to prevent .Net developers from realizing
those options even exist. Microsoft documentation almost never refers to RFCs,
even when doing so would be helpful. They hide the browser object model as
much as they can and instead present the .Net wrapper for the browser object
model as the only truth, with a Microsoft registered-trademark character after
every thought."

Tnese are very strong statements. :) I actually think that the Server Side
abstraction that ASP.NET provides to developers is amazing. Why? Because being
exposed to the "browser object model" for a number of browsers and their
varying capabilities is not really meaningful when what I want to do is
develop relativly straight-forward applications _fast_. You can also look into
what ASP.NET calls "Adaptive Rendering". This also serves to abstract away the
nitty-gritties of the browser making the HTTP requests.

"As you may guess, it results from great frustration with well-funded idiocy
in the wasteland of corporate American IT. Also I just tried to pay my
property taxes online and the lovely .aspx page blew up with a CLIENT-SIDE
VBSCRIPT error."

Sure there are idiots in IT. And sure there are idiotic ways to develop
software. Microsoft's marketing department does a good job capturing market
share in the corporate world. Once they do that enough, it moves into the
realm of supply and demand. When we have enough money to pay, enough
unqualified people move into all points in the software development cycle, and
what we get is this.

~~~
ratsbane
Thanks - that was a very nice and thorough response. And I quite agree with
much of what you said. You don't have to use "viewstate" and flow layout is
the sensible thing to do. But in actual practice .Net projects often do use
viewstate and POST even when GET is appropriate and .Net projects frequently
use absolute positioning even when flow is clearly approprate. As I said, it
IS possible to do good web projects with .Net but in practice it doesn't
usually work out that way.

Orkut is a great example of this. In its earliest incarnations it used
postbacks and viewstates rather wildly but I notice every so often they seem
to have rewritten it to use less and less of that stuff.

One thing I will disagree with you on - dividing your system up into input
.aspx pages and reporting pages using reporting services - isn't good design.
You shouldn't force a user to go to some other page to print the same data he
sees on the screen. The data IS the report - if you can see it on the screen
you should be able to print it on the paper without having to navigate to some
other page. Think of the URL as the Dewey Decimal number for a piece of
information. If you want to see the sales data for June, for instance, you
might find it at
[http://mycompany.com/sales?fromdate=2007-06-01&todate=20...](http://mycompany.com/sales?fromdate=2007-06-01&todate=2007-07-01)
Why should you have to navigate to a different URL to print that? Tim Berners-
Lee's original ideas of the URL as the starting point for the semantic web
seem rather good to me but I don't think there are many implementations which
come close to recognizing the potential of this idea. Breaking a system into
separate sections for reporting and viewing just seems a bit daft. But again,
that's the sort of behavior .Net encourages - not requires, but encourages.

~~~
nandan
I think I misunderstood you there. You are right, from a "User Experience"
perspective dividing up the web application's pages into sections for viewing
and other sections for printing is probably not very good.

For some reason I thought you were talking about "Reports" and "Reporting" in
general, as offered by the Report Viewer Controls in ASP.NET (using rdlc /
rdl).

I have used CSS in the past to allow users to print pages (as they see it on
the page) and it has worked well for me. Although Report Viewer Controls in
ASP.NET have their own magical hold on the business users (Probably because
they are made to look and feel similar to other Reporting Packages, which
Business Users are comfortable with). So, I still think thats a good way to
go, if that is your audience. :)

But, I do understand what you are saying and agree that there is the
possibility of people using this technology where it shouldnt be used.

------
mkull
Yes, they were running coldfusion until about 2 years ago, at which point they
switched to a hybrid solution of Blue Dragon (ColdFusion running on .NET) and
ASP.NET.

<http://highscalability.com/myspace-architecture>

------
steve
Myspace runs? Really?

More like limps along..

~~~
migpwr
Seriously?

It's funny how hating myspace has become as popular as hating microsoft...

I'd like to see you make something "run" with that many users.

~~~
joe
How many users does MySpace "run" with, again?

~~~
ratsbane
According to this
(<http://news.yahoo.com/s/nm/20070820/media_nm/myspace_dc_2>) MySpace is at
about 61 million active, unique users while Facebook is at about 19 million.
Also MySpace users spend more time on the site than Facebook uses, which I'm
sure translates to more traffic per user.

As a very unscientific test, I just logged on to my Facebook account and my
Myspace account and noted the following about my home pages:

Myspace html size: 16.38kb count of external .js files: 10 count of external
.css files: 4 render mode: quirks load time (time to reload, thus assuming
most requests cached, average of 3): 3191ms Facebook html size: 5.35kb count
of external .js files: 27 count of external .css files: 25 render mode:
standards load time (time to reload, thus assuming most requests cached,
average of 3): 3207ms

I was surprised the load times were so close. MySpace feels slower but that
may be because pages frequently include external images and sound files.

I don't mean these comparisions to either trash or promote MySpace or
Facebook; instead I think it's instructive to consider which benchmarks
translate to the best user experience and what techniques contribute to the
better set of numbers.

~~~
steve
You're about two years too late to do benchmarks on myspace as a startup.
They've re-written the thing at least twice over and put a whole lot more
money into fixing it up by now.

Myspace's server software and html was bad. So so bad.

------
mpc
We're using .net, which has worked out good for us. Yes, the default settings
are designed to lower the bar for IT shops to build apps easily. If you know
what you're doing, you can avoid the muck and get right to the extensive and
powerful features.

Our configuration....

\- Lots of JS, homegrown ajax framework that extends YUI

\- asp.net but with custom controls that we wrote

\- custom http handlers take care of the call backs

\- deployed on apache with mod_mono. mysql db

~~~
ratsbane
Why did your group even decide to use .Net at all? You seem to have avoided a
lot of the traps of .Net by avoiding a lot of what actually comprises .Net.
Are you running on Windows servers?

~~~
mpc
There are a number of reasons.

\- The server, db, and xml APIs are great

\- We really love the c# language

\- We're already experts with the technology

.net is more than just the default settings for asp.net. Using any platform
"as-is" will get you into problems.

We essentially have our own framework, with .net as the foundation.

ps - We're deploying on linux with apache and mod_mono

------
rustartup
All spoken here do not understand .Net enough. I worked for tagworld.com and
this web project is "quite" big. Viewstate and drag'n'drops and the like are
nowhere used.

.Net is NOT for web sites, it is for web projects, really big and
heterogeneous, with lots of services behind.

For other please use php and the like, with "quick submit to db" approach.

~~~
ratsbane
Simple little websites like Facebook and Wikipedia seem to get by quite nicely
with the quick and dirty PHP approach :-)

~~~
jamongkad
Yeah ha ha "simple" in every sense of the word. You can toss in another
"simple" app by the name of Flickr.

------
aston
It's not like Microsoft's web stack sucks. Obviously C#'s not en vogue, but
it's a fine way to put together a website. There's actually some really good
stuff in there, and they've had the presentation/code-behind separation in
since before people though it was a good idea.

~~~
cellis
I can't speak on C# vs Python or C# vs. Lisp, since I haven't coded in either
of those languages. I can speak on C# vs. php - I just finished a job with php
and started C#. Originally,I thought I loved it because of the library (ie
dataset, dataview,gridview), and garbage collection. Then the object
orientedness of it all got really, really hard to implement rapidly. I may
still use it to write sockets and hwnd stuff for windows (I'm a game dev), but
for web stuff, I'll stick with php and maybe learn py.

~~~
hello_moto
I have no experience in PHP (nor Python). What makes the two easier (or more
rapid) to implement in OO way compare to C#?

I think the tools for .NET makes it better than others.

~~~
cellis
well at the "planned" level, nothing. At the throwaway level, everything.
Things that would take ten seconds in php (like a simple post form to a db)
could end up taking 2-3 hours in C#/.NET

------
rustartup
People who spoke against .Net/C#. Please study it really deep first. Do not
make fun of youself.

~~~
tx
+1 for that. Even though I am trying to stay away from Microsoft platforms
these days, I still will say that cirics of .NET/C# who posted above do not
even deserve a serious answer. One "word" - RTFM.

And nobody so far has mentioned one of the best features of ASP.NET apps:
crazy speed. After everything gets precompiled it is amazing how much load a
cheapo $1K server can handle.

~~~
mpc
Bingo.

Check out my comments below.

