16 October 2007

Free 411!

Don't you just love technology? I'm just amazed at some of the possibilities we have with technology these days. Of course, I'm most interested when I can:
  1. Save money
  2. Give less (also read take away) money to phone companies.
Point in case has been my conversion to Skype for long distance.
Another little annoyance that's been bugging me lately has been the $0.99 that my T-Mobile has been charging me for 411 service. It's ridiculous to have to pay for that service!
I do have to credit T-Mobile though. It used to be you'd call for a number, usually while mobile and not able to write down the number. Then two days later, you need the same number, you'd have to call again… and pay again. I'd been suggesting for quite some time that they should at least txt you the information as well so you can then later add it to your phone book. Well, at least they've listened on that front and are now sending txt messages of the listings to you after you call it. But you still have to pay for something that should be free.
Well, it seems Google feels the same way. And now you don't have to pay for 411 service anymore! Just simply dial1-800-4664-411 (1-800-GOOG-411) and use the service the same way you would normal 411. You also have the option to get txt message info on the listing. Even better... If you have an internet enabled phone, you can even get mapping direction sent to your phone for the listing… AND IT'S FREE!!!
Now that's what I'm talking about. I've already replaced my 411 speed dial with 1-800-GOOG-411. Heck, I'll use 411 a LOT more now that I don't have to pay for it! ;-)

13 October 2007

Restart Windows AND restore all currently open Internet Explorer windows upon startup

OK, so you know you can configure Windows Explorer to restore all its open windows at their current location if you reboot your system. That's great. We all use that feature. Pity it doesn't do it for Internet Explorer…
OK, so I just LOVE to use Sleep mode and Hibernation on my T-60 laptop. Restarting Outlook, Visual Studio and other apps I use daily is just a painful process which wastes a lot of time. So I just put my laptop into Sleep mode when commuting from home to the office and back. When I need to switch drives, like to my MOSS drive, I would just hibernate my DEV drive.
Of course, there are a couple of reasons to have to restart your system such as:
  1. Installing new apps that require a restart.
  2. Installing Windows Updates.
  3. To clear out the "cobwebs".
It's really painful when you install a new app or updates and it requires a reboot, right when you have half a dozen IE windows open researching something. Restarting and restoring all your IE windows is just painful. First you have to add all the URLs to your Favorites, then reboot, then fire up several new browsers and directing each to one of the favorites and lastly delete the temporary favorites… phew…
Enter CRestart!
OK, so I was in the process of doing one of these major restart efforts when I thought to myself… I wish I could restore IE windows the same way I do Windows Explorer windows on restart.
After thinking about it for a while, I decided to write CRestart to address this need.
CRestart does its job by saving all the URLs of all your open IE browser windows and then restarting your system. Upon startup, it will automatically open a new browser window for each URL previously saved. ;-)
I learned a couple of things in writing CRestart. I will post those lessons in a separate post.
For now, try it out. Remember, NOTHING is guaranteed and I take NO responsibility/liability for any result of usingCRestart.
If you can live with that, download it here. Like it? Hate it? Suggestion? Leave them here.

10 October 2007

How do I – Solve the “Could not create type WebService.Name” error when trying to deploying a web service?

OK, so you wrote a web service and you may even have tested it and everything worked fine. So the you did some "cleanup" and tried to deploy the web service. It compiles and deploys just fine, but when you try to invoke and hit the service you are presented with the following error:
Server Error in '/' Application.
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.Parser Error Message: Could not create type 'WebServices.Candidates'.Source Error:

Line 1: <%@ WebService Language="C#" CodeBehind="Candidates.asmx.cs" Class="WebServices.Candidates" %>

Source File: /Candidates.asmx    Line: 1

So just how do you solve this problem?
Here's my checklist of things to check when having trouble deploying web services:
  1. Check that IIS is using ASP.NET 2.0.
    1. Begin by starting up the Internet Information Services manager.
    2. Expand "Web Sites".
    3. Expand your web site e.g. "Default Web Site".
    4. Locate the Virtual Directory to which the web service was deployed and right click it.
    1. On the popup menu, click "Properties".
    2. On the Properties window, select the "ASP.NET" tab.
    3. Ensure that the APS.NET Version is set to 2.0.x and not 1.1.x.
    4. If it is set to 1.1.x, set it to 2.0.x and retry your web service.
  2. Ensure your Visual Studio build properties are set correctly.
    1. Locate the .asmx file in your Solution Explorer pane and right click it.
    1. On the popup menu, click "Properties".
    2. Ensure that the Build Action is set to "Content".
    1. Locate the code behind (.cs or .vb) file in the Solution Explorer and right click it.
    1. On the popup menu, click "Properties".
    2. Ensure the Build Action is set to "Compile".
    1. If either of these weren't set correctly, make the correction, recompile, redeploy and retest.
  3. Ensure ASP.NET 2.0 is an Allowed web services extension.
    1. Open the IIS Manager.
    2. Expand your computer.
    3. Click the "Web Service Extensions" option.
    4. In the right hand pane, locate the "ASP.NET v2.0.x" entry and ensure that its Status is "Allowed". If it is not allowed, the "Allow" button on the left will be enabled. Click it to change the setting.
    5. If it was not allowed, correct the setting and retry your service.
  4. Check for the WebMethod attribute.
    1. Review your code and ensure that you have the [WebMethod] attribute set for all web methods in the service. This does not mean that all methods have to be web methods, but the ones you are trying to consume should have this attribute in its declaration.
  5. Ensure the .asmx and code behind file match definitions.
    1. Open your code behind (.cs or .vb) file.
    2. Look at the web service declaration at the top.
    1. In our example, ensure that #2 and #3 match. If they don't, correct the problem.
    2. Next note the namespace at #1.
    3. Now open the .asmx file. This can usually be done by double clicking it in the Solution Explorer, but if you're not able to get it to open through the IDE, open Windows Explorer, navigate to the file, right click it and select Open in Visual Studio to work around the problem.
    4. Now look at the code.
    1. Note the value of Class in this case is "WebServices.Candidates". The Class value should be the full namespace value as well as the class name. Given our code behind file's values, in this case, the Class value should have been "Crowe.PartnerNomination.WebServices.Candidates", but instead it is just "WebServices.Candidates". This is a common issue when reworking already written web services into a namespace hierarchy. For some reason the .asmx file does not always reflect the changes made which then causes the error message at the beginning of this post.
    2. Change the Class value, recompile, redeploy and retest.

09 October 2007

What a game, What A Game, WHAT A GAME!!!

If you're a NFL football fan and you did NOT watch last night's game, or even worse, you watched it part way and then went to bed… you missed out! What a game!  Not even Hollywood could have scripted a more spectacular ending than this one!
This game ranks as one of my Top 5 Greatest Games Ever! 
OK, so the Dallas Cowboys rolled into Buffalo to face the Bills with an undefeated 4-0 record. Given the Packers' defeat at the hands of the Bears the night before, the Cowboys was the only undefeated team left in the NFC, joining the AFC's Cheater… er… Patriots and Defending Super Bowl Champion Indianapolis Colts. Almost everyone had this game slated as a win for the Cowboys and was looking forward to next week when the Cowboys would face the Patriots in a "Clash of Undefeateds".
Before the game, former Cowboys Head Coach Bill Parcells also shared with the viewers his 10 Commandments for a QB which he had imparted to Cowboys QB Tony Romo the year before.
The game began with the Cowboys kicking off to the Bills. A decent return gave them good field position, but the Cowboys Defense held strong and forced a punt on 4th and 4. The Bills' Pro Bowl punter came out to punt and the Bills ran a fake punt with the punter taking off for the 1st down! Another 3 downs later, the Cowboys Defense held strong again and forced another punt… this time the Bills punted a beautiful coffin corner punt pinning the Cowboys back at their 2 yard line.
On 1st down the Cowboys ran and lost a yard. On 2nd down they ran again and gained nothing. Its 3rd and 11. The ball is snapped. Romo rolls right and fires down the middle for TE Jason Witten. Witten runs an in route instead of a streak and the Bills safety intercepts the ball and takes it to the house for a touchdown!
7-0 Bills.
Romo, who had only thrown 3 picks all season long, must have been thinking about Coach Parcells' 10 Commandments at this point. One of them asked "If you throw 3 picks, can you go back into the huddle and look your team mates in the face and lead them?"
The Cowboys get the ball again and Romo takes his 2nd pass attempt… INTERCEPTED… AGAIN!!! Romo is now 0 for 2 with 0 TD's and 2 INT's! QB Rating… 0!
The Bills can't get the 1st down and with good field position, they go for it on 4th down to deliver, what the commentators called "the knockout punch". The Dallas Defense comes up huge and make the stop turning the Bills over on downs! This was a huge play for the Cowboys defense who did more than their fair share all night long.
Romo later found Jason Witten in the end zone for the score. The Bills added a FG.
10-7 Bills.
The Cowboys have the ball. They're pinned back at their 11 yard line again. Romo takes the snap. He rolls to his right. He throws… but the DE jumps up and knocks the ball back, catching it on the way down in the end zone for ANOTHER INT TD!
17-7 Bills.
The Cowboys get the ball again and essentially go 3 and out as Romo throws his FOURTH interception of the night! With about 30 seconds left in the half, the Bills attempt a FG from 52 yards out. They miss giving the Cowboys excellent field position. The Cowboys take advantage and move the ball in FG range and rookie Kicker Nick Folk booms through his longest FG of his career… 47 yards.
17-13 Bills.
At half time, Head Coach Wade Philips had Tony Romo X-Rayed to check for the Grossman virus. Romo came up clean.
Given that Romo had thrown 4 picks already, his steel was going to be tested in the 2nd half. The Cowboys begin the 2nd half getting the ball first. They drive down the field and add a FG.
17-16 Bills.
Now the Cowboys are within striking distance. They kickoff to the Bills… and the Bills run the kickoff back 103 yards for the score!
24-16 Bills.
Fast forward to 5 minutes left in the game. The Bills had the ball. It's 3rd down and the rookie QB Edwards rolls left and throws the ball. Why would you throw the ball here? You're up by 8. A FG make the lead 11 which means your opponent has to score TWICE! Well, Cowboys CB Terrence Newman intercepts the ball at the 5 and takes it 70 yards or so before he's tackled. The ball is stripped out, but the Cowboys recover anyway!
Great! I think. Now get the score and the 2 and we're tied… but instead… Romo throws his FIFTH interception of the night. Add the fumble he lost and that makes SIX turnovers for the night… TWICE his season total!
OK, that's it right… game over right?
Time for Big D to step up. They do, forcing a 3 and out getting the ball back for Mr. Pick & Co.
To the Coach's credit, even though he had backup QB Brad Johnson warming up, he never took the junior QB out of the game. He stuck with him and allowed him to work through it.
Tomo then engineers a great drive of 80 yards ending in a Patrick Crayton TD with 20 seconds left in the game!
24-22 Bills.
The Cowboys go for 2. Of course they spend their final timeout planning for it first. That will prove to be critical very soon. The pass to T.O. is incomplete. I can't believe the big, strong T.O. let the CB wrestle that pass away from him.
OK, 20 seconds left… Bills up by 2… Game over right…
But wait, there's more… The ONSIDE KICK! And wouldn't you know it… the Cowboys actually GET IT! I'm going nuts at this point. I've already woken my wife up in my excitement… something I'd pay for later… but this was just too much to bear!
With only 18 seconds or so left on the clock and NO timeouts left, they get a pass to T.O… the officials take way, way, way too long to make the call and in the mean time the clock keeps on ticking… tick… tock… tick… tock… They call it a catch… the Cowboys rush to the line… the snap the ball and Romo spikes it with ONE SECOND LEFT!!!
But NO! The referee says the play was stopped BEFORE the snap! What? You're kidding right? Nope. They replay ref apparently called a stop before the snap and even though the whistle didn't blow in time, the play was pronounced dead. The T.O. catch, which wasn't a catch after all, is overturned and now there's only 13 seconds left on the clock.
The Cowboys take the snap and get a quick 4 yards before getting out of bounds. There is 0:07 left in the game. From here it would be a 61 yard FG attempt. You gotta take one more shot. They do and they get 8 yards before stepping out of bounds with 0:02 left in the game!
Rookie kicker Nick Folk comes out for a game winning, 53 yard FG try.
The snap is good… the hold is good… the kick is up… it's GOOD! COWBOYS WIN! What? Timeout? What?!?
Under the new rule Bills coach Dick Juaron had called timeout just before the snap. The kick is nullified. This trick had already worked twice this season with kickers then missing the FG on the 2nd attempt giving the other team the win.
I'm fuming! What a crappy rule! No matter… just do it again Nicky boy… just do it again…
The 2nd attempt… the snap is good… the hold is good… the kick is up… it's GOOD!!!

SharePoint Remote Event Receivers are DEAD!!!

 Well, the time has finally come.  It was evident when Microsoft started pushing everyone to WebHooks, but this FAQ and related announcement...