ASP.NET / .NET Framework: YO, DOOOOOD! It's in the Quickstarts!

If I had a dollar for every forum or newsgroup post I've seen that could easily be answered by just looking at the ASP.NET / .NET Framework Quickstarts, I'd be a very rich man.

I don't know whether it's because people are just lonely and are looking for some sort of validation, or that they are just plain STUPID, or a combination of the two.

Here's the deal: People make posts to newsgroups and forums with these questions. And they wait for an answer, which often never even comes (either because their posting netiquette is really poor, or because the post isn't really very interesting to most readers and they respond to other posts). And so the posters get frustrated.

The Microsoft people have invested a HUGE amount of time and effort to provide you with tools to make the learning experience easy and productive. A significant amount of this effort for both .NET 1.1 and .NET 2.0 has gone into the production of the Quickstarts tutorials and the Samples applications.

What never ceases to amaze me is that a significant percentage of users do not realize that these applications are available as part of the installation tree for BOTH Visual Studio.NET (2003 and 2005) AND the .NET Framework SDK (1.1. and 2.0).
They are FREE -- and all you need to do is install them, follow the easy setup instructions, and "dive in". The example code is provided in both VB.NET and C#; the language preference is yours.

Not only that, but both quickstarts for ASP.NET (versions 1.1 and 2.0) are available online if you are too lazy to install them on your local machine!

http://samples.gotdotnet.com/quickstart/ -- that's the 1.1. Quickstarts.

http://asp.net/QuickStart/aspnet/Default.aspx -- and that's the 2.0 Quickstarts.

There is also a Windows Forms "Quickstart" with over 900 code samples here.

N.B. --I had a couple of comments to this post intimating that I am being "arrogant". Perhaps I could have worded it in a more benign manner, but my objective here is not to be arrogant or come off as "holier than thou" -- it's to enlighten people to the fact that these excellent resources exist, and to encourage people to use them as a more productive first step. I've been programming with .NET since 2000, and I still often refer to the quickstarts as a convenent way to find sample code on "How to do X" - either because I've forgotten how to do it, or because (arrogant "hotshot" that I may be) I actually do not know how to do it.


Rest my case.


ATLAS March CTP with GoLive License, Coyotes in Central Park and Fawlty Math

Dee: "Incoming Cylon Raiders."
Admiral Adama: "Launch All Vipers, I got mah eatin' britches on"

An atlas, in architecture, is a support or column sculpted in the form of a man; the plural is atlantes. Another name for such a column is telamon (plural telamones or telamons, Caryatid is the female equivalent.). In Microsoft parlance, "ATLAS" is the new server-side to client-side architecture that lets you "AJAX" (remote scripting) - enable your ASP.NET 2.0 applications. (AJAX, of course is a foaming cleanser or a soccer league).

Up until now, I've stuck with either Anthem.NET or MagicAjax (both can be found on SourceForge.net), the two open-source infrastructures that feature the preservation of the stateful page object during client callbacks without reliance on external handlers (unlike another popular one, "AJAX.NET" - which does not do this.) Both are easy to learn and both support ASP.NET 1.1 and ASP.NET 2.0

However the Atlas offering is shaping up to be much more mature - with a complete declarative markup set of controls for progress, UpdatePanel, etc, and a fully fleshed -out API.

This new March CTP is accompanied by a reworked site, and some nice viewable videos. Be sure to watch the one by Scott Guthrie on his "TODO List" - you'll be hooked -- he puts together an entire ASP.NET 2.0 application and ATLAS - enables it, literally from SCRATCH, in less than 18 minutes! There is also complete online API documentation (albeit still "beta") along with a lot of walk-through samples.

And, above all - it offers GOLIVE license permissions which essentially means you can start using it "for real" in your public web sites.

Snag yourself a copy of the downloads here.

All-in-all, this is what I would characterize as a pretty ambitious project - the Microsoft.Web.Atlas.dll assembly is 1864K! The good part about all this effort is that developers will be able to "ATLAS-Enable" web sites using familiar ASP.NET declarative control syntax and events (or you can get "under the hood" if you want with the API) - which means that the learning curve is pretty easy.

Of course, a lot of that depends on your "frame of reference" -- for example I just read where a coyote was found roaming in Central Park (it was captured). When I mentioned this to a co-worker, he responded "How on earth did a coyote get into Central Park!". My frame of reference being that of a native New Yorker, I quipped, "I guess he came down from the Bronx.".

Fawlty Math Department

EU: "Hey MS, how much is 2+2?"
MS: "4"
EU: "I don't understand."
MS: "2 + 2 = 4"
EU: "I disagree! how much is 2+2?"
MS: "4"...
EU: "What about the documentation you promised? Now how much is 2+2?"
MS: "We will leave no stone unturned to overcome the compliance impasse. 2+2 is 4."

-- Get the picture?


VOIP Heating Up Big-Time

It looks like Microsoft finally figured out how to start using the assets it already has to leverage VOIP and video - Hotmail, and MSN Messenger users.

The company currently serves 205 million MSN instant messenger users and 26 million simultaneous messenger users, as well as 230 million Hotmail e-mail users, but only 9 percent of this online community currently uses VOIP (voice over IP) and video. A Microsoft rep says he believes that the new Windows Live communications services that Microsoft is deploying will allow this number to grow by as much as 20 percent during the next 12 months.

Now 230 million Hotmail users, even if you drop off the 50% or so who never use it, or just use it for the Passport login, is one hell of a lot of potential customer base. The new Windows Live offering will allow users to set up voice calls over the Internet by simply clicking on a contact's name. You can already tell if they are online with MSN Messenger via the green "dot" next to their name.

I think Microsoft is starting to wake up to the fact that other companies (Google, Skype, etc.) are starting to eat their lunch, and if they don't start rocking and rolling, there won't be any lunch left the next time they get hungry....

However, Microsoft still needs to learn to be a lot more nimble in the Internet marketplace if it expects to capture the lion's share of the burgeoning new business opportunities in search and PPC contextual ad sales. This stuff has been around for a long time now, and MS is just now getting to the point where they have started realizing they need to ramp up MSN Search and their new AdCenter product if they ever expect to catch up.

Additionally, Microsoft isn't making friends with developers by continually changing product names. I enjoy working with MS technologies and APIs, but I simply can't keep up with these moving targets. If you want to open up the API to the Windows Live IP phone stuff, I'd love to develop provider components for it. But right now, it looks like MCI and Verizon are the only two players there will ever be.

And you know what? I say, that's not developer-friendly at all.

Just my 2 cents.


What is "Web 2.0"?

"Is sloppiness in speech caused by ignorance or apathy? I don't know and I don't care." -- William Safire

With its allusion to the version numbers that usually designate software upgrades, "Web 2.0" was a trendy way to indicate an "improved form" of the World Wide Web, and the term has been in occasional use for several years. It was eventually popularized by O'Reilly Media and MediaLive International for a conference they hosted after Dale Doughery mentioned it during a brainstorming session. The participants assembled examples — "DoubleClick was Web 1.0; Google AdSense is Web 2.0. Ofoto is Web 1.0; Flickr is Web 2.0" — rather than definitions.

An earlier usage of the phrase Web 2.0 was as a synonym for "Semantic Web", and the two concepts complement each other to some extent.

Web 2.0 has since come to refer to what is described as a second phase of architecture and application development for the World Wide Web. Web 2.0 applications use a combination of techniques devised in the late 1990s, including public web service APIs (from 1998), AJAX (Remote Scripting) (1998), and web syndication (1997). They often allow for mass publishing / sharing (web-based social software). I've already run out of both fingers and toes for counting those. The term may include blogs and wikis. To a large extent Web 2.0 has become a buzzword, and there is no shortage of derisive blog posts and articles about this. I suppose you could consider this another of them.

The problem as I see it with these "quasi standards" buzzwords masquerading as real meaning is that since there are no set standards for what Web 2.0 actually means, implies, or requires, the term can mean radically different things to different people. Many people pushing Web 2.0 talk about well-formed, validated HTML; however, not many production sites actually adhere to this standard. Many people also talk about web sites "degrading gracefully" so that the fundamental features are still useable by people with older browsers. However, the addition of AJAX (another buzzword!) scripting to websites often renders the website completely unusable to anyone browsing with JavaScript turned off, or using an older browser. Many complain that the proliferation of AJAX scripts, along with "reallyreallydumb" webmasters, has increased the instances of "tag soup": websites where <script> tags and other semantically useless tags are thrown about the HTML with little organization in mind, in a way that was more common during the dot-com boom, and something many standards proponents have been trying to move away from.

Many of the ideas of Web 2.0 have been employed on websites that were around well before the term was developed. Amazon.com has allowed users to write reviews and consumer guides since its inception -- a form of self-publishing -- and opened up its API to outside developers in 2002. By Internet standards, that's ancient history. When a website proclaims itself "Web 2.0" for the use of some trivial feature such as blogs or gradient boxes, it is generally more of an attempt at self-promotion than an actual endorsement of the ideas behind Web 2.0. It has been reduced to a marketing buzzword, like 'REVOLUTIONARY', that can mean whatever a marketing person wants it to, with little connection to most of the good ideas that it is supposedly based on. It could also be argued that "Web 2.0" does not represent a new version of World Wide Web at all, and is in fact comprised entirely of "Web 1.0" technologies and concepts. Basically, it's still HTTP, which is by now prehistoric. If I give my Model T a spanking new paint job and hood ornament, it isn't likely to pull my 65 foot boat trailer up the hill any better.

I mean, let's get with the program here -- if I truly have developed something advanced and new, shouldn't I brand it "Web 3.0", or perhaps, "Web 10", just so that people are sure not to get confused?

Other criticism has included the term "a second bubble" stating that there are too many Web 2.0 companies attempting to create the same product with a lack of business models. There is already significant evidence with some recent IPO's and VC$$ deals that we may have already completely forgotten the dot-com bubble of 2000 and are willing, once again, to throw good investment money down the "Internet toilet", at some of these "Web 2.0 vapor-ventures", so to speak. The whole thing just makes me want to press the "Fart button". Is GOOG a good buy at $337? Was it a good buy at $475? I bet a lot of investors are having second thoughts about that purchase. Hey, it's only selling at 67 times earnings, can't you take a joke?

My Advice? If you see "Web 2.0" anywhere, unless there is significant content and value that is immediately visible, accompanied by a mature absence of hype, run the other way as fast as you can.


Q: When is a BUG not a "BUG"?

A: When it's by design.

If you are a denizen of the forums (I have no choice, I help run ours at eggheadcafe.com) --and the newsgroups, you learn a lot from reading posts.. Of 100 posts indignantly claiming to have found "A BUG" in the .NET Framework, there is rarely more than one that can lay claim to have found a legitimate bug, and usually, if they do, it's one that has already been covered 100 times over via newsgroup posts and KB Articles, had they only taken the time to search first.

I say this once again because I just received an unsolicited email from somebody who had posted his newly found "BUG" at the LadyBug site asking me to vote for it! Good God, it was simply a minor variant of the fact that if you import XML into a DataSet either in the designer or via ReadXml and it has repeating nodes with the same name, the DataSet can't parse it because it would create duplicate table names. Same thing with nested relations.

Er, that's not a bug - its a good thing!

The guy even quoted text from a post I had made some time ago with my suggestions, apparently believing that reminding me what I wrote six months ago would support my remembering the rationale to "vote" for his bug submission:

Peter Bromberg [C# MVP] wrote:
> The dataSet is doing its best to infer a schema when reading your Xml
> document, and it's finding two sets of elements with the same name,
> and doesn't know how to handle it.

> Experiment if you can with changing the name of one of the sets of
> elements and the error will go away.
> This is very common when reading Xml that doesn't correspond to the
> expected Schema for a DataSet.
> --Peter

What am I talking, Greek? Doods, if you think you've found "a bug", please do some research first. It's usually a bug of the genus userstupidius.

Real bugs in the .NET Framework are extremely difficult to find, and they usually ARE NOT found by the type of developer who posts "I found a BUG in...." to newsgroups.

This post has been brought to you by the letters B, U and ... G.


IE7 Blocks Adsense and YPN - and an Easy Fix!

I've noticed with IE7 BETA 2, that at least some of the time, IE7 blocks Google adsense and Yahoo Publisher network ads from showing. If you do a search on "IE7 blocks adsense" you will see that I have no shortage of company in the complaint department!

This could, of course, be really problematic as IE7 is going to be in wide use in a matter of months. The bad thing about it is that there is NO USER PROMPT offering the user an opportunity to "Yes, I want to see the ads". Nothing - the ads simply don't show up at all!

However this turns eventually out, there is a very easy fix for this:

The basic problem here is that the tightened (and hopefully, perhaps not quite finalized) security setup in IE7 prevents cross-site loading of javascript. You can put the source site of the javascript into your trusted sites list, but that solution would rely 100% on the actions of the user, which is completely unacceptable.

So what you do instead is download the adsense or YPN javascript file that the typical ad code references, simply deposit it on your webserver, and change your ad code's src property to point to the exact copy that you've stored on your own domain.

Here is a sample that's been fixed this way, with a sample YPN ad on it:


If you have noticed this problem with IE7 BETA 2 and the above page shows an ad when you click the link, then you know that this fix works.

Presto! No more cross-site javascript; you haven't altered their script in any way (so I hope it would not be a TOS violation) and IE7 is as happy as a pig in mud. This solution should probably work with FireFox and other browsers as well, although I haven't seen any comments about FireFox exhibiting this behavior.

I'd be interested in reading some comments from other developers who have run into this issue.

BTW, if you are tired of typing g-o-o-g-l-e to get to your favorite search engine, why not try one of the other domains they own, all of which point to their main site?

Here's a nice short one: http://ghut.org/


Are Patents Too Broad?

In 2003, Eolas won a historical $520 million (plus interest) court case, which established that it owns the patent on self-executing applets on a web page. Despite Microsoft appeals both to the US Patent Office and the Supreme Court the patent has been held to be valid. Now that Microsoft has run out of legal remedies it has no choice but to comply with judgment, and modify Internet Explorer 6 (IE 7.0 already has this built in). Sure there are script-based developer workarounds, but the whole Fargo of the thing is that it's pretty damned ugly.

Essentially what Eolas' patent says is, "No matter how you make it happen, if an applet (very broad definition) starts automatically on a web page, we own the patent on that, and you have to license the technology from us -- that is, IF we decide we like you."

I realize this is an oversimplification, but that really is the essence of this whole deal, in a nutshell. And of course, as we all are well-aware, Eolas isn't the only company winning lawsuits along these lines.

Bottom line is, you can get a patent on a lot of stuff that really shouldn't even be considered patentable. The Patent and Trademark Office simply doesn't have the resources and staff with a level of training to oversee this whole process properly. Basically a bunch of overworked bureaucrats look at your application and if there isn't anything that looks like it came before yours did, well, technology be dammed, you are probably gonna get a patent. Now what's wrong with this? Well, you can get a patent on something because you use the technology in your business and your product and you have a legitimate need to protect your investment. But, you can also get a patent on something that you do not use in your business, and which you may never expect to use - JUST to have the power over somebody that might use something like it later.

Getting patents on whatever you can just so you can do "patent parking" and legally terrorize legitimate businesses has become the new "domain parking for extortion" scheme.

Basically what Microsoft has to do now, since the legal remedies have been exhausted, is make applications that run in a web page "Not work" until the user enables them. Among the applications that will be affected by the change are some of the most widely used programs on the Internet, including the Adobe Reader, Apple QuickTime Player, Macromedia Flash, Microsoft Windows Media Player, Real Networks RealPlayer and the Sun Java Virtual Machine. Can you believe this utter horseshit?

I think I remember something like last week I read that some yo-yo announced he's got a patent on RSS. Gimme a fewkin' BREAK! RSS?

Folks, is this ludicrous, or am I just off base? I think this has just totally gotten out of hand.