|
|
-
If you happen to see this error be concerned, but do not be alarmed... :-)

If you find this error message confusing, it is simply due to the fact that you did not read it with the correct understanding of the "Type universe." You see, the Type universe is, evidently, the collection of all the types and assemblies in the deployment framework. In other words, System.Design.dll could not be found in the target framework for the application.
Why does this matter, and what does this mean?
The Microsoft Visual Studio team decided in VS 2010 to change the default Target framework for application to .NET Framework 4 Client Profile. The intent of this change is reasonable- "to improve the deployment size, time, reliability and overall deployment experience for client application users."

Unfortunately, GrapeCity, along with many ISVs, did not become aware of this change in Visual Studio 2010 behavior until too late. Therefore we have not yet had time to adjust Spread for Windows Forms to work to target the Framework-Client Profile.
The above error occurs when dragging Spread for Windows Forms from the Toolbox to a WindowsForm, and results from the Spread assembly containing designtime classes that have dependecies on classes in System.Design.dll. The System.Design assembly is not included in the Client Profile - so there you have it. We have reasons for including the designtime classes in the Spread assembly, but they are not good enough reasons so we have plans to provide full support for the VS2010 default, Client Profile, behavior by separating Spread for Windows Forms 5 design functionality into a separate assembly. However, until a maintenance release is published to address this issue, the work-around in VS2010 is to change the Target framework to a non-Client Profile Framework.
Good coding!
|
-
Sometimes you know exactly what you're doing, and you know exactly how to do it. Other times you give it your best shot, and hope for good results
When we released Spread for SharePoint v1 we entered a new market with a product that we feel offers considerable benefits to our customers. At the same time, we recognize it as a product that requires guidance from our customers to help us refine it's direction. We have received considerable feedback, and we are working to implement your suggestions. Spread for SharePoint v2 is our first release in this feedback-driven process.
A consistent message we received was that customers want a web part that binds to SQL Data Tables and provides the ability to write changes back to the Data Tables. That feature is the primary feature addition to Spread for SharePoint v2.
When you enter Edit Mode for the web part, the Tool Pane allows you to specify your binding type: SharePoint List or SQL Data Table. For this sample, I will bind to a SQL Data Table. This is achieved by specifying the SQL Server Name and the Database Name. The web part queries the meta data from the SQL Database and populates the Table Name dropdown with the database tables and views that can be used as a binding source.

Once a table or view is selected, the columns are displayed. The page designer can choose which columns to display, the column index (display location) of each column, and whether there should be a totals footer for each column.

If the ability to write back to the SQL Data Tables is desired (full data binding), then the SQL Commands can then be automatically generated. This creates the basic CRUD (Create, Update, Delete) SQL commands that will be used by the web part to keep the database up to date with changes made in Spread for SharePoint. You can modify the contents of the commands to customize the binding experience.

If grouping of the SQL data is desired, this can be performed from the Group By section of the Too lPane. Specifying grouping from the Tool Pane saves the grouping information with the web part serialization so it will persist in shared views. If the page designer also wants to allow for dynamic grouping by the site users, they can enable the "Show Group Bar" checkbox.

When you apply the settings to the web part, the binding is compete. In the following image, I have also performed dynamic grouping by dragging column headers to the Group Bar.

And in this image, I am illustrating how filtering can also be used with grouping. Notice the filter bar at the top is specifying to filter all items where "CustomerID is equal to 'ALFKI'" and the grouping is being performed on the resulting filtered record items. Also notice that the totals footer is updated to include only the filtered records.

We are excited about the new functionality we have added to Spread for SharePoint, and look forward to more customer input and feedback.
Robby Powell
|
-
FarPoint Technologies, and the InputPro for Silverlight team are proud to announce the Preview of our first Silverlight product - a set of Silverlight Input Controls - InputPro for Silverlight. Based the Quality Bands introduced with the Silverlight Toolkit, InputPro for Silverlight is well within the Preview Band for features and quality, and we are now at the point in the production cycle where we can no longer "develop in a bubble" so please let us know what you think. We need your feedback to direct us, and to let us know how these components stack up from functionality and usability perspectives.
We decided to create this set of input controls because we need a sophisticated, highly programmable and customizable, set of input controls to use as celltypes for our upcoming Silverlight spreadsheet component - Spread for Silverlight component that is currently in the design/dev process. We have not yet decided how we are going to deliver InputPro – as a stand-alone product, or as part of a suite, and we have not decided on a price. Any feedback from the dev community would be apprecieated here as well.
We are very excited to officially announce our entry into the Silverlight market, and look forward to your remarks and comments.
|
-
From time to time our pre-sales and tech support teams receive questions on how to take XML messages created by the Spread for BizTalk disassembler and break the single message into individual record item messages - a task that in BizTalk Server lingo is refered to as "debatching."
The Spread for BizTalk disassembler parses incoming spreadsheet data (xls, xlsx, csv, txt) into XML-data as a single BizTalk Message. The first approach I considered was to add an XML disassembler following the Spread for BizTalk disassembler in a single receive pipeline. Good concept, but the logic does not hold water because the XML produced by Spread for BizTalk is typed to a particular schema that is not an envelope schema, and to use the XML disassembler as part of a debatching solution, an envelope schema must be used.
So the next iteration was to create an envelope schema and map the Spread for BizTalk XML to that schema. Using the XML disassembler to crack the envelope was still the approach I wanted to use, so I created another receive pipeline that contains the XML disassembler, and created an orchestration to first map the XML data (message) then invoke the receive pipeline that contains the XML disassembler. Following this, the orchestration simply loops through the output messages.
As in life, and in development, there are many pathways to get from A to B. This is not the only way to solve the this debatch task in BizTalk Server nor is it necessarily the best way, but it does work well, and is easy to follow and maintain.
A big thanks to blog postings from Stephen Thomas http://geekswithblogs.net/sthomas/archive/2005/06/16/44023.aspx Gaurang Desai http://www.codeproject.com/KB/biztalk/BizEnvelop.aspx.
The source code for this sample is attached below as "debatch.zip".
-Robby
|
-
It is a great feeling when you manage a product from concept, through design, development, testing, and the last difficult stages of release!
FarPoint Spread for SharePoint officially released a couple days ago and we are receiving calls from excited customers who are telling us it is exactly what they have been looking for. I couldn't be happier about that!
Let me give you a low-down on the features that Spread for SharePoint provides:
- Bind to SharePoint Lists for full data binding (read/write) experience.
- Integration with SharePoint List View Customizations: column visible, sort, group by, totals, …
- Rich formatting options such as: background color, foreground color, font, border, data alignment, …
- User Dynamic data analysis through the use of conditional formatting and multiple-level filtering.
- Export SharePoint List views to PDF, Excel 97-2003 (XLS), and Excel 2007 XML (XLSX) documents.
- Subscribe web services, external to SharePoint, to SharePoint List Events through the Event Subscription Editor in the Tool Pane. This feature allows SharePoint Lists Events Notifications to be exposed to the outside world for participation in pub-sub scenarios such as ESBs or ISBs. (This is available in the Enterprise Edition only.)
- Extend the Spread for SharePoint web part to create a custom web part to address the needs of a specialized need by taking advantage of the unsealed base class in Spread for SharePoint. (This available in the Enterprise Edition only.)
As you can see from the (*) in the feature list, Spread for SharePoint has been released as two editions: Standard Edition and Enterprise Edition. The Standard Edition is the Spreadsheet web part that binds to SharePoint Lists, and the Enterprise Edition is all of that plus an unsealed base class - for extensibility, and the ability to subscribe web services to SharePoint List events.
I think the functionality of this product is exceptional, but I suppose it is my job to think like that. The spreadsheet capabilities and dynamic data analysis features provide for a very useful SharePoint page component.
However, in my opinion the Event Subscription functionality is the coolest feature offered by this web part. Check out Spread for SharePoint and see what you think!
-Robby
|
-
It's all about Office and Office Business Application (OBA). MS has leveraged Office and exposed the ability for Office to be a first-class application hosting environment. Through Visual Studio Tools for Office (VSTO), Microsoft Office has finally fulfilled the promises of VBA. It is exciting and impressive the amount of Office UI extensibility available for app developers to access. Things like the ability to add application custom content panes (similar to a forms in VS) to office apps. They have also exposed hooks into the UI: Ribbon Bar, Context Menu, … that allow for customization so the resulting Office “hosted” business application are not dumped in, but tightly integrated. The end result looks as much or as little like Office as the app developer desires.
And the Office "Ribbon Bar" is now referred to as "FluentUI." One way to tell if Microsoft is energized about a technology is if the name of that technology changes multiple times. Looks like FluentUI fits that bill.
-Robby
|
-
Yesterday I was informed that the ad we have been running in SD Times for Spread for BizTalk earned the top Reader scores in the categories of Believable and Informative. We are not surprised at our ad being described as believable and informative because that is an assumed requirement for all of our marketing material, but the fact that the readers of SD Times found our ad to be the Most believable and informative is great validation that our marketing assumptions are on a firm foundation.

A special thanks to Jeff Lynch for providing us with the great quote.
-Robby
|
-
The assembler was promised for late 2007. We slipped a bit and the release candidate was released on January 14th - not too bad, I don't think.
The pipeline assembler allows you to utilize XML from your BizTalk application and assemble it into XLS, XLSX or PDF documents that can then be used throughout your enterprise. A picture is worth a thousand words, so I decided to create a video so I did not have to use so many words to describe the suggested usage model for Spread for BizTalk.
Video Overview of Spread for BizTalk, version 2.
Staying consistent with the development theme we have used for prior versions of Spread for Biztalk, the focus for was on simplicity and ease of use. Spread for BizTalk is a simple and elegant solution to the real world issue of integrating Excel documents into your BizTalk Applications. The new release of Spread for BizTalk completes the cycle of complete Excel integration from document consumption to document creation all handled through BizTalk without requiring Microsoft Excel, without using ODBC, and without using any temporary files.
If you are interested in downloading the Release Candidate of the new version of Spread for BizTalk, please send an email to BizTalkTeam@fpoint.com.
Additional information regarding Spread for BizTalk is available at our Spread for BizTalk Resource Center at:
www.FarPointSpread.com/BizTalk.
Take a look at Spread for BizTalk and I think you'll be impressed with the design-time UI and the codeless capabilities of this component.
-Robby
|
-
Day Two: Connection with the Consultants and Integrators
Since we released FarPoint Spread for BizTalk in August 2006 it has been our goal to reach out to SOA/BizTalk Consultants and Integrators (C&I) and have them add FarPoint Spread for BizTalk to their toolbox so they can include the functionality we provide in presentations and proposals they make to their customers. The goal is to create a scenario where everyone wins: the C&I customer wins because they receive the functionality they desire, the C&I wins by dropping FarPoint Spread for BizTalk into their solution and having instant access to a BizTalk Excel disassembler (and Excel, Excel 2007, PDF assembler very soon) with minimal effort. And lastly, FarPoint wins by selling licenses to the C&I customer.
We have had success with this approach, but the BizTalk market has been a difficult place for us due to reasons I discussed yesterday. On Day Two of the conference we met with several C&I's, and every one of them we spoke with was interested in including FarPoint Spread for BizTalk in their toolbox. There were a few who indicated they are definitely interested in FarPoint Spread for BizTalk, have an immediate need, and wanted to know what else we had to offer...
This brings me to a description of our newest product consideration currently named FarPoint Spread for SharePoint - nice segue, huh? Personally, I prefer the name FarPoint Spread for SOA because I believe this name more appropriately defines the capabilities and reach of the product. For FarPoint Spread for SharePoint (SSP) we took our award winning ASP.NET Spreadsheet control, FarPoint Spread for Web Forms (ASP.NET), and created a WebPart that is integrated into MS SharePoint Server 2007. Our initial goal was to create a SharePoint spreadsheet that is bindable to SharePoint lists. We discussed our SSP product concept with our pals at Neudesic to get feedback from the experts. We were encouraged by their excitement, and excited by their suggestion that we add support to SSP to allow it to participate as an Event Driven Architected (EDA) spreadsheet that allows Web services to register with SSP to receive event messages. To achieve EDA in SSP, we added properties to allow Web Services to register with SSP. When the end user, editing the data in a spreadsheet, SSP, through a SharePoint Web site clicks the update button, an event message is generated by SSP and sent to all Web services registered for that particular event. The registered Web services can consume and use the event message information in any way they desire. Neudesic is excited about using SSP as a message provider for their Neuron ESB. When SSP sends an Event Message to a registered Neuron Web service, the Event message data is published to the Neuron ESB as an ESB message. Any Web service that subscribes to the ESB for the particular topic and subject will receive the ESB message. Our industry message for FarPoint Spread for SharePoint is that it is a SharePoint spreadsheet that is bindable to SharePoint lists and participates in pub-sub scenarios by sending event information through its Event Driven Architecture. FarPoint SSP does NOT require MOSS or MS Office.
We have had several folks ask about availability, pricing, and licensing. Unfortunately, at this time, we are currently in alpha with this product and these questions have yet to be addressed. We are on a fact-finding mission to seeking out feedback and guidance from industry experts. Today, we received a good amount of this! Bring on Day Three!
-Robby
|
-
One word to describe this year's conference - busy. If the attendance continues to grow, the SOA Conference will soon have to move to a larger facility than the MS Executive Briefing Center.
The experience we are having this year is considerably different than our experience at the conference last year. Don't get me wrong, last year's conference was good for us. We were new to the SOA market and had a brand new component, FarPoint Spread for BizTalk. We were testing the waters to gauge the SOA community's response. At the conference in 2006 we established several great relationships with the folks from Neudesic, AKN Partners, and several others, and were able to discuss our products with SOA industry professionals who provided us with feedback that validated our product and our efforts. We left last year's conference with ideas for expanded functionality and new products. Since last year's conference we have worked toward several business arrangements with the contacts we made.
Enterprise adoption of a technology is an interesting and dynamic process. I am witnessing this play out at this conference. At last year's conference it was clear to us that the MS SOA initiative had not taken hold in much of the enterprise world. We were approached with questions as vague as, "What do you think about SOA?" and as concrete as "BizTalk Server 2006 is much better than BTS 2004, but we do not have plans to upgrade to BTS 2006 due to our investment." We left the conference pleased, but concerned with the direction and speed of adoption of the technologies.
At this year's conference we are receiving comments like, "We are currently evaluating BizTalk 2006 R2 and SharePoint 2007, and we're here seeing what is available in the market and from the ISV's." Of course, we couldn't be more pleased. The feedback has been encouraging and inquisitive. The excitement level is high, and it appears that enterprise adoption of SOA technologies is growing very well.
-Robby
|
-
A few times I have been asked if FarPoint Spread for BizTalk provides a way to deal with data that is laid out in a non-tabular manner. Not to repeat what I have said in previous posts, but FarPoint Spread for BizTalk parses XLS files into XML. That's what it does. BizTalk provides lots of tools to manipulate and transform XML.
The particular question I received is how can data arranged like:
Name Charlie Brown Address 123 Anystreet Raleigh, NC Phone 555-1212 Name Linus VanPelt Address 55 E West Apex, NC Phone 555-1234
and have it result in XML that looks like:
<users> <user> <name>Charlie</name> <address>123 Anystreet</address> <phone>555-1212</phone> </user> <user> <name>Linus</name> <address>55 E West</address> <phone>555-1234</phone> </user> </users>
The schema created by the FarPoint Spreadsheet Schema Wizard will be used as the source of the map.

I created a target schema to use as the target of the map.

Then I mapped the source schema to the target using the BizTalk Mapper and a few functoids.

The first thing I needed to do was to figure out how to delineate the records. For this test data set I decided to create a new user when a Name is encountered.

To achieve this, the Column0 value is tested to see if it is equal to "Name". If it is, then create a new user. Also, connect the link to the value map so the Column1, value which is the first name, gets mapped to the name field. Since the "Name" equality check is used as the gatekeeper, it also links to the value map that maps the Sheet1_Record record index.

Since the data in the source XML is arranged as name, address, phone with each item existing in a separate record, we need to navigate through the records to correctly map to the target schema. The top Add functoid branch, in the figure above, performs the record index +1 operation. Column0 and the incremented record index are fed into the Index functoid. The results are checked for equality with "Address" and "Phone". If either of those conditions are true, the incremented index is passed through the Value Mapper functoid. The bottom Add functoid branch is exactly the same as the top one except the Add functoid performs record index + 2.

Links are made from Column1 to the Index functoids. Conditionally determined links containing the appropriate record indexes are also linked to the Index functoids.
The result is that the source XML is transformed into the target XML. There are other approaches to solve this in BizTalk, and if anyone has a suggestion on a different or better solution I would like to hear it so I can better be able to respond to questions in the future.
For integrating XLS data into BizTalk, FarPoint Spread for BizTalk provides a clean and simple solution. What to do with the XML after FarPoint Spread for BizTalk parses it is up to you, and by using the tools built into BizTalk you can determine what you want to happen next.
-Robby
|
-
Join us in Toronto!
for the Toronto Chapter
BizTalk User Group (BTUG) Meeting
Date : Tuesday February 27th, 2007
Time : 6:00 p.m. – 9:30 p.m.
Place : Nexient
- 2 Bloor St. West, Suite 800 (8th Floor - Classroom 11)
Cost : Free
Topic : Unlocking XLS Files in a BizTalk Process and
Using RFID with BizTalk Server 2006
To Register for this Event Click Here!
Agenda:
- 6:00 p.m. Pizza and reception6:30 p.m. Toronto Chapter BTUG News/Business
- 6:45 p.m. Presentation: Unlocking XLS Files in a BizTalk Process
- 8:00 p.m. Break
- 8:15 p.m. Presentation: Using RFID with BizTalk Server 2006
Presentations:
Unlocking XLS Files in a BizTalk Process (FarPoint Technologies)
An introduction to FarPoint Spread for BizTalk, a BizTalk pipeline disassembler that takes incoming Excel XLS data streams, and parses them into XML that maps to a schema created at design time in Visual Studio 2005. This presentation includes a demonstration of how to create a schema for an Excel XLS file without doing any coding, and how to receive Excel XLS email attachments into BizTalk orchestrations using Visual Studio 2005, BizTalk Server 2006, and FarPoint Spread for BizTalk.
Speaker: Robby Powell - Product Manager, FarPoint Spread SOA Components.
Using RFID with BizTalk Server 2006
Winson Woo will draw upon his experience in helping Cactus Commerce clients efficiently consume, store, manage and utilize RFID data using Microsoft BizTalk Server to illustrate real-world uses of RFID technologies. He will compare barcoding technologies and infrastructures that bind of product data with RFID data to ensure scalability for more robust implementations as the technology evolves and becomes more mission critical. He will round out the discussion with an overview and value proposition of the Microsoft platform and how it relates to RFID.
Speaker: Winson Woo
Mr. Winson Woo is the Director of Supply Chain Management at Cactus Commerce Inc. In this role, Mr. Woo leverages BizTalk Server and the BizTalk Accelerators including Cactus GDS Accelerator for BizTalk and the BizTalk Accelerator for RosettaNet to help organizations resolve their B2B and E-Commerce challenges. Mr. Woo is both a Microsoft Certified Professional and a 1SYNC-Certified Consultant.
-Robby
|
-
One of the questions I often receive regarding FarPoint Spread for BizTalk is, "How does the component handle "this"?" or "What would the schema look like in "this" scenario?" My gut reaction is to state that FarPoint Spread for BizTalk is an Excel XLS Parser that is designed to work with tabular data in Excel files, but the real answer is that yes, Spread for BizTalk can handle "this", and you tell me what you want the resulting schema to look like.
FarPoint Spread for BizTalk is, indeed, an Excel XLS Parser that disassembles Excel XLS files. The schema that it parses to at runtime is created at design-time using the FarPoint Spreadsheet Schema Wizard. And, yes, the component is designed to work with tabular Excel XLS workbooks. Tabular data is rows or records of data where the data in each cell or a row is based on the definition of the column. FarPoint Spread for BizTalk currently supports one selectable data range on each Excel sheet. What do you do if you receive Excel XLS workbooks that contain multiple data areas per sheet? Or how about the case where a sheet may or may not have multiple data ranges? All of these questions are valid, and none of them are explicitly supported by Spread for BizTalk; however, none of them are unsupported either. Confused yet? Well, the answer goes back to my gut reaction. FarPoint Spread for BizTalk does what it does, and BizTalk provides a variety of tools to allow you to take the XML results from Spread for BizTalk and do some pretty cool things with it.
I was recently sent an Excel XLS file that included a sheet that looked like this:
Account Number:123 Account Name: Company XYZ Posting Date raw cost production cost retail cost 1/2/2007 15 11 50 1/2/2007 4 22 40 1/3/2007 76 22 200 1/5/2007 4 17 40 Account Number:456 Account Name: Company ABC Posting Date raw cost production cost retail cost 1/2/2007 25 34 80 1/2/2007 32 8 60
As you can see, this sheet contains two data areas: one for Company XYZ with Account Number: 123, and another for Company ABC with Account Number: 456. To further complicate matters, the first column contains the Account information, and Posting Date. The schema created by the FarPoint Spreadsheet Schema Wizard for this Excel file contains four columns (Column0-Column3). By default, the records are parsed from the Excel file as one record per row. So the records are:
Account Number: 123 Account Name: Company XYZ Posting Date raw cost production cost retail cost 1/2/2007 15 11 50 . . . Account Number: 456 Account Name: Company ABC Posting Date raw cost production cost retail cost 1/2/2007 25 34 80 . . .
This is clearly NOT the desired output record format, but hey, the Excel file is disassembled into XML that matches a schema. At this point, the power of BizTalk Mapping is a solution to get us where we need to go. The first thing we need to to create a schema to represent what we want. We want to preserve the existing record information for records that make sense
{"1/2/2007", 15, 11, 50} . . . {"1/2/2007", 25, 34, 80} . . .
Except we want to add the account information for each record:
{123, Company XYZ, 1/2/2007, 15, 11, 50} . . . {456, Company ABC, 1/2/2007, 25, 34, 80} . . .
To achieve this, we need to map:
Column0 Column1 Column2 Column3
to:
Account Number Account Name Posting Date Raw Cost Production Cost Retail Cost
We add a map file to our BizTalk application and map the "Cost" elements directly. To handle the conditional nature of the Account Number, Account Name, Production Date we add three Scripting functoids to the map.

All three Scripting functoids are of type "Inline C#". The first functoid handles the Account Number.

If the value in Column0 starts with the string "Account Number:", then set the static variable to the value. Always return the static Account Number value so that it can be used by each record.

If the value in Column0 starts with the string "Account Name:", then set the static variable to the value. Always return the static Account Name value so that it can be used by each record.

If the value in Column0 starts with neither "Account Number" or "Account Name", then return the value and map it to Posting Date.
This sample has illustrated how to map the Spread for BizTalk XML from a complex tabular Excel XLS sheet into a schema that represents the XML data in a format that other pieces of your business process integration solution can consume. There are other ways to achieve this through BizTalk, this is simply the way I chose to illustrate our answer to the question ,"Can FarPoint Spread for BizTalk handle this?"
FarPoint Spread for BizTalk parses Excel XLS tabular data. That's what it does, and all that it does, but it does it very well! ;-)
Can FarPoint Spread for BizTalk handle "this"? You bet.
-Robby
|
-
We realize that the best way for us to succeed in reaching BizTalk customers is through Connected Services and Business Process Consultants and Integrators. With that in mind we have established the FarPoint Spread for BizTalk Consultants and Integrators partnership program. This program has the goal of creating synergy between FarPoint and our partners so that our partners are able to reliably and effortlessly include FarPoint Spread for BizTalk as part of their integration solutions.
We do not desire to have our partners present FarPoint Spread for BizTalk to their clients; but rather, we hope to provide our partners with the ability to include the functionality of the component as part of their feature list when implementing solutions for their clients.
Spread for BizTalk is a tool that our partners can use in their implementations that will save them time in implementation and deliver integration benefits and productivity gains to their customers. We are dedicated to the success of the features we deliver with Spread for BizTalk, and we are dedicated to providing our partners with a comprehensive understanding of the component. We currently provide, and promise to continue to provide excellent technical support and training to all of our partners as we realize that the success of our partners results in our success. As an added incentive we offer pricing discounts on Spread for BizTalk to our partners.
Contact petew@FarPointSpread.com for more information about the program and how you can become a Partner. Also, if you have any questions about Spread for BizTalk, please refer to our Spread for BizTalk Resource Center.
-Robby
|
-
I recently gave a webcast on FarPoint Spread for BizTalk entitled, "Unlock Your Excel XLS Data with Spread for BizTalk." The webcast is part of the Microsoft BizTalk Server Technical Brown Bag Webcast series. We have just been provided with a link to the recording of the presentation so please feel free to check it out.
Erik Leaseburg, the guy in charge of this webcast series, has indicated to us that our presentation was one of the larger in attendance. A big thanks out to all of you who attended and I hope everyone finds the webcast to be helpful and informative.
As always, if you have any questions or comments, please feel free to contact us via blog comments, forum postings or emails.
Thanks,
-Robby
|
|
|
|