4/27/2006

Dotnet Zen: Learning to Wipe Your Own Ass.

"The greatest challenge to any thinker is stating the problem in a way that will allow a solution." -Bertrand Russell.


I try to be patient, really I do. But the "poor little me" pattern just keeps coming up in all these newsgroup posts and forum messages. Let me explain; basically it works like this:

1) Post to a forum or newsgroup. Typical Subject, "Need help, SelectedIndexChanged Event of a combo box".

2) User posts some sample code. First thing you see is that they haven't a clue whats going wrong or where it may be happening. It doesn't look like they've even tried.
(Sometimes they don't even post any sample code; they expect you to be telepathic - I just reply asking them for Jon Skeet's quintessential "Short But Complete" code sample.). I'm a big fan of fellow MVP Skeet's work, he is pedantic to a fault, but that serves a valuable purpose for clarity, and I commend him for it.

3) User usually says something like "Please help" or even "URGENT". (When you see the "URGENT" or "Email me the answer right away", this is usually disingenuous and I feel no remorse about ignoring the post completely at that point).

4) Now you look at their code and ONE THING jumps out at you, usually IMMEDIATELY:

There is no evidence of the keywords TRY CATCH or EXCEPTION anywhere in their code sample.

DOH!

So the response (at least from me, I have seen that others get suckered into this little game and invariably end up going around in circles with the OP):

Dear OP:

You need to show that you have set breakpoints to test your code and that you know how to wire up your methods with Try / Catch Exception blocks so that you can get an idea on your own what may be going wrong.
if you need help on how to do this visit here (url of good resource on the basics).

Now this is the quality approach. It's like putting the old Chinese proverb about "teaching a man to fish" into action. When I was a C# "Baby" (probably around early 2002) I once posted to the MS C# newsgroup that I couldn't override a constructor for a ServicedComponent. It was Tomas Restrepo who responded explaining simply that :

"The problem is not in the override, it's that you maked Construct public, while it is protected in ServicedComponent. Just change the line above to: protected override void Construct(string s) "

The moral of this little history lesson is that I suddenly learned everything I needed to know about how to override a method in a base class and why I needed to pay attention to the base class's access modifier.

The REASON why I learned this lesson, and why Tomas was able to kindly respond so quickly and effortlessly to help me, was that I had learned the basics of how to post a newsgroup question with sufficient information to allow (and encourage) an appropriate answer.


I had already learned to post sufficient information to get a quality response. You can still look at the original thread courtesy of google groups if you like.

Now the moral of this story is very simple although it may be painful to some:

When you gently but firmly teach others how to wipe their own asses, instead of handing it to them on a silver platter, everyone is enriched. The User, because they are being encouraged to discover the ground rules - that at least a modicum of effort and self-sufficiency is requred to get noticed with a problem. You, because you conserve your energy as a potential "guru". And everybody else who reads it, because they get the same message. The Zen Masters are masters because they've been taught to study hard and mightily and to condition themselves to be able to endure pain in the quest of self-knowledge. They pass these teachings on to their disciples, their students who would be Zen Masters.

The Zen student knows better than to ask "Hey, make me a Zen Master, it's urgent, email me the answer right away."

There is a lesson for the user also -- the person who needs the help:
1) Learn good communications skils when you need to post to a forum asking a question. The clearer and more complete your post, the more likely you'll have a good response. Often, if you don't provide sufficient information in your original question, many people won't even bother to respond to tell you that they need more information! And so, you won't get much out of it.
2) You need to take a certain level of responsibility to show that you have at least tried - on your own - to equip yourself with the tools to solve your own problems. In other words, if your ComboBox's SelectedIndexChanged event "doesn't work", but you haven't even bothered to put a Try-Catch block in there to see if the SelectedValue is null, then don't expect sympathy!


Take my advice, be gentle, yet firm, in insisting that others learn to wipe their own asses as you have learned to wipe yours, or you do them a grave disservice.

Political pundits might opine that this is the "difference between Conservatives and Liberals". I don't think the lines are that clear personally, but the message certainly is.




How to Get Rid of the "XXexmodulae.exe" Virus/ Trojan.

This is a particularly nasty mass-mailing worm that not only disables certain antivirus and antimalware software (the very software you would need to delete it) but it also does some VERY NASTY masquerading as Windows System files! The text below is from a Brazilian poster on a French BBS - the only guy I found who got it right! I've edited and numbered it to make it easier to read in English.

Hello, I live in Brazil and I was having the same problem described above, and I found a solution (I´m sorry for posting in english, I can´t write in French, had to use Babelfish do translate your messages above). This was the sequence of actions I used to get rid of these damn files:

1) Check the processes of Windows Task Manager for .exe files with numbers followed by "exmodula" plus a letter, for example: 46exmodulag.exe
As above, this name varies, in my computer I had several different files, some using "exmodulaf" and "exmodulag". End the process.

2) Next, go to your
C:\Documents and Settings\<Username>\Local Settings\Temp\
where "<UserName>" varies according to the username on your computer.
You´ll find several files that follow the format described above. (**exmodula*.exe). Delete them.

3) Now perform a search on your registry for the "exmodula" word you´ll probably find references to it in the
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\
FirewallPolicy\StandardProfile\AuthorizedApplications\List
key.

In this key you´ll find something like this:

C:\DOCUME~1\Rafael\LOCALS~1\Temp\46exmodulag.exe:*:Enabled:Microsoft Update

What this key does is to create a fake entry for Windows Firewall under the name "Windows Update" for each new **exmodula*.exe file it creates. Remove this entry from the registry.

4) Look in C:\WINDOWS\system\ folder if you find the file smss.exe (file responsible for automatic windows updates) running in the C:\WINDOWS\system\ folder, that is wrong.
This file is responsible for generating the **exmodula*.exe files. Delete it!

NOTICE: the smss.exe file running under C:\WINDOWS\system32\ is the real, legal file, do not touch it!

5) Now search your registry for smss.exe and you´ll find references to it under these keys, delete them.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_USERS...\Software\Microsoft\Windows\ShellNoRoam\MUICache

Congratulations, YOU ARE CLEAN.

IIS, ASP.NET and 64-bit performance considerations

Now that 64-bit OS versions and machines to run them are widely available, developers are seeing that the biggest benefit of using the 64-bit platform is its ability to break through the memory addressability limitations of 32-bit platforms and allow applications to utilize much more memory. This can be particularly important for the performance of servers that potentially serve thousands of concurrent users and manipulate large amounts of data and/or potentially cacheable files on disk. This includes database applications (such as SQL Server), mail servers such as Exchange, terminal-server based Windows applications, and with . NET 2.0 64-bit, middle tier . NET applications that can cache or otherwise need to manipulate large amounts of data in-memory on the middle tier, including ASP.NET Apps.

32-bit computing platforms treat physical memory addresses as 32-bit integers. A byte-addressable 32-bit computer can address 4 gigabytes of RAM directly. It’s possible to put more than 4 gigabytes of RAM into an x86 computer and have it recognized by the operating system, but on 32-bit platforms, that memory is still made available to individual applications in much smaller pieces.

Even with a 32-bit OS such as Windows Server 2003 Enterprise Edition running on a computer with 32 gigabytes of RAM, there is still a hard limit on what an individual process or application can use. On Windows, this limit is roughly 2 gigabytes of RAM per running process, no matter how much physical RAM is installed. This is where the 64-bit OS shines, even with 32 bit apps.

A 64-bit computer such as an AMD Opteron-based server or an Intel EM64T-based server can theoretically address 2 64 bytes (16 exabytes) of RAM. As of today, this means the memory addressability is essentially unlimited on 64-bit hardware. Current implementations of Windows Server 2003 64-bit now support up to 1 terabyte of physical memory (Standard Edition supports 32 gigabytes) installed on a 64-bit computer. Of course there are very few mainstream computers today where you would need 1 terabyte of RAM, considering this is 1,000 gigabytes of RAM. With a total virtual address space of 16 terabytes on Windows 64-bit platforms, an individual process on Windows Server 2003 (if it needs it) can now use up to 1 Terabyte of RAM directly, or 500 times more RAM than available to an individual process on 32-bit Windows. And when you look at the various options available to you and how much "bang for the buck" you can get from each of them in terms of performance enhancement, buying more RAM has the best cost to benefit ratio of almost anything.

However, to exploit the additional available RAM, the full software stack must also be 64-bit capable. This means for .NET, the .NET CLR must be 64-bit aware, and for Java, the JVM must be 64-bit aware. With .NET 2.0, Microsoft delivers 64-bit support with .NET for the first time. With a 64-bit OS and a 64-bit runtime, .NET 2.0-based applications can now utilize 500 times more memory for data such as server-based caches.

64-Bit Benefits

According to a recent article on MSDN, the performance benefits seen from the x64 OS have been substantial. Because of the larger virtual memory space available to the IIS worker processes, server performance has improved dramatically. In certain cases the memory usage of application pools that were previously recycling every five minutes leveled off and stopped recycling altogether. Meanwhile, poorly behaving applications that were leaking memory or abusing the ASP.NET cache could be identified. Before the migration, with a 2GB address space it was extremely difficult to differentiate between an application that was leaking and an application that was simply caching as part of its normal behavior.

There are 232 possible combinations that a 32-bit address can take (meaning 4GB worth of addressable space). On the x86 operating system, half of that is allocated for the kernel, and the other half is given to user mode processes such as IIS worker processes. Since the addressing spaces of the user mode processes are independent of each other, each process can reference up to 2GB of memory.

On the x86 platforms, the 3GB switch, which gives 3GB of virtual address space to the user mode processes and only 1GB to the kernel, is a workaround. But the results, according to the writers, were disastrous. Giving the kernel only 1GB just wasn’t enough for the networking stack to keep up on the test servers. Also, in attack scenarios (such as SYN attacks), there wasn’t enough pool memory for TCP/IP to fend off even the smallest attacks.

The x64 architecture changes all of this, even while running 32-bit IIS worker processes. With a 64-bit addressing space, there is a possibility of 264 unique address combinations (16 exabytes). The x64 OS currently uses 43 bits for addressing, giving the kernel 8TB of addressable memory, and leaving the other 8TB for user mode processes.

Since 32-bit processes no longer need to share half the addressing space with the kernel, they are given the full 4GB addressing space to use running under WoW64. This means systems can run with a native 64-bit kernel and 32-bit IIS worker processes that get 4GB of addressing space, instead of 2GB on the x86. That's a big boost in performance even while staying with 32 bit enterprise server - type apps.

Processor utilitzation also saw a dramatic improvement in performance. Because the application pools were no longer recycling, or were at least recycling at a rate in the range of weeks rather than minutes, the performance implications were significant.

The average processor utilization in the MSDN article tests of the x64 server was only about half that of the x86 server (34 percent versus 64 percent). On the x86 server there were noticeable spikes where the CPU was running at 100 percent capacity for a sustained period of time. This was due to one or more app pools recycling because they had run out of virtual memory. However, on the x64 server these spikes didn't occur because the app pools don’t run out of memory.

The impact of this on the rest of the server is huge. Application response times improved and content was delivered to the clients much more quickly.

Bottom line? Going 64-bit is the cheapest and easiest way to get more "bang" out of your applications, especially if you are using .NET.

4/26/2006

IE 7.0 Beta 2 - 64-Bit Nuclear Meltdown? And Firefox Javascript

I guess I'm just a sucker for BETA software. At work, I installed the latest "offishul" Interenet Explorer 7 Beta 2 and it seems to work fine. I especially like the RSS stuff and the tabbed browsing.

So when I got home last night, I said "OK, they finally have a real 64-bit version so let's have fun". Bad decision!


At least on my AMD machine running Windows Server 2003 x64 edition, this puppy is an absolute "NO GO". Just trying to set Toolbar settings and common properties, the windows would freeze up and refuse to close, and I'd have to kill the sucker out of Task Manager. It didn't take me more than about 20 minutes of wasted time to realize I had made a big mistake, and it was "bye - bye, IE 7".

I'm not even going to take the time to put in bug reports on something this bad - I got work to do.

You know, I understand this is BETA software. But at a minimum, there is a certain presumption of basic functionality before you even release it to the public. I guess I'll just wait.


Somebody tell me they are running the 64-bit IE 7.0 on their AMD machine on Windows Server 2003 x64 and its fine, and that I am just an unlucky nerd who got a bad configuration.

N.B. 5/15/2006: After a week to calm down, and a few Registry tweaks, I reinstalled IE 7.0 Beta 2 64 bit and I'm happy to report that she is fine.


This just in - Firefox supports Javascript!


You know, I thought that standards were supposed to be a unifying force, but after struggling with Firefox and javascript trying to make what would seem to be the simplest challenge to work, I've just about given up.

On eggheadcafe.com we have a searchbox on the upper right with a button to "Search Related". The code for it is pretty simple:


<input type=text onkeydown="searchRelated();" id=searchRelatedText
name=searchRelatedText
size="12" maxlength="50"><BR/>
<a href="javascript:searchRelated();"><img src="blah/submit.jpg"
border="0">
<script>
function searchRelated()
{
if(event!==null && event.keyCode!=13 )
{
return;
}
else
{
srch=document.getElementById('searchRelatedText').value;
srch='site:eggheadcafe.com '+srch;
window.open('SeachRelated/SearchRelated.aspx?q='+srch,
null, 'left=500;toolbar=0,scrollbars=1,location=0,statusbar=0,
menubar=0,resizable=1,width=500,height=800');
}
}
</script>



The net effect of the "If(event...) code is that it doesn't matter if you click the Search Button with your mouse or press the ENTER key while you are still in the input textbox, control will fall through to the else block and the search is done. Now this doesn't work with Firefox, (obviously) because it doesn't support "event" - you have to wire up other code, In fact, you have to wire up about 5 different "Tests" to accomodate most of the browsers! But after trying out about half a dozen sample "so called cross-browser" scripts designed to simply catch the "enter key" as input into a TextBox, I give up. Most of them revolve around submitting a form. I'm not using a form here, I'm catching a keypress or keydown event in a textbox and checking to see if the return key was pressed. If so, I consider the entry complete and I open a popup window, passing my adjusted URL into it. Jeesh! The problem is you still have five different browsers doing this their own fyookin' way, and you have to go bonkers writing spaghetti Javascript code to satisfy all of them. And you know what? I can't be bothered with this SHIT!

That's not my only complaint about Firefox, but its one of the biggest. It causes you to go through incredible contortions because of the ultra-strict interpretation of Javascript that's built into it. You can't make cross-site XMLHTTPRequests either. In IE, if the site is in the trusted sites list, you can. But FIrefox? Oh, no! We don't trust you, Mr. Joe Internet User, so we are gonna just cut your balls off on you in advance, just on principle, regardless of what you want to do.

Doesn't make much sense to me. Firefox is really a nice browser, but it's a bitch and a half to get it to do some of the simplest things with plain old script.

N.B. I finally did figure out a way to do it:

<input type=text onkeydown="searchRelated(event);"
id=searchRelatedText
name=searchRelatedText size="12" maxlength="50"><BR/>
<a onclick="javascript:doSearch(event);">
<img src="http://blah/submit.jpg" border="0"></a>
<script>
function searchRelated(e)
{
if (!e) var e = window.event;
if (e.keyCode == 13)
{
doSearch();
}
}
function doSearch()
{
srch=document.getElementById('searchRelatedText').value;
srch='site:eggheadcafe.com '+srch;
window.open('http://theurl/SearchRelated.aspx?q='+srch,
null, 'left=500;toolbar=0,scrollbars=1,
location=0,statusbar=0,
menubar=0,resizable=1,width=500,height=800');
}
</script>







4/21/2006

InDiggNation: Digg, Dugg, DiggF*cked and OCDD...



"Weather forecast for tonight: dark. Continued dark overnight, with widely scattered light by morning." -- George Carlin


Mind you, I like Digg. The whole concept makes a lot of sense - let the popularity of a submitted news item determine it's rank on the news site. I've put stuff in there and its gotten Digged.

Or should that be, It got Dugg? Anyway, I can Digg it. The site itself has a lot of good features (some of the comments on items are hilarious) but it also represents its own "UnDigging" if you will.

The problem is, you have a lot of 20 - something hot -shot script kiddies putting up junk that really isn't newsworthy at all. Here's an example (very recent):



All of the above are really mediocre, mostly uninformative, and for the most part generally represent people's efforts at "mental masturbation" - but they still made it to the front page of Digg. I tell you, this is just not diggnified.

There's also some Digg Fraud going on where people get together and Digg something up to the top in order to encourage traffic which can result in DiggF*cking - the process of creating so much traffic to a site that it is brought down.

Don't get me wrong, traffic to your site is good. But it's not good when a whole week's worth of it is concentrated into a single 20 minute blast filled with mostly curiosity - seekers!

Yes there is good stuff on there - but you still have to filter it out. Judging from the number of comments on some of these entries, I can see that OCDD (Obsessive-Compulsive Digg Disorder) has set in with some of these anonymous internet nerds looking for attention from their top-secret fritos-strewn batcaves in the basement of the science building --whose sole life consists of living in the online world of Digg. Do they work for a living? If so, I wonder if they actually ever get anything done?

Well, that's my take on it. Digg ya later -- I have to go back to Digg.com and see if there's any good new "stuff". Beats washing your hands 100 times a day, anyway.





4/19/2006

Oil, Politics, and You

At this writing, Crude at $71-plus is breaking into new all-time high ground, and you can see it reflected at the gas pump. This is only the beginning - as summer approaches, and demand increases, we could see $4.00 gasoline here in the U.S. One little conflict in the Middle East, and it could get a lot worse than that -- literally overnight.

So think about these facts as you pull up to the gas pump, getting ready to spend $80 or more to fill up that gas-guzzling, atmosphere-polluting SUV that you just love to drive so much. Your "SUV Habit" does double damage:
  1. It sucks up twice as much gasoline as you need to get from point A to point B, putting even more pressure on the demand side of the energy equation. If you car pool and actually have 4 riders in that ugly fat "thing" I could say, "Bully for you" - but 95% of the time all I see in there is you and you alone driving to work in it.

  2. It pumps out twice as much emissions, further polluting the atmosphere and contributing to global warming, which has already started to become a real problem for humankind. Congratulations on the wonderful contribution you are making to society.

Brazil has it figured out; why can't we do it?


In Brazil, 100 percent of all new Brazilian cars are able to run on 100 percent ethanol. Brazilian sugar-cane-fed biorefineries are capable of producing sufficient ethanol to allow the entire fleet, new and old cars alike, to do so. Ethanol costs about half what gasoline costs. It doesn't contribute to global warming. It doesn't produce noxious fumes that pollute the environment, causing smog and making people ill, driving up healthcare costs.

Here in the U.S, we could produce enough switchgrass to biorefine ethanol stocks that could power every car, truck and motorcycle on the road in the United States today - and do it in about 2 years, if we really, really decided we needed to.

Brazil today has ZERO dependence on foreign oil. If oil goes to $100 a barrel, it will hardly affect Brazil's economy at all. Now the U.S. of A., supposedly a superior country with more technical resources, could have done what Brazil started to implement 15 years ago, but it didn't. How come we "just don't get it" over here?

Since its inception, Brazil's ethanol program has displaced imported oil worth $120 billion. This is comparable to a savings of almost $2 trillion for a U.S.-sized economy.

Now let's take a look at what dependence on oil will do to the U.S. economy this summer. Here's a chart of oil vs. inflation:



It's not rocket science folks. Gold is doing the same thing, having recently hit a 25 year high. If oil shoots up to $100 a barrel, even temporarily like it did back in 1979, our economy will come to a screeching halt. Inflation could hit 10% and interest rates will go through the roof. And, all this could happen by late summer, 2006.

Now you take this to your elected representative and ask them why, after 40 years of the lessons of history, we are still so dependent on foreign oil to run our economy. Ask them for answers, not political rhetoric, and ask them to show you a plan. All this won't get any better until we do something about it, and the way to get that done is at the voting booth, by electing enlightened polticians.



Ask your favorite politician why we never had and still do not have a plan to make America completely independent of foreign oil, and yet Brazil seems to have been able to do this gracefully and has a vibrant economy from doing it.

Oil Companies aren't the cause, but they are part of the solution

Don't be so quick to blame the "Big Oil Companies" on the problem. Blame yourself, for not insisting on having elected representatives that are committed to taking appropriate action.Yo! We put men on the moon 35 years ago, and yet we can't seem to solve our energy problems? What a bunch of HORSESHIT! The reason why we haven't solved our energy dependency problems is because we've elected a bunch of Chicken-Shit politicians with no plans and no priorities to run this country.

The first candidate to put energy independence front - and - center on the platform has my vote be they Republican, Democrat, or Illegal Alien!

4/17/2006

ASP.NET 2.0 Providers Source Code and Whitepapers, "Safe" method versions

If you have an interest in both using and extending the existing ASP.NET 2.0 Provider model as I do, then you'll be pleased to find out that the full source code for the ASP.NET built-in providers has been released in a nice Visual Studio.NET buildable solution here.

In addition, Jeff Prosise has some 130 pages of whitepaper info on all this stuff here.

Up until now, there was some spotty information on blogs and gotdotnet.com sample submissions, but this is the first time I've seen everything nicely packaged up "under one roof".

I particularly enjoyed writing custom SQLite Membership and Role Providers, as well as some current work I'm doing on a searchable Profile Provider (e.g., give me all the members who have X, Y and Z). So this is a welcome addition.


This is one part of ASP.NET 2.0 that they got right IMHO.



For reference purposes, here is a link to Scott's original blog post:

Safe Method Versions

Do you ever have some coding issue or requirement that kinda annoys you but you keep going along doing it anyway? I think it would be nice if somebody assembled all this little boogers and put together some sort of utility library for it. I'd sure use it.

I'm talking about things like checking for null values on the QueryString before attempting to use a key. The helper method for that one might be something like this:

public static string SafeGetQueryString(string key)
{
HttpContext ctx = HttpContext.Current;
if(ctx.Request.QueryString["key"}==null) return String.Empty;
return ctx.Request.QueryString["key"];
}


-- any required null or other testing would be performed automatically in the method body. I've seen developers make methods like "SafeParseInt" and "SafeIsMACAddress"... Of course in VB.NET a lot of this stuff is done for you under the hood; that's why there is so much room for abuse. Just leave Option Strict and Option Explicit set to "Off" and "code away, Mamma!". Looky here! Everything's an Object anyway, what the hayle do we need to declare and type 'em fer?

Are you up for this, man? Hi, it's [URGENT]. Please send me the answer right away!

4/14/2006

On IIS 7 Being a Competitive Product with Visual Studio.NET Integration - and WSCF

Of all the Microsoft Tech Gurus whose blogs and articles I regularly read (and there are dozens at this counting) , David Wang is one of my favorites. David's focus is 100% Internet Information Services. He has a succinct way of describing a scenario and providing a detailed response that is both enlightening and refreshing to read. He provides information. He debunks myths. And - he teaches you a lot about IIS that you absolutely cannot find elsewhere.

According to David, MS is planning on doing integration with Visual Studio to provide wizards and code project templates to allow developers to write modules to extend IIS functionality. This includes native code (ISAPI, Global Modules, and Handlers) as well as managed code (Managed Modules and Handlers). He expects this to establish IIS as a legitimate target for developers to enrich web server functionality.

And as Wang explains, it gets better. Not only will you get Visual Studio integration to easily start a project and code templates to help write the extensibility modules, you will even have WiX templates to allow you to quickly compile your extensibility modules and configuration into a MSI package and then deploy it to other machines.

IIS Grows Up in the Marketplace

David says that Microsoft simply has not focused on producing a web server product but rather a platform to support all its other server products. But - that focus is changing with IIS 7.0 with additional modules and this new ability to easily create your own -- like URL Rewriter, Request Forwarder, Virtual Websites, and CustomAuth. We aren't talking about ASP.NET URL Rewriting here - we are talking IIS URL Rewriting.
Wang finishes by opining that it is not that Microsoft cannot do it; it is that he and his group were never directed / mandated to do it.


Apache is already declining in market share according to the latest Netcraft surveys. Let's see what happens when IIS 7 comes on board.


Object-Oriented Contract-First class design for .NET 2.0? Think WSCF

Readers may have caught on that I'm a big proponent of Contract - First - (read the story here to see why).

Christian and Buddhike of ThinkTecture have their WSCF implmentation


  • Design your contract's data, messages and interface

  • Generate code from the contract


  • New in Version 0.6:

  • Full support for Visual Studio 2005

  • Support for .NET Framework 2.0

  • Generation of partial classes

  • Support for Nullable types

  • Support for SOAP 1.2 binding

  • Pascal case conversion is now optional

  • Option for generating old or new async calling code

  • Option for generating explicit order identifiers on particle members

  • Option for generating improved data binding code available

  • Option for generating List types instead of Collections

  • Option for generating the optional element specified flag handling code

  • Improved error handling

  • Improved support for generating code from SSL-hosted WSDLs

  • The ?wsdl feature can be enabled to return the modeled WSDL

  • Users can now resize the WSDL wizard dialog box

  • WSCF windows can now be closed using the ESC key

  • Added a new feature to the command line tools to let it overwrite the existing files


  • 4/11/2006

    Microsoft Office Live Beta debut and NASCAR


    Have you ever noticed that drug dealers and software developers both refer to their clients as "users"....



    What do NASCAR and cached DataSets have in common?

    According to old friend Chris Falter, it's a predilection for race conditions. Or, to use the NASCAR analogy, as the number of cars on the race track increase, the probability of wrecks increases dramatically.


    And now, the Office Live Debut . . .

    http://officelive.microsoft.com/

    I got an invite so I went on and looked around. Looks pretty interesting. Just snagged a domain name for free and started playing around with the web site designer.

    This could be useful for small businesses, Developers could use it as a tool to get in the door if Microsoft supports it right. We'll see what happens.

    The BETA includes:


    1. A company domain name»

    2. A hosted Web site with 30 MB of storage

    3. Five free e-mail accounts with 2 GB of storage each

    4. Basic Web analysis tools




    The Basics package is really just a website deal, indistinguishable from the thousands of others already in the marketplace. Collaboration looks like SharePoint rolled out once again as a shared service. And Essentials is the other two combined, with FrontPage access. It has reporting and other little trinkets thrown in. Yeesh! I have to wonder if Microsoft really believes this offering is going to make a difference in the marketplace? I mean, sure it's easy to set up -- "Website and presence for dummies 101" -- but where's the extensibility? How am I gonna hook it into a Database?


    N.B. - 4/12/2006:
    Well! The first thing I found out is that I can't upload an image from behind a corporate firewall!

    I see the domain is hooked up, peterbromberg.net Maybe when I get more time, I'll do something with it. I can see this might have some
    value for a small business. But I'd like to see more of a hookup for developers so they could "do stuff" for an Office Live client and earn fees.

    Incidentally, if you have more interest in this, I see that Paul Thurrott has a nice writeup on it with a bit more of the history lesson.


    4/04/2006

    Virtual Server 2005 R2 and MONOPPIX= FUN?

    MS just put out Virtual Server 2005 R2 as a free download (right, its free, you don't even need a product key, and it doesn't expire, and hey-- they don't even have that absolutely NASTY "Genuine Windows Some BS" thing on the download page!)

    So I got a copy -- its only 25MB - about the same size as the .NET platform FX.

    Then I downloaded MONOPPIX - that's the KNOPPIX Live Linux CS with MONO pre-installed (Won't catch me messin' around with those nasty RPM's d00d).

    Virtual Server 2005 R2 is very nice. You can boot off an ISO image (as above) on the hard drive, all you have to do is enter it's path. KNOPPIX booted up perfectly the first try, and everything works great.

    The Viewer will remind you of the VNC Client JAVA viewer - it even runs nicely in IE7.

    All is fine, except for one thing, and I doubt it has anything to do with Virtual Server - MonoDevelop, their IDE for MONO, comes up with all the text "unreadable" as if the screen resolution is too small. I couldn't find a way to fix it. Any KNOPPIX Linux geeks out there know how?

    Virtual Server 2005 R2: Price, FREE. Recommended! Here's a direct link to the 32-Bit Installer, hopefully it will enable you to bypass the silly Passport registration pages. By the way, Microsoft? Are you there? You folks need to stop naming all these different things the same: "Setup.exe", OK? Just give them descriptive unique names. Just common sense, guys.

    UPDATE: Mono-Live looks even better - has SharpDevelop

    4/03/2006

    Medical Science Proves Laughter really is "The best medicine"!

    In a paper being presented in an American Physiological Society session at Experimental Biology 2006, Lee S. Berk of Loma Linda University, reports that not only is there real science and psychophysiology, but just the anticipation of the "mirthful laughter" involved in watching your favorite funny movie has some very surprising and significant neuroendocrine/hormone effects.

    You can read the release here.

    Bottom line is, a good belly-laugh improves your overall health and your immune system. It also reduces stress.

    At work, I've always been a big proponent of "having at least one good laugh" every day. Seems like good preventative medicine to me.


    Think about your work environment -- Do your people laugh every day, or is it like boring and miserable, with miserable people? If you aren't happy, you can change it if you want to.

    If you're having trouble, perhaps this old ASCII quote from a 90's era BBS will help:


    ACHTUNG!
    --------
    Das machine is nicht fur gerfingerpoken und mittengrabben.
    Ist easy schnappen der Sprinngwerk, blowenfusen und
    poppencorken mit spitzensparken.
    Ist nicht fur gewerken by das Dummkopfen. Das rubbernecken
    sightseeren keepen hands in das Pockets.
    Relaxen und watch das blinkenlights...