The power of the Web

I have been working on an update of an integration engine that our company has built for a company in Denmark and currently focused on adding Office capabilities (Outlook, Excel …). Work has been going exceptionally well on the core infrastructure and I wrote the outlook connector during stops and plane trips back from Vegas on Saturday. Part of integrating with Office is the COM interop interfaces you have to use. Since the engine is supposed to be generic I wanted to write as little property access code as possible and determined that Reflection would be my best bet for the simplest code to do what is required.

So I rolled up my sleeves and worked away with PropertyInfo to get and set the object properties. To my dismay I was unable to get access to the underlying properties and no amount of casting or whining would work. Unfortunately I did not have internet access to see if anyone had gone to this dark place before me so I did what so many others have done before, Kludged a solution that worked but took way too many lines of code to implement and made me a little sick, but it worked and allowed me to prove out my design.

Well, I just got back to the engine now (3:25 am) and after looking at the code and knowing that it was not the right way to go I “Bing’d” Reflection of a COM object and lo and behold a post by Rick Strahl back in 2004 had the answer to my question.

Thanks Rick, you made my tummy happy and I can now feel more confident that I indeed have implemented the solution in a more elegant way.

Sage SalesLogix 7.5.3 is now available

Hey all you Sage SalesLogix users, guess what. The Sage SalesLogix team has release 7.5.3 update last week. Now is a great time to upgrade to the latest version of fixes and enhancements. We will be doing some upgrades this week and are looking forward to moving customers to the new version.

My Busy mind drop-kicked my desire for Sleep

As happens from time to time my capability to sleep is greatly effected by my active mind. Sometimes I think it a curse that I am very incapable of clearing out all though and just letting go for even 6 or more hours a night. I therefore find myself back in the office pounding away at the keyboard getting caught up from a week away on a family trip to Las Vegas.

With my Tim Hortons coffee in hand and ready to prepare for the days meetings (start in 7 hours) I decided to pause and get a blog written with some of the thoughts that have been churning in my head.

So lets begin the brain dump!

Recently Microsoft announced LightSwitch a rapid application development platform based on the Visual Studio development tool and some of their latest technology stack components (Silverlight, Entity Framework ..). The tool is supposed to target non programmers to create line of business applications. My initial thoughts was that MS was watering down and trying to commoditize the development community where companies we have to work harder to justify their worth in  the development of great solutions. I believe that if it had come from an other vendor this would not have been such a questionable thought as the introduction of a tool such as this would have to compete on a fair and even playing field with the rest of the ecosystem. Microsoft introducing the tool muddy the water and made the decision making process slightly more difficult, or so I thought.

I think more so for me is that through the years I have had many of the same ideas that Microsoft is putting into play now and I failed to act on those decisions for one reason or another.

I was believing that LightSwitch was a technology disrupter at least in the MS development space but I am somewhat less inclined to believe that after spending the evening with the tool.

The fact is the tool is very similar (in my opinion) to other tools in the market (Access for example) when it comes to the generation of a application skeleton. I know that many squash the comparison, but the fact is even though it is sitting the new MS stack, the target audience it is the same, the experience for creating your shell is simpler (it seems). Less properties, less options and the UI is a forced one where you have to download/purchase new skins to get a look and feel that is unique.

Its a nice sandbox and I was able to get in and do enough work to see search and add/edit of a simple entity fairly quickly.

For basic CRUD applications LightSwitch could be a good thing. I can see several places where we at BITtelligent can use it to augment our process to give the customer some extra value add especially around administration processes however I cannot see it being the everyday tool for a development house.

Some of the things I liked from LightSwitch;

1. Easy to get in and start a project

2. Simple Data model development

3. Utilizes Silverlight,

Some of the things I do not like

1. Seemed like the designers were MDI based

On a data model screen, click add a new View and the data model screen seemed to disappear

2. No control on how the UI is composed.

The framework composes the screen based on the controls you select. Every tool that I have worked with allow for precise layout and going back to a tool that does not seems outdated

3. Easy for non-programmer to get complex errors.

For example I can easily add in one of my button’s action event :

MessageBox.Show(“Hello World”);

When invoked this gives a cross thread error. In a non-programmer tool to see such an advanced error (threading) seems to be problematic and still displays the need for good debugging skills which the target audience may or may not have.

4. Constraints.

So this is the big one, since its a sandboxed environment options are limited to what the framework and tooling exposes. Generally all applications will look the same and to truly get a customized look or feel you will either need to obtain skins which I suspect will be a purchase from a 3rd party vendor like Infragistics, DevExpress or that free skins will be made available through the kindness of the community, or alternatively learn how to extend the product to create your own look and feel that I suspect is not targeted at the non-programmer.

Also their is quite the limitation of properties/settings. This could be either a good thing or a bad thing depending on the business need at hand but I have to believe that even MS cannot predict the usage scenarios of all the possible consumers.

5. Reporting, Distribution

I did not see anything in the box to address these items but I suspect if there is nothing there now, MS will address in the future.

Final thoughts

So from a competitive play against the current visual studio product, and the enterprise developers/consultants that work with the toolset it does feel like a threat to me. It lacks the breath/depth that so many applications required and to get the penultimate solution there will be so much more work that the non-developer will not be able to do.

However for small MS based consulting companies having knowledge and skills for utilizing SwitchLight might open up some new opportunities to add value to their current and new customers.

Here at BITtelligent Peter, Cory and Myself will be actively looking at the new toolsets (LightSwitch, MVC3/Razor, WP7) and thinking of ways to make ourselves more available to a broader group of customers and their needs.

SQL 2008 Removal Dialog

while removing SQL2008 off my development machine I noticed the dialog.


Note the icon is the standard .net Win forms Icon. Did that really get through QA. I am wondering if this is a UI design standard and I can spend that much less time prettying up forms. 🙂

Make Sure you Apply your Patches

I work with SalesLogix and support development on the Web Platform. With the introduction of 7.5.2 Sage started to introduce their fixes as web rollups, which consolidated several HF’s into one cohesive package. Each rollup builds upon the last and brings enhancements to the platform in areas such as speed and stability.  Like windows, or Mac or any other critical platform/application SalesLogix benefits from this from these patches being applied. The problem with patches within SalesLogix is there is the possibility that some Business Partner intervention is required, and probably recommended to ensure that the patch was applied correctly and that any of the customizations that have been created have not been overwritten or if required re-tweaked to work with any of the new changes. Given that this level of support is required you may very well hesitant on getting the patches applied but in the long run the costs on not applying the patches may outweigh the cost and effort of keeping them up to date.

Here are some of my recommendations to help mitigate the patch risk and keep things running as efficiently as possible.

1. Have your BP/Development partner have a backup of your latest VFS and a test\development database to work off of

2. Do not share Production with Testing/Development environments

3. Have your BP apply the patches after determining the impact areas and making the required changes. Note this bodes well with #1 if you have advanced customizations as the partner is more prone to have a toolset to solve any integrations issues more effectively instead in a Test/Production Environment.

4. Work off of project Backups. Even though the partner will be working against the bundles supplied by Sage you should expect a full project backup. This will ensure that you get everything that is working and only have to apply one or 2 things to production (.sxb possibly)

Depending on the scope of the HF the effort from the Business Partner will change however by following the steps outline you will be assured that the rollup can be installed and applied into product with a lower risk and a shorter window of downtime.

Currently there are 5 rollups available for 7.5.2. Are you up to date?

– Mark