Wednesday, August 29, 2007

Service Unavailable when deploying an ASMX Service

I deployed an ASMX service to a newly configured machine.
When I open the ASMX, I get the dreaded Service Unavailable error.



looking at the system log, I see this entry:
Event Type: Error
Event Source: DCOM
Event Category: None
Event ID: 10016
Date: 8/29/2007
Time: 8:35:35 AM
User: NT AUTHORITY\NETWORK SERVICE
Computer: CONTOSOQABTS
Description:
The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID
{A9E69610-B80D-11D0-B9B9-00A0C922E750}
to the user NT AUTHORITY\NETWORK SERVICE SID (S-1-5-20). This security permission can be modified using the Component Services administrative tool.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
all of the IIS settings seems fine. When I set the DefaultAppPool to the administrator account, I get this other error:
Event Type: Warning
Event Source: W3SVC
Event Category: None
Event ID: 1057
Date: 8/29/2007
Time: 9:14:43 AM
User: N/A
Computer: TAMSQABIZTALK
Description:
The identity of application pool 'DefaultAppPool' is invalid, so the World Wide Web Publishing Service can not create a worker process to serve the application pool. Therefore, the application pool has been disabled.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Then Dan found this article on MSDN that seems to solve this issue. Basically, you need to add the account that the application pool is running under to the IIS_WPG [IIS Worker Process Group].

Saturday, August 18, 2007

Resetting a BRE policy that has been deployed

During the development and testing of Business Rules Engine policies, you will find yourself having to modify a policy that has already been published and deployed. You can go directly to the SQL server and run this command to reset those policies.


    1 USE BizTalkRuleEngineDb
    2 go
    3 
    4 DECLARE @RuleSetID int
    5 
    6 SELECT @RuleSetID = nRuleSetID
    7 FROM RE_Ruleset
    8 WHERE strName IN ( 'LoanApproval', 'LoanNotification')
    9 AND nMajor=1 AND nMinor=0
   10 
   11 UPDATE RE_Ruleset
   12 SET nStatus = 0
   13 WHERE nRuleSetID = @RuleSetID
   14 
   15 DELETE FROM re_deployment_config WHERE nRuleSetID = @RuleSetID
   16 DELETE FROM re_tracking_ID WHERE nRuleSetID = @RuleSetID



To reset a vocabulary that has been published, you will run this other command:



    1 USE BizTalkRuleEngineDb
    2 go
    3 
    4 DECLARE @nVocabularyID int
    5 SELECT @nVocabularyID = nVocabularyID
    6 FROM re_vocabulary
    7 WHERE strName = 'Contoso.ValidStates'
    8 AND nMajor=1 AND nMinor=0
    9 
   10 UPDATE re_vocabulary
   11 SET nStatus = 0
   12 WHERE nVocabularyID = @nVocabularyID



There will be times, that a particular policy, after you have reset its status on the BRE database, it does not go and clear up from cache. If this is the case, then you will need to stop/start the BRE service:


    1 NET STOP RuleEngineUpdateService
    2 NET START RuleEngineUpdateService

note: [The WROX Professional Biztalk Server 2006 book explained this concept]

Thursday, August 16, 2007

DebugView on Dual Monitors

Dealing with dual monitors sometimes leave some programs on the secondary window. One of the utilities that I use daily for all of my BizTalk development is DebugView.

Since I constantly move from dual monitors (dock station) to a single monitor (laptop display), sometimes I forget to close the DebugView program on my primary monitor. Of course, this means that when I am demo something, I can't get to my DebugView program. It is really frustrating at times, since once you close the application, it saves the coordinates of where the application was last open. arghhhh.... I wish there was an option to turn this off.

Anyways, if you can't find your DebugView on your main window, open the regedit command and go to this hive:

Computer\HKEY_CURRENT_USER\Software\Sysinternals\DbgView

and remove the Settings entry.

Now start DebugView, and it will be back to the center of the screen.

Tuesday, August 14, 2007

SQL Server Database Publishing Wizard

I keep losing this url, so I am keeping a reference in here.

http://www.codeplex.com/sqlhost


this is the link to download it:

SQL Server Database Publishing Wizard 1.1

Monday, August 13, 2007

How to Publish an ODX on a machine without BTS

Recently I got this question from a client and even thought the answer is no, it is still very confusing when wadding through all of the documentation.

This is the question: Can I deploy/host an orchestration as a web service to a machine that does not have BizTalk Server installed on it?

If you look at the BizTalk documentation, the answer seems a little bit deceiving:


They indicated that there is no Biztalk needed. However, once you keep reading more, it mentioned that you need to have a reverse proxy setup for this setup to work.

Ok, so what if you try deploying the orchestration as a web service, using the Web Services Publishing wizard? Here is the answer:

I took one of the samples from the SDK: C:\Program Files (x86)\Microsoft BizTalk Server 2006\SDK\Samples\Orchestrations\ExposeWebService

I make sure it worked in the localhost. Then I went and published to an Windows 2003 Server that was setup as an application server only [no Biztalk installed]. The web publishing wizard did not report any errors and it completed deploying the service.

Once I tried calling this service, this is what I got:



The error message clearly states: Could not load file or assembly 'microsoft.biztalk.webservices.Serverproxy, .... '. So it is looking for this assembly: Microsoft.BizTalk.WebServices.ServerProxy.dll. This seems obvious that you cannot just copy the missing assembly over to this server without breaking some EULA's ;)

Tuesday, August 07, 2007

HAT Debugging on demmand

In my quest to optimize the resources being used in my laptop, I have been very picky about what services are needed to get my task done. I have a script to turn on/off all of the services that I need. Today I try debugging an orchestration, and I was not getting any information at all on the Health and Activity Tracking (HAT). As it turn out, I had not started this service: BizTalk Server Application Service.

All of my Orchestrations were working fine without this service. Hummm... I know now if I need to run the HAT, then I can turn this feature on/off. And the best thing, is that it when you start up this service, it will pickup all of the instances that have been ran. NICE... ;)

FYI, the service name is BTSSvc$BizTalkServerApplication. I have set its startup type to be manual, and then I have this batch script to turn it on/off:

net start BTSSvc$BizTalkServerApplication
net stop BTSSvc$BizTalkServerApplication

BTW, don't forget to add your login account to the Biztalk Server Administrators group, or you won't be able to attach to the Orchestration in Debugging mode.


Quick Solutions, Inc.



I have been working with Quick Solutions for over a year now, and all I can say is WHOAH.! The people in here are just amazing, down to earth. We are not just another employee, we are owners.! (literally). QSI is big, yet it is still small enough that you can always run into management and they know your name.

Which great power, comes great responsibility (hummm. I can copyright that one...;) One of the great things that QSI (Quick Solutions,Inc.) has is that is likes to take care of his *owners*. In this post-internet era, there are not that many companies that offer perks to their employees.

QSI, has lots of perks. One of the most valuable one is that we hired very talented people, and we are always passionate about technology. We do grok talks on different topics, Tech-nights, we have a very powerful mentoring program, we are always active with the developer community, etc.

The other perks, include things like a week at a Condo in Florida (Sanibel Island), Maid Cleaning services, Cash bonuses, Family outings, etc. Not to mention the open-accounting system, in which every week we get reports on how the company as a whole is doing financially. And not just reports, but actual numbers.! This builds confidence and a sense of ownership.

What a great company to work for.!!!

BTW, we are always looking for passionate people about technology to come and join us. We currently have several positions open, so if you would like to be not just on the cutting edge, but on the BLEEDING edge, drop us a line.

Monday, July 23, 2007

Publish Biztalk Orchestration as a Web Service in Vista

Trying to get a Biztalk 2006 Orchestration to be published on Vista, I have encounter a couple of small gotchas . First step is to read the article on ASPAlliance: http://aspalliance.com/1031_TipTrick_Using_IIS7_on_Vista_with_VS_2005. This will get your Visual Studio ready to publish to the localhost. So finally I was able to publish my orchestration to the localhost. However, I could not get them to be rendered.

This is the error I was getting on the Application Event Log:
The Messaging Engine failed to register the adapter for "SOAP" for the receive location "/EDS/BRE_Application_Elegibility_SoapEligibilityPort.asmx". Please verify that the receive location exists, and that the isolated adapter runs under an account that has access to the BizTalk databases.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
And this is the error I was getting back after the call to the Web Service Soap Error:
System.Web.Services.Protocols.SoapException: Internal SOAP Processing Failure
To get over this, open IIS Manager and configure the proper Application pool credentials.



Then under the Process Model category, add the correct credentials.



Now you should be able to access the orchestration exposed as a web service.

Monday, July 16, 2007

Microsoft Biztalk 2003 Certification

I open my mail this saturday, and I finally got the promised new credentials from Microsoft. The certificate says that I am a Microsoft Certified Technology Specialist BizTalk 2003: Custom Applications.!!!



Oh yeah. Now I can say with confidence that I am a MCTS in a Microsoft product that does not exists.!!!

And of course the most famous signature in the world.!! Bill Gates....



I feel like special Ed: I've got mail, yeah, yeah....



Friday, July 13, 2007

SWIFT Accelerator v.2.3 not working on Vista - Part 2

I guess that there was a reason I attended the Technical Training on the SWIFT Accelerator for Biztalk. Technically speaking, the SWIFT Accelerator does not work under Vista, because it requires WSS (Windows Sharepoint Services) 2.0 with SP-2.



However, in my rush to try to view how the accelerator work, I downloaded the Message Pack and not the Accelerator installation. The accelerator is a separate component that you must pay for (it is licensed on a per CPU basis).

The Message Pack are just updates to the Schemas and Infopath forms that are version specific. Microsoft release these updates to go alongside the new versions from SWIFT.

Getting trained by the SWIFT guys themselves was very informative.! From their perspective, their organization has not have the level of success that they have in other countries of the world. I believe that they mentioned something in the neighborhood of over 200+ countries associated with the SWIFT.

If you want to get familiar with the SWIFT and its Accelerator in Biztalk 2006, check out these 2 webcast on the MSDN:
  1. Using the Biztalk Accelerator for SWIFT (Level 200) - (30minutes)
  2. Inside the BizTalk Accelerator for SWIFT (Level 300) - (1.5hrs)
Something I got from the training is that Microsoft has invested quite a lot of effort and time getting this accelerator working the way it is. It is quite amazing at all of the functionality you get right out of the box after you installed it. All of the BRE and the Infopath forms are just great.

Once you install the SWIFT Accelerator in Vista, you get all of the messages, samples, and documentation. However, you won't get MRSR InfoPath forms. Also, you wont get the Message Repair and Reconciliation modules.

Just as an FYI, these are the SWIFT messages you will get when installing the Accelerator:
  • GPA and FIN System Messages
  • Customer Payments Cheques
  • Financial Institutions Transfers
  • Money Market Derivatives
  • Collection Cash Letters
  • Security Markets
  • Treasury Markets
  • Document Credits Guarantees
  • Travelers Cheques
  • Cash Management Customer Status.
There is tons of information on the SDK. I specifically like how they put the BRE inside the pipelines so that they can apply Rules to both incoming/outgoing messages.



I hope in the future I will have an opportunity to work with this Accelerator. It seems so robust and fits perfectly to solve the problem at hand.

Tuesday, July 10, 2007

SWIFT Accelerator v.2.3 not working on Vista




This week I am taking a SWIFT (Society for the Worldwide Interbank Financial Telecommunication) training course sponsored by the Microsoft Virtual TS program. I am trying to install the BizTalk Accelerator for SWIFT 2006 v2.3 Message Pack on my Vista machine.

Trying to install this latest version does not work, I get this message:
Platform Prerequisites Missing
Based on the components you've selected to install, you must first install the following platform prerequisites. Please cancel this installation, install the prerequisites, and rerun the Microsoft BizTalk Accelerator for SWIFT 2006 Message Pack Installation Wizard to continue.

- BizTalk Accelerator for SWIFT 2.3 + Service Pack 1
So I proceeded to download the BizTalk Accelerator for SWIFT v2.3 Service Pack 1. Running the setup, give me this other error:
Microsoft Biztalk Accelerator for SWIFT 2.3 Rollup not found or this package does not contain compatible patch.
Digging a little deeper into this error, I found out this on the log entry:
[6:38:02 AM Info] Product code: {2CBEA167-9DDA-48D7-8F15-467082C3DE8D}
[6:38:02 AM Info] Product name: Microsoft BizTalk Accelerator for SWIFT 2006 Message Pack
[6:38:02 AM Info] Product PIDSKU: Q15-00180
[6:38:02 AM Info] Product Code (MPC): 76835
[6:38:02 AM Info] OEMID:
[6:38:02 AM Info] Product is not already installed.
[6:38:02 AM Info] Successfully opened Msi package: C:\Downloads\Biztalk\SWIFt\A4SWIFT2006MessagePack2-3\A4SWIFT2006MessagePack2-3\Msi\Microsoft BizTalk Accelerator for SWIFT 2006 Message Pack.MSI
[6:38:02 AM Info] Raw module path: c:\temp\EBZ40425.tmp\Setup.exe
[6:38:02 AM Info] Universal module path: c:\temp\EBZ40425.tmp\Setup.exe
[6:38:38 AM Info] Detecting platform component: Setup runtime files
[6:38:38 AM Info] The minimum required version is: 2.1
[6:38:38 AM Info] The currently installed version is: 0.0
[6:38:38 AM Info] Component is not installed.
[6:38:38 AM Info] Detecting platform component: BizTalk Server 2004 Service Pack 1
[6:38:38 AM Info] The minimum required version is: 3.0.6070.0
[6:38:38 AM Info] The currently installed version is: 3.5.1602.0
[6:38:38 AM Info] Component already installed.
[6:38:38 AM Info] Detecting platform component: BizTalk Accelerator for SWIFT 2.3 + Service Pack 1
[6:38:38 AM Info] Component is not installed.
[6:38:38 AM Info] Required platform components: BizTalk Accelerator for SWIFT 2.3 + Service Pack 1
[6:39:36 AM Info] User cancelled setup.
Humm... Does it means I have to have the BizTalk Accelerator for SWIFT v2.1 2006 Message Pack before installing the v.2.3? I try installing the SWIFT Accelerator v.2.1, and this is what I get:
Platform Prerequisites Missing

Based on the components you've selected to install, you must first install the following platform prerequisites. Please cancel this installation, install the prerequisites, and rerun the Microsoft BizTalk Accelerator for SWIFT 2006 Message Pack Installation Wizard to continue.

- BizTalk Accelerator for SWIFT 2.1 + Service Pack 1
Now, this is getting complicated. Looking at the log file I find the same message as before:
[6:48:17 AM Info] Product code: {2CBEA167-9DDA-48D7-8F15-467082C3DE8D}
[6:48:17 AM Info] Product name: Microsoft BizTalk Accelerator for SWIFT 2006 Message Pack
[6:48:17 AM Info] Product PIDSKU: Q15-00180
[6:48:17 AM Info] Product Code (MPC): 76835
[6:48:17 AM Info] OEMID:
[6:48:17 AM Info] Product is not already installed.
[6:48:17 AM Info] Successfully opened Msi package: C:\Downloads\Biztalk\SWIFt\A4SWIFT2006MessagePack2-1\A4SWIFT2006MessagePack2-1\Msi\Microsoft BizTalk Accelerator for SWIFT 2006 Message Pack.MSI
[6:48:17 AM Info] Raw module path: c:\temp\EBZ42439.tmp\Setup.exe
[6:48:17 AM Info] Universal module path: c:\temp\EBZ42439.tmp\Setup.exe
[6:48:31 AM Info] Detecting platform component: Setup runtime files
[6:48:31 AM Info] The minimum required version is: 2.1
[6:48:31 AM Info] The currently installed version is: 0.0
[6:48:31 AM Info] Component is not installed.
[6:48:31 AM Info] Detecting platform component: BizTalk Server 2004 Service Pack 1
[6:48:31 AM Info] The minimum required version is: 3.0.6070.0
[6:48:31 AM Info] The currently installed version is: 3.5.1602.0
[6:48:31 AM Info] Component already installed.
[6:48:31 AM Info] Detecting platform component: BizTalk Accelerator for SWIFT 2.1 + Service Pack 1
[6:48:31 AM Info] Component is not installed.
[6:48:31 AM Info] Required platform components: BizTalk Accelerator for SWIFT 2.1 + Service Pack 1
[6:49:10 AM Info] User cancelled setup.

Nice. Circular references.!!. So apparently it wont install on my Vista machine. There is some hard coded dependency that wont allow this installation to continue. It looks like it is a setup dependency and not a BizTalk dependency.

I guess I have to get back to using my Windows 2003 Virtual PC...

Thursday, June 28, 2007

Biztalk 2006 Functoids not working on Vista

Trying to create a spyke on a Biztalk Map, I encountered this weird error.

Somehow, when you run Biztalk 2006 under Vista, the functoids do not get the correct XPath parameters. For instance, dragging a connection from the source schema into a functoid, should put the relative XPath for that element:


This is the correct behavior. Now if I tried to do the exact same thing in my Vista environment running Biztalk 2006, when I drag a connection from the source schema to the functoid I get a connection.

However, double-clicking the functoid shows that there is no XPath information on it.



Of interest is 2 things that are happening right now:
1. The functoid icon does not display the correct link:



2. Now, while the functoid is in this *connected* state, if you try to delete the functoid without deleting the link first, it crashes Visual Studio....!

It seems from the newsgroups that the only way to get this working under Vista is to put the link on the functoid. Then save and close the map. Then re-open the map. Now the links will be there and the functoid will work as expected. (visual clues and input parameters xpath are now visible.)

Tuesday, June 26, 2007

Exam 70-631: WSS 3.0 Configuring - Study Guide

I have passed the 70-631 test.! Now I am the proud owner of a new MCTS:
Microsoft Certified Technology Specialist: Windows SharePoint Services 3.0, Configuring
To prepare for the exam, I have used the Preparation Guide for Exam 70-631 from the Microsoft site.
  • Deploy Windows Sharepoint Services 3.0 (WSS)
  • Monitor Windows Sharepoint Services
  • Configure Network Infrastructure for Windows Sharepoint Services
  • Managed Customization
  • Administer Windows Sharepoint Services
  • Configure Security for Windows Sharepoint Services
I will say that this guide is very close to the test. I think each skill being measured had almost a corresponding question on the test.

One thing that came handy for me was the Help file that comes with Sharepoint Services. This is where you can find it: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\Help\1033\PSCONFIG.CHM.

The product team apparently did not spend enough time putting this together. They took the information and made it into a CHM file. No contents, no navigation, no search. But still, it has some good background information.

BTW, hit the BACKSPACE when you want to navigate back on this CHM.



I will recommend to go through this document at least once before taking the test.

Friday, June 22, 2007

Web Service Studio: GotDotNet vs Codeplex

I have been using this tool for a LONG, LONG time, and everytime I have a hard time trying to find the download for it. So I am putting in here GotDotNet: .Net WebService Studio. Coincidentally, there is another version of this tool on Codeplex. It is called CodePlex: Web Service Studio Express. So I have decided to give it a try and compare it against the old version.

Technically, they are both trying to do the same thing: Help you debug Web Services. For instance, if you have a web service that expects a non-primitive type, you can't use the IIS testing.

This is the Web Service Application I'm going to use to compare both applications:

    1 using System.Web.Services;
    2 
    3 [WebService(Namespace = "http://Blog.Demo.WebServiceStudio.v1")]
    4 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    5 public class StudioSpyke : WebService
    6 {
    7     public class Customer
    8     {
    9         private string _FirstName;
   10         private string _LastName;
   11         private int _CustID;
   12 
   13         public string FirstName
   14         {
   15             get { return _FirstName; }
   16             set { _FirstName = value; }
   17         }
   18         public string LastName
   19         {
   20             get { return _LastName; }
   21             set { _LastName = value; }
   22         }
   23 
   24         public int CustID
   25         {
   26             get { return _CustID; }
   27             set { _CustID = value; }
   28         }
   29     }
   30     [WebMethod(Description = "Testing Web Studio")]
   31     public string HelloUser(Customer inC)
   32     {
   33         return string.Format("Hello [{0} {1}] your ID is [{2}]..!", inC.FirstName, inC.LastName,inC.CustID );
   34     }
   35 }

if you try debugging this Service, this is what you will get:
The test form is only available for methods with primitive types as parameters


This is where the power of this application comes into play.

GotDotNet Version:
Using the Web Service Studio original version is no sweat.!. You will get the WSDL, and then it figures out the parameters and the type of parameters. It then allows you to enter the values foreach of the Customer object and it will dynamically invoke this method:



Once you hit the Invoke button, it executes the method and returns the result back.





Codeplex Version:
After compiling the source code, I was very dissappointed with the functionality of this tool. The interface seems nice, but it does not do ANYTHING...! Besides invoking the WSDL and give the user a list of methods.



and then the instructions are in Italian (I think...).

In conclusion, stick with the old version for now. :D

Thursday, June 14, 2007

Outlook 2007 is not responding in Vista

Yesterday, my windows update pick up a lot of updates to be performed to my Vista machine. Being the good MS citizen, I say yes, go ahead. After the reboot (of course there is a reboot.!) my Outlook 2007 keep freezing up on me.



Looking through all of the updates, I've found that one of the updates was the
http://support.microsoft.com/kb/933493, which tries to fix some of the performance issues in outlook 2007.

This update is related to this other KB article: http://support.microsoft.com/kb/932086/ that states that the size of the PST file might affect performance... hummm...



My outlook.pst file is 131MB. Googling around found a couple of post that directed me to rename some files from the upgrade/import from Outlook 2003 to 2007.

Shut down Outlook 2007, then I renamed the following files:
"C:\Users\awing\AppData\Local\Microsoft\Outlook\extend.dat" [to extend.old]
"C:\Users\awing\AppData\Local\Microsoft\FORMS\FRMCACHE.dat" [to frmCache.old]
Open Outlook 2007 back, and now it seems to be working fine again. I have not experienced any more Not Responding hang ups.

oh well.

Tuesday, June 12, 2007

Broken Window Paradigm...


Sometimes we forget the human factor. As a professional I have dealt with people from many layers above me (specially me, I am the bottom feeder in a fish scale). Recently I have encountered the Broken Window Paradigm., A living, real-life broken window..!!

Perhaps you are used to seeing the broken window and keep reminding yourself that one of these days this would all magically go away. Then the days turn into weeks, weeks turn into months, months turn into years. Next thing you know, you have been living with this broken window for so many years that you don't realize it is broken, you just take it for granted.

Then comes new people. They see this broken window and inquire about it. What do you say? Don't worry, I will deal with it and fix it. Then you developed rules to which you try to prevent anyone from looking into this window. To you perhaps this is just another way of life, to the new people, this is shocking behavior, some might even call it un-professional, un-responsible, un-heard of, etc, etc....

When small rules are disregarded, other things start happening, and they will happen at a very high speed. When it becomes intolerable, then it might get to the point that you would just move and start over, rather than getting a new window.

Perhaps, you are attached to this broken window for so long, that you start bonding with it and don't want to replace it. Sentimental value? As a rule of thumb, a window is cheaper to replace than replacing the whole wall, or for that matter the whole house. So why living with a broken window?

Am I the only one that has not drink from the well?

Monday, June 11, 2007

PhotoSynth....!!!!

I must admit, I like to see new Technology all of the time, however, after seen this demo, I was completely blown away.

First watch the video at TED [Technology, Entertainment, Design] Conference. Then head to the Photosynch site and hit the Try the Tech Preview button.



After clicking on the pictures and be blown away by the fluidness of the application, don't forget you can zoom in/out, and drag the picture around as well.!!

They explain how they put 2 separate pictures together in here:




I can't wait until Microsoft Research Labs release more collections, or allow a person to put his/her pictures into the collection.

One word to describe this technology: AWESOME...!!!

Sunday, June 10, 2007

Outlook 2007 Error

My laptop ran out of battery juice last night. This morning, when I reboot it and try to access my email this is the dreaded message I got:

Cannot open your default e-mail folders. Errors have been detected in the file c:\Users\awing\AppData\Local\Microsoft\Outlook\Outlook.pst. Quit Outlook and all mail-enabled applications, and then use the inbox repair tool (Scanpst.exe) to diagnose and repair errors in the file. For more information about the Inbox repair tool, see Help.

Yikes.!!!

I haven't backup my PST file since I installed Vista x64. Fearing the worst, I followed the instructions and found the ScanPST.exe utility. BTW, this utility can be found at "C:\Program Files (x86)\Microsoft Office\Office12\SCANPST.EXE"



When I ran it, this is what it found:



After hitting the the details button, hoping that the pain will go away, I see this other message:
Internal errors were found in this file. They must be repaired for this file to work correctly.

Ok. So crossing my fingers and trusting that this will fix my email I hit the repair button. The process goes through several steps: checking for consistency, looking for lost data, checking Folder and Items, etc.

Finally, it ended with a Repair complete.



YEAH.... My outlook is back.! Thanks Microsoft.. My only concern is that there might have been some email lost in the repair. Oh well, if I don't reply to your email this week, you at least know why... ;)

Tuesday, June 05, 2007

WSS 2.0 upgrade to WSS 3.0 Gotchas

To complement my first publication on ASPAlliance, I have decided to start posting gotchas that I have encountered during the upgrade migration from WSS 2.0 to WSS 3.0 to MOSS. Read my article at http://aspalliance.com/articleviewer.aspx?aId=1280 It is about using Biztalk 2006 with Windows Sharepoint Services 3.0. Dont forget to rate it if you like it. ;)

WSS 3.0 seems to be a lot more robust and a lot more strict in general.

Gotcha "1" or '1'
In WSS 2.0 you can add the following Processing Instructions (PI) to your assignment shape in a Biztalk orchestration:

    3 <?mso-infoPathSolution PIVersion='0.9.0.0' href='http://evo/Forms/template.xsn'?>
    4 <?mso-application progid='InfoPath.Document'?>
    5 <?mso-infoPath-file-attachment-present?>


However, after upgrading to WSS 3.0, these set of PI's are no longer valid. The file will show up on your sharepoint site as an XML document, but the ICON wont be associated with an Infopath application (i.e. Legacy_WSS_2.xml)



So all you have to do is to put double quotes around the PI's for WSS 3.0 to recognize the document as a valid Infopath type (i.e. Converted_WSS_3.xml)

    3 <?mso-infoPathSolution PIVersion="1.0.0.0" href="http://evo/Forms/template.xsn"?>
    4 <?mso-application progid="InfoPath.Document"?>
    5 <?mso-infoPath-file-attachment-present?>

Notice how the icon reflects the association. If you try opening the file named Legacy_WSS_2 file, this is what you will get:



So if you are dynamically putting the PI in an Infopath, make sure to put escape chars around the double quotes as I have explained in my article.

Sunday, June 03, 2007

Volunteering = Priceless



It's been a grueling 7 weeks. My son was initially talking to some of his classmates about him learning how to write computer games. Talking to one of the moms (Lisa L.), she suggested that maybe I could offer to teach the same to some of the kids at school. Well, to make the story short, I agreed to give it a try. After going through all of the pre-requisites to become a volunteer (Protecting God's childrens seminar, finger printing, etc.) I was finally slated to start teaching kids how to write computer games.

I have chosen Kids Programming Language for its ease of use and fun approach to programming. In the beginning, discussing with Mrs. Frecker (Computer Teacher) about the target audience, we decided to open it to students from the 4th to the 8th grade on a first-come-first serve basis. So we open it to the first 35 kids that sign up (there are 35 computers in the computer lab). To my surprise, we had over 20+ signed up by the end of the first day after the invitation flier went out...!!

This was an after school activity so all of the logistic were worked out by the wonderful Mrs. Frecker and the help of Ms. Taylor. I got the list of kids and the spread of ages was very large. Using this information, I came out with a temptative schedule that would try to fit all of them, and at the same time get the concept across.

The schedule was:
  1. Get familiar with KPL interface (Hello world..!)
  2. Get familiar with KPL.
  3. If-then-else
  4. While Loop
  5. Sprite animation
  6. 2-player mode interaction
  7. Interacting with background

How to introduce KPL to kids? Well KPL's interface is just like VStudio 2005.



It is all structured in one single file. All programs start from the MAIN routine. It even has intellisense.!


The assignments that I gave the students were nothing more that scavenger hunts. I modified the original games and added new functionality. I then proceed to delete some of the code and have the students follow instructions to find where the missing code was, and to type the code back in.



The purpose for this approach, was that they would get familiar with moving around the KPL interface and typing code. Fortunately KPL is not case sensitive. However, kids very soon discovered that spaces and "_" are not the same. ;D


They (Morrison Schwartz) did an excellence job at making KPL very simple to write games. Once you pass the intellisense and the the VB-like syntax, then loading a sprite and animating it, is just as easy.

Explaining the concept of multiple frames in a single sprite



To get this sprite to animate, this is the code needed:



Handling User input is very straight forward:

As you can see, there are already constants defined.


Sprite intersections and IF-THEN-ELSE logic. To explain the IF-THEN concept, I've used a very useful system function called SpritesIntersect. This function takes on the name of 2 sprites and return True/False if they are touching at any point. This function makes it very easy to explain graphics collision without getting into all of the calculations behind. The code that I used to explain this logic was:



it was not very hard to see their faces *clicking* right away with this concept.!


Lessons Learned:
  1. Kids can't type that fast: To this end, by week 5, I start dividing the labs into 2 parts. One that was mandatory, and a *bonus* section. The mandatory was for them to learn the main focus I was trying to convey. The Bonus section was for those advanced enough that wanted to get some more functionality.
  2. Keeping kids attention is hard.! I discovered very soon, that some of the kids did not wanted to do the labs. Instead they just wanted to go on their own and change the program and the sprites by themselves. This was probably the most difficult part to handle. Specially, since I had a wide range of ages in the class. So I spent a couple of hours every night prior to the class, customizing some of the games that came with KPL. For instance, the racing cars. I had modified it in such a way, that after you typed in your assigment, there will be a *cheat* code that will allow your car to be driven at 3x the speed of the other cars. So while you could play the original racing car, there was an incentive to do the lab, so that you can get the extra capabilities.

In average, I have spent close to 3hrs every night for the past 7 weeks just to prepare the labs and the concepts. However, at the end of week 4 my hard work was finally rewarded. While waiting for some of the students to ask for assistance in finishing the lab. We saw a couple of students from the 4th grade making changes to some of the KPL original games. It was just awesome to see them moving around the program with confidence. Initially, they were afraid of changing anything. However, by now they are changing the sounds, colors, words, sprites, sizes, scales, etc.

Hours spent volunteering programming classes: 7.0 hrs.
Hours spent becoming a volunteer: 6hrs
Hours preparing for classes: 20+ hrs.
Time spent discussing how to write a computer game with 10-to-14-year-olds = priceless...