No hacks required. This is an official, supported operation directly from Microsoft.To extend the grace period another 30 days, simply start a command prompt as Administrator, and issue this command:
slmgr -rearmReboot for the change to take effect, and voila, you have 30 more days. You can only extend three times, so the total grace period for a Vista evaluation is 120 days. You do, however, need to be careful that you've installed the correct edition of Vista. At the end of that 120 day grace period, you'll have to pony up a license fee for the edition of Vista you've installed.

The simpler something is to do for developers, the more developers that will pickup the skills to do it. We have reached a point I believe in which it has become incredibly simple for the majority of web programmers to quickly design complex AJAX features for pages quickly and easily.
AJAX has been relatively difficult for most web developers to create. Either you need to learn a totally new language to have good support like Ruby on Rails which really is a whole framework in and of itself or you need to know how to program in JavaScript as well as whatever backend coding you do. Finding an advanced JavaScript coder that is also skilled with the backend coding that is required to implement AJAX features if often difficult if nearly impossible for most companies to find.
But with the release of Microsoft’s AJAX toolset yesterday, a programmer working on a web application now doesn’t need to know any JavaScript in order to get the AJAX features working quickly in their existing applications. What this means is that in the coming months, many websites that don’t had the budgets to do R&D into AJAX like Google, Yahoo and Microsoft have will now be able to easily and quickly upgrade their existing ASP.NET applications to use many new AJAX technologies without having to hire AJAX experts.
As a result of this ease of use, Microsoft’s investment in AJAX may have been the best technology investment they have made in a while. In order to use Microsoft’s AJAX libraries, the web application must run on IIS using ASP.NET pages. IIS has to run on a Windows machine and as a result, developers are going to want to use Microsoft’s ASP.NET technologies which in turn are going to sell more and more of their Windows Server machines.
At this point from what I’ve seen, no other web development framework offers the level of AJAX support that ASP.NET now offers and none of them probably will for at least six months while they try to catch up to it’s features. While most frameworks do offer some good but basic level of support for simple AJAX page features, almost none offer the number of features that the new Microsoft AJAX Control Toolkit offers. The result of using these new tools is clean code that lacks massive amounts of messy JavaScript to do the types of features which used to take pages of code which can now be accomplished in just a couple lines of code with the Microsoft AJAX tools. This is highly appealing to developers building large and small websites.
In the coming years, if Microsoft includes a tighter integration of their AJAX solutions into their ASP.NET web solutions, this could be as big of an advancement as HTML was to websites.


A smart software developer knows that there's no point in writing code if it's code that nobody will see, code that nobody will use, code that nobody will ultimately benefit from. Why build a permanently vacant house?A smart software developer realizes that their job is far more than writing code and shipping it; their job is to build software that people will actually want to use. That encompasses coding, sure, but it also includes a whole host of holistic, non-coding activities that are critical to the overall success of the software. Things like documentation, interaction design, cultivating user community, all the way up to the product vision itself. If you get that stuff wrong, it won't matter what kind of code you've written.
If, like Rich Skrenta, you want to work on software that people want to use, realize that it's part of your job to make that software worth using.
But if you don't have good code, the rest is all for nothing.
This is a website. A website. A mere tool!
But is it?
Flickr has mojo. They have alot of it. In fact, the site oozes it…but it isn’t really the layout or much of anything to do with the programming…that’s just a part of it. It’s everything that goes into it. When I started to use Flickr in early 2005, I could feel the “soul” of the site instantly.
IIS will read the default document list and check file for file if the document exists in the physical directory of your site or vdir. IIS executes the document as soon as it finds the first match. You can imagine that this is pretty expensive. In the above case, supposing default.htm is the only default document that exists in your sites root directory, IIS would check five times until it finds default.htm. And this happens for every request!


Over the last few years web-developers have written many articles about CSS and developed many useful techniques, which can save you a lot of time - of course, if you are able to find them in time. Below you’ll find a list of techniques we , as web-architects, really couldn’t live without. They are essential and they indeed make our life easier. Let’s take a look at 53 CSS-based techniques you should always have ready to hand if you develop web-sites.
3. CSS Tabs
Read the rest....
I have seen this asked a couple of times in the newsgroups hence this post. A simple way of refreshing an UpdatePanel using JavaScript is to add a HiddenField to the page, change its value using JS and then have the HiddenField raise a postback event...
The Internet Explorer Developer Toolbar provides several features for exploring and understanding Web pages. These features enable you to:
- Explore and modify the document object model (DOM) of a Web page.
- Locate and select specific elements on a Web page through a variety of techniques.
- Selectively disable Internet Explorer settings.
- View HTML object class names, ID's, and details such as link paths, tab index values, and access keys.
- Outline tables, table cells, images, or selected tags.
- Validate HTML, CSS, WAI, and RSS Web feed links.
- Display image dimensions, file sizes, path information, and alternate (ALT) text.
- Immediately resize the browser window to a new resolution.
- Selectively clear the browser cache and saved cookies. Choose from all objects or those associated with a given domain.
- Choose direct links to W3C specification references, the Internet Explorer team weblog (blog), and other resources.
- Display a fully featured design ruler to help accurately align and measure objects on your pages.
- Find the style rules used to set specific style values on an element.
- View the formatted and syntax colored source of HTML and CSS.
The Developer Toolbar can be pinned to the Internet Explorer browser window or floated separately.
This Beta 3 version of the toolbar contains functionality and stability enhancements over previous versions, including:
- Style Tracer: Right mouse click on a style value for an element and select Style Tracer to find the style rule that is effecting that value.
- CSS Selector Matches: View a report of all style rules set and how many times they are used on the current page.
- View Source: View the formatted and syntax colored source of the original page, currently rendered page, element or element with the styles that are effecting it.
Microsoft released a 6,000 page standard for their new Office XML format, also known as OOXML. From what I’ve read about the process to get it approved, it’s going to take about six months and that’s rushed. So the standard which they are releasing in their software will be approved months after their product actually ships.
And now get this! The standard has some problems with it that I think should have been fixed before it was released to the approval process. One example is the year 1900 and leap years as O'Reily writes on his blog. Can this actually get through the approval process? I’m curious what happens if it doesn’t make it through the approval process? Will Microsoft modify any of it in order to get it to comply with the requirements for approval? What would that mean for the versions of Office they have already released to the market?
There is a good summary of what some of the issues with it are right now here.
On the leap year issue, I think this was also something the Joel on Software worked on at Microsoft as a manager on Excel. He even met with Bill Gates on the topic and it was the hardest question Bill Gates could ask Joel. It's actually a pretty entertaining read.
MyMicroISV has some great tips today on getting people to test your software beta. I experienced some issues with this when I was developing File Phantom during it’s beta period but I found many of my beta testers in my circle of friends and online contacts. This isn't always the best way to find beta testers though because friends and family aren't always the target market for the product you may be building. It could have been for File Phantom so I was glad they were testing it and I received a lot of really good feedback from those that were able to beta test.
Be sure that if someone does beta test your software and finds a bug that's good, make sure that when you finally release the product to at least give them a free copy of your software because hopefully they'll tell others about what you've built and will also beta test it again later.My favorite point that he makes is the following.
Make getting the beta as painless as possible. That means no registration form, no required email, no hoops to jump through. Your beta is competing for attention against a thousand others. Beta testers are doing you a huge favor - you owe them, not the other way around.
A while back Mads Kristensen released a pretty handy tool that I’ve been using for tracking the uptime of my web servers and he wrote a great entry today on his blog about localized ASP.NET applications and how they format numbers.
The number two thousand decimal one two five is written differently in the various cultures. Here are some examples
1000,125 (European)
Imagine that you have to parse XML files wherein the number format is European and you do it from an ASP.NET application with the culture set to en-US. The result of the parsing would be 1000125 – the whole number without decimals. But if the current culture was da-DK the result would be the expected one with three decimals....
1000.125 (American)
A while back I wrote a C# class that did fairly quick and easy encryption using the Rijndael method. It has two static functions that take a few parameters for the file to encrypt and at the end, I rename the newly created encrypted file to the name of the original file. The problem with this though is that the way I do it renames the file by first calling File.Replace() and then calling File.Delete() which deletes the temporary file that’s being created. On a large file, this can take a really long time to do. If this needs to happen to 30 files, it’s going to be very noticeable that there is a delay every time this needs to happen.
The solution is the use FileInfo.MoveTo() function which is much faster than File.Replace(). Make sure that the file name doesn’t already exist in the directory though.
Lately I’ve been using Data Tier Generator a lot for a new web application that I’ve been building that I’ll probably be releasing in the next few days but it had some problems handling ASP.NET membership database schema’s as well as GUID support issues. I got in touch with Adrian Anttila who wrote it and he was able to fix all of the issues that I’d found very quickly and so I’d like to bring attention to the new version of Data Tier Generator that Adrian has posted on SourceForge. The new version is version 4.2.

There are a lot of sites online that have 24 hour, highly discounted sales of only a select amount of products that are often overstocked at other stores but there are very few successful software type sites that do the same thing but Bits Du Jour is one of the successful ones as it manages to attract a unique collection of software that it offers at a huge discount mainly from independent software developers.
My own software that I’ve been writing and selling online called File Phantom will be one of the featured products on Bits Du Jour on Monday, January 22nd. It will be selling for only 40% of the normal price which equates to $15.98. I also offer a 30 day free trial of the software at the File Phantom website so I suggest that you check out the software if you’re thinking of purchasing it on Monday. Normally File Phantom’s price is $39.95 so I think this is a really good deal.
I’m continuing development on the next version of File Phantom that has improved folder support, hotkey hiding and a whole new set of features but anyone that owns the current version will receive the new version for free. I’m hoping to release the next version around late February but it could be sooner.
I will try to report on how the sale on Bits Du Jour went when it completes as well.
WSDL stands for Web Services Description Language that is an XML language for describing web services. Although you could technically read it by eye and figure out what it’s trying to tell you, it’s not worth the effort. These documents are meant to be read by programs and figured out.
But you’re probably wondering, “Do I have a WSDL?” Actually, you do and you probably didn’t even realize it. For every web service that ASP.NET creates, it also generates the WSDL for you as well. Actually, it’s generated on the fly but that doesn’t really matter to you the programmer as long as it’s there when you need it. If you want to view the WSDL for a web service, type in the address to the web service and then follow that with “?WSDL” which will call the WSDL document. Below is an example of what this looks like.

Using this WSDL document, we’ll use a program that will generate C# code that will allow us to programmatically call C# objects in order to interact with the web services. After that, we’ll compile it into a DLL for our consumption.
First we need to locate the program called WSDL.exe which is a command line executable file from Microsoft. It typically comes with .NET but you can also download it from here.
http://www.epcc.ed.ac.uk/~ogsanet/wsdl/wsdl.exe
So I saved my WSDL file into the folder C:\webservices
I then opened up the command prompt in Windows and I typed in “wsdl http://localhost/Webservices/WebService.asmx?WSDL” and then hit enter.

Now notice the C# file that was created. This file contains all of the code we need to access the web service using only C# by just calling a single object.

It is a C# source code file with all of the code necessary to only have to call the function that is the web service. It’s going to be a global namespace though because we didn’t specify what the namespace should be for the C# file that was generated so in order to specify the namespace, the wsdl command line should look like this.
“wsdl /n:LinewaveWebServices http://localhost/Webservices/Service.asmx?WSDL”
So the namespace for the new C# web service access object is LinewaveWebServices.
Lets also compile this into a DLL while we’re at it. In order to do that, we need to call the .NET compiler. Depending on your version of .NET that you have installed, this isn’t going to be the same path probably but for me, the command looks like this.
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
csc /t:library /out:C:\webservices\Services.dll C:\webservices\Service.cs
We need to make sure we’re in the directory that has the csc.exe program and once there, we can compile the C# code file and the /out: parameter determines where the output DLL will go which in this case is the origin of the C# file.
I’ve created a bat file to do all of this for me though so that anytime I make an update to my web service, the bat file only needs to be called and it generates my code files and compiles them. So my bat file looks like this.
cd C:\webservices
wsdl /n:LinewaveWebServices http://localhost/Webservices/Service.asmx?WSDL
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
csc /t:library /out:C:\webservices\Services.dll C:\webservices\Service.cs
Now all that’s left for us to do is to drop that new DLL into our web project as a reference and start using the objects it created. You won’t have to worry about SOAP, XML or any of those things if you’re generating all of the code for your web service this way. All you need to do is just program into the objects like you would any other C# object but the only difference being these are hitting remote locations.
Pretty simple, huh?
At some point you’re going to find it useful to return a few different values at a time. The best way to do this is to actually create an object that will contain all the values that you will need to return and then pass that back as the return value.

For example, in the screenshot above, I’ve created a small class that initializes it’s public variables and then returns that newly created object. Once we look at the resultant XML, it will be clear what happened.
Picture
And then when we test the web service, the following XML is returned. Notice that the XML node names correspond to the names of the variables in the object that was returned.

But next, we’re going to look at how to actually use all of this XML data. Please, please, please don’t just create XML parsers. You need to be code generating and Microsoft has made generating code for web services incredibly easy if you’re using one of their .NET technologies. If you’re not, I have no idea what you do then but let’s assume we’re not in that predicament.
That HelloWorld example was good and all but it didn’t have any parameters. All that we need to do in order to add a parameter to our web service is add a parameter to the HelloWorld function. I’ve also changed it to return that same parameter as the response.

Now go and view the web service like we did before. You’ll notice that on the page with the “Invoke” button, it now also has a textbox for the string. You can type in your name into this textbox and when the “Invoke” is clicked, it will return the name like my code shows it should do.
With the parameters for a web service, you can add as many parameters as you need like you would any other function. If your parameters are primitives (ie. String, int…), you can use the test tools for the web service but if the parameters are your own custom objects or even objects like DateTime, the test tools won’t work. If you need to pass a DateTime object though, don’t convert it into a String just so that you can test it. It’s better to just pass the DateTime object.
Here is an example of what it would look like with just a string as the parameter like we've setup above.
With what we have now, this web service will actually work. You could right click the asmx file and click the “View in Browser” option and you’d get an interesting looking page with links that describe what the web service does and any functions it offers.
By default when we created the web service, the web service has a HelloWorld function that doesn’t take any parameters and just returns a string. This function is a useful way to check to make sure that you’re web service is actually working so you can view this in the browser and just make sure that it works. When the browser opens with the definition page of your web service, HelloWorld will be the first link on the page. Click the link. This will then give another page with a ton of XML and SOAP statements but near the top of the page, there should also be an “Invoke” button. The “Invoke” button will only appear if the web service is running locally. If you’re running this web service on a remote server, you won’t see the invoke button for security reasons because it probably wouldn’t be a good idea to expose this functionality to the outside world.
On the page with the invoke button, clicking the “Invoke” button will actually call the HelloWorld web service that you created and it will then return the result of it. If you have a simple web service that you’ve created, this is a great way to test it.
If you’ve added parameters to your web service that are primitives (ex. String, int…), you will be prompted to enter those in as well but since we’re using the default HelloWorld that doesn’t have any parameters, we don’t need to worry about those.

The result of the web service will be an XML return statement. You’ll notice that the return string is encapsulated in an XML node. The result of a web service is always XML but the hard part about web services is handling all the different XML return statements that can be generated. We’ll deal with that when we let a very cool tool generate all the code we’ll need for interfacing with the web services.
First thing to do is in Visual Studio, you’ll need to actually create a web service file. With ASP.NET, these are of the file type asmx. You could create a blank file and rename it with the asmx extension but you’ll need to add some additional text to the file for the web service to work and so the simplest way to get your web service working quickly is to right click the project you have opened in Visual Studio and click the “Add New Item” option.
A selection box will appear. Select the “Web Service” item and name your web service that you’re creating. It may be useful to know that the web service file you created can actually contain multiple functions so all of the services that you’ll provide could actually go under inside of one asmx file. You’ll see how that works shortly.
Now that we’ve added an asmx web services file, you’ll notice that by default Visual Studio opens the code behind file. Also note the location of this code behind file. It was place in the App_Code folder but the asmx file itself was placed wherever you originally created the file. The code behind file that you’re probably looking at right now ends with a .cs. You will actually build all of the web services from the .cs file and not from the .asmx file.
The asmx file and cs file are your new web service file that you’ve just created. You can right click on the file and click the “View in Browser” and you’ll see a page appear in your browser showing the web service definition page where all of the functions inside of your new web service will be listed out. This web service definition page is useful when viewing information on your web service while developing and for testing which we will cover next.

This will be a series of posts beginning with this one on how to quickly build and consume web services in C# and ASP.NET. If you’ve been reading online much over the last few years on technology, there has been a lot of talk about web services and the technologies can be quite confusing but after doing a lot of work in them, I’m going to present the simplest, fastest ways that I’ve come up with for building, testing and consuming web services that you will probably ever see. It’s easy to get lost in all of the complexities of web services but they really aren’t that bad and 99% of the hard stuff you shouldn’t ever need to look at anyways. It always seems that websites are always trying to show you the hard stuff though.
Why am I writing this?Web services, SOAP, XML, HTTP requests and everything else you need to build and consume a web service at face value seem a little bit complex. Actually, when I first looked at programming for web services a couple years ago, it was quite intimidating. But recently I’ve had to pick up using web services again for a web application that I’ve been building with a large number of web services that need to be exposed and as a result, I’ve had to look further at how to quickly use the web services both in generating them and consuming them.
This is the simplest, fastest way that I’ve come up with for creating web services, generating code for my web services and consuming web services. This is a series of posts that will be broken into a few different parts but should be a good primer on how web services work.
Here are the topics I plan to cover with my posts.
Subscribe to
Posts [Atom]