You suck as a Business Partner

Harsh title I know but do I have your attention?

I have noticed that there is a level of negativity that exists around what a Sage SalesLogix Business partner should or should not know. It bothers me when this kind of discussion ensues because its generally targeted as some arbitrary feature/API method and in my opinion misses the mark substantially. First of all determining the capabilities of any services company based on the obscure is just wrong and usually is not an indicator of their capability to deliver.

There are just so many moving parts today that it is important to be able to filter out the important from the white noise. That being said there is a need for solid foundation skills as our collective customer base requires more for their budget dollars. The ability to transition from platform to integration development, to know and have a strong understanding of the collective technologies in any work plan and to provide strong and practical support moving forward. The ability to just get it done is one that should not be overlooked and be embraced and I suspect from an consulting point of view there is going to be more of this kind of work in the future and less in the process driven requirements development up front. We see this in agile but it really make’s sense in a CRM consulting world.

Take an inventory of your in-house skills and figure out if you are ready to move forward.

  • What development languages can you support (C#, VB.net, Java). VB6 does not cut it anymore. Databases ?
  • SQL, Oracle. Pattens, Library development .. can you provide solutions based on well known patterns, are you building up the next generation libraries to offer your customers the best bang for your buck.
  • 3rd partly libraries .. are you familiar with some of the 1st tier UI libraries, can you offer your customers better experiences to increase user adoption rates.
  • New technologies, are you familiar with/or played with web services, RIA applications, Share Point, WF, WPF, SilverLight, ORM (NHibernate or Other).
  • Understand Change Control, Unit Testing, Modularizing the code. This is an important thing moving forward. Being able to write the code in such a way that it can be tested (automated is preferred). It can be versioned and managed from a team stance.
  • How are your people skills? This is an important one, being able to adapt and wear many hats it the Consultants bread and butter. The more capable your resources are the more value they are to your customers. If one resource is capable of doing the job of 2 (not in workload, but in raw capability) the customer will perceive value

So back to the title … The only one who has the right to say ‘You Suck’ is your customer, and if you do not provide the capability you need to acquire the skills. If you are not capable of getting up to speed, partner with another BP to help bootstrap the process. That being said there are also times when there is just too much work, or a current project takes skills outside of the core competency. Again seek out a neutral BP that you can work with to satisfy the customers needs, doing so will reinforce your desire to make your customer happy.

– Mark

How Social is Social Networking ?

I started to wonder recently with the phenomenon that is Social networking how social is it really. The concepts of connectivity, where I can create a space that describes me, my interests and allow others to see/or interact with that space does not seem that social. Interaction is with a computer, or device (phone) with a computer. In most cases you are sheltered from emotion or intent and in the grander scheme of things the nuances of face to face interaction can expose. The information posted can be true, false or anywhere in between with a general feeling of protection from the outside world.

Our true online substance can become nothing more then a marketing campaign focused on the number of views, or virtual friends one can get, based on an online persona. We have now gotten to a global popularity battle.

I get social networking. I understand its strengths and its contribution model, but I really do believe that some of its weaknesses are rooted deeply in how the human interaction model changes to a more flat gated community. 

Knowing my own life some of the best experiences occur outside, with real people having real interactions and seeing the intent (happiness, sadness, anger) in their faces and being able experience all of those emotions on a more personal level that a computer cannot provide. Hopefully Social 3.0 will bring physical human interaction back into the equation.

– Mark

Sage SalesLogix Mobile Stuck Connector Issue

On the Sage Mobile news groups Johnathan Langley of Pythagoras posted a question to an strange issue they were having. When trying to start up the connector service the error logs would report that the connector was already registered.  Since this was happening It was not possible for any of their users to synchronize. I gave him a call this morning and discussed the connector table and suggested that with in the connector table he set the location of the offending connector back to ‘localhost’

Once the value was set back and he restarted the connector it started to work again and the problem is solved. Sql to set it back is as follows and is very simple

Update Connector set Location = ‘localhost’ where Name = ‘default’

– Mark

IIS 7.0 and 6.0 Compatibility

When using SalesLogix web client with Vista or windows 2008 IIS 6.0 compatibility needs to be installed. Generally this is not a problem but I have found when removing a virtual directory from the IIS 7 does not actually remove it from the IIS 6 Metabase. To actually ensure that your virtual directory is gone since deployments can fail if locates the virtual directory in the IIS 6 Metabase but not registered in IIS 7. So to get around this you will need to install the IIS Resource Kit . In the tool kit is an application named Metabase Explorer.

When looking the default web site on my development machine note that the SlxIntellisync folder is just that and not a virtual directory like the SlxClient application.

Now looking at the default web site in the Metabase explorer you would expect there not to be an entry. However there is one there as shown in this image:

Now in SalesLogix Application Architect If we try to deploy to the Intellisync virtual directory we will get the following result

Note that the virtual directory was found so no configuration will be done. This will not add the entry back into the IIS 7 Catalog. Now if we delete the virtual directory using the Metabase Explorer by selecting it in the treeview and pressing the delete key and redeploy the site will successfully be configured.

So download the SDK and keep it handy.

– Mark

Extending Security Entities

This morning I needed to add a new business rule method to the User entity for team inclusion. I followed all of the regular steps such as create the functionality in my external library, create the new business rule method on the user entity, ensure the new assembly was in the VFS, build interfaces, and build the web application. When I compiled and deployed I was getting an error that the method was not within the User entity (was in the interface correctly) but not the actual user entity. 

When you declare an business rule it does a few things (hopefully I get this right)

1. Update the entity interface with a method signature that matches the new rule

2. Adds a method to the entity that dispatches the call for the business rule. The actual rule is not contained within the entity but within one of the appropriate external assembly.

3. Adds a method entry to the dynamicmethods.xml . This file is the mapping file for the dynamic invocation of method. You can see the assembly, type and method that will be invoked.

So, extending the User entity does not work the same way as the assembly is really a support assembly and is not generated at compile time. To get around this limitation I more specifically just called into my rule directly instead of using the infrastructure. This is another example where external development comes in handy.

– Mark

A Case for an External Business Rule

For the last few days I have been working on a LAN to 7.2.2 customization for a customer.  I have had several issues with the way the VFS handles business rules but have been able to trudge through and get most of the work done. I had a small bit left that I decided to tackle this morning before the kids got up so I fired up AA and started to jump in. The task I had to complete was to create a custom property that would calculate some time based metrics around a ticket. Seemed pretty simple. Not so it seems with my configuration. I added a new property (C#) and saved. When I tried to compile I got a duplicate error where basically 2 snippet items were inserted in the VFS with the same item path. So I went over to the VFS explorer and started to drudge though the model. I located the 2 snippet items with the same item path and discovered that I had to manipulate not only the snippet but also potentially modelindex.xml and also Ticket.TICKET.entity.xml to get my business entities to compile correctly.

Now I wrote the code for my calculation which used the IDataService.GetConnection() method. Once the code was completed I tried to compile. Compile failed with a type resolution error (System.Data .. not known).  Ok, so to fix this issue I should go and edit my CodeSnippets.xml file and add a default assembly reference. I add a new node to the references XML section System.Data.dll, does not work. Ok try System.Data, again does not work. It is trying to resolve the references in the folder path of AA. Since this is a system reference it will not be there, UGH does not work.

So I decide to create an external rule assembly where there are no reference constraints to worry about. 5 minutes later all is good.

So if you need a business rule, or property that needs some system level functionality they you may want to consider using an external assembly instead of C#/VB.net code internal to the model.

– Mark

Microsoft the root of all Evil?

One of the recurring themes in the software world is that Microsoft, and its practices stifles innovation. Through predatory tactics they close down markets and destroy competitors. Debate goes on to this day on how they still are a threat and that the outside world software world combined does not contain the capability of standing up to that threat without the use of legal force. As a software developer and small business owner I want to contrast that thought with what alternatives I see we have.

Linux

When I peer into the Linux world I see fragmentation, no clear sign of a winner in the desktop space. Given that anything I develop has an inherent cost to it (time, family, wages, brain pain) having some assurance that a platform would be generally accepted and installed is a great indication on my decision to adopt. I honestly do not have a desire to build/compile my own kernel and I suspect most of the general population does not as well.  The other tangible item I like is a single line of responsibility where you can go to a specific vendor and get some answer to an issue, and lay the responsibility of fixing it squarely on their shoulders. Note that I have installed Ubuntu onto a VM to dig deeper but have not gotten very far as of yet.

Apple OSX

Now looking at Apple (I own an iMac) the one thing I have to say is the hardware is for the most part beautiful. I have replaced the mouse with a Logitech one and I still find the keyboard layout a little ‘wonky’ for me when I use the system. Lets start out with the first issue I have with Mac, the stupid Mac vs. PC commercials. I know it may sound stupid for this to be a problem, but it is. Why, because for the most part it is extremely untrue. I have had PCs that run for years with very little problem and effort, where as I had my Mac and within a week it was screaming at me with a fault error (unseated ram BTW). Macs do break down, their covers get discoloured, their batteries get recalled, and other failures do happen. PCs can be used for every type of software imagined from Animation, music controllers, graphics design, video editing, office productivity and so much more.

Another thing that I ponder is when we contrast Steve Jobs and Bill Gates, are their character types so dissimilar. On the one side Bill is vilified on how he has run Microsoft and forced customers, vendors and competitors to his desire. On the other side Steve is look upon as a hero by creating ‘Innovative’ products and new markets. What seems strange to me is on the outset is not Steve acting the same way when it comes to iTunes, the store and its delivery and DRM as it is a very closed system and is at near monopoly adoption rates. Development on the Mac and IPhone and its closed tool environment where apple controls it where there is no real competition for that tool set. Delivery of  custom iPhone applications and the revenue sharing model adopted were 30% (I believe this #) is changed for service through iTunes as well. Another issue that I see is the general high cost of the ‘Innovative’ apple hardware. Sure they look nice but does the nice really contribute to a 100% or more increase in the cost of the hardware. RAM is another money grab in my opinion, where guying PC ram is trivial, buying it for a MAC is outrageously expensive. I really like the fact that I can go down to my local Future Shop/Best Buy and purchase some commodity hardware to get the job done that is affordable. A Prime example is a couple of weeks ago I was starting a new project on a older version of a web platform. I was trying to decide between a VM or purchasing a second PC development machine for these types of jobs. I do not mind a VM for small workloads but the effort was 200+ hours of paid development time. So I went to the best buy, purchased a HP Slimline ($499)  Windows installed, 500 GB HD, 4 GB of memory and could handle 1920×1200 resolution and brought it home. Less the 1/2 hour later it was up and running with a VS2008 instance ready to go. For the same configuration for an Apple I expect I would be pretty close to 2 grand.

Steve is really from the old world of thinking and continues to have huge control over the aspects of Apple.

Look at it this way your software goes up on iTunes with hundreds, if not thousands of other titles. To sell your product you will still have to pay for advertising, on top of all of the R&D to get it to market. So for 30% you are getting attached to a list of other products and get to host the download on iTunes. Does not see quite right to me.

Innovation

I do not personally believe that Microsoft stifles innovation. I actually would attribute this problem more with the broken patent system where even the most nonsensical ‘brain fart’ can be approved and the litigation process that ensues. The fact that businesses have been created on purchasing these ‘ideas’ and suing the crap out of smaller companies is just ridicules. If we as a society want true innovation, remove or reduce the roadblocks in creating new and compelling software products and allow the customer to decide.

Conclusions

Linux does not have enough penetration in the desktop OS to make it viable business case for the small development shops

OSX is a shift to the way I develop and the general costs are extremely high.

Windows is the devil I know and love and at times love to hate, but it has the adoption. The platform is standard and the software I write can have exposure to a large enough community that I can build a viable business on.

BITtelligent Dev, Mobility and Embracing the Inner Qualities

I started actively soliciting the services of my company several months ago. BITtelligent has been running for years and work done for Corum and Castle  have been based on services that I provide. I provide development services to business partners and the Sage community as a whole, and of course to companies outside of the Sage community. In all counts the company has been very successful, and making the full-time transition was the right time. I attribute this to many factors such as needed skills, affordable price point, and availability. We are already looking to hire the right developers to join us in our Cambridge, On office.

Embracing History

As I was the Chief Architect and Director of the Corum Mobile Platform, and later Sage Mobile I am seen in the community as the ‘Mobile’ guy. For the last few months I have been trying to lower that vision of my skills to spread out understanding of the capabilities that I can offer. However, based on conversations with people that I greatly respect It only makes sense to ‘Embrace’ these capabilities and support the community (BPs and end customers) moving forward. To that end if you have any Sage Mobile, or mobile development needs, do not hesitate to contact me and I will be your ‘Mobile Guy’ 🙂

Training anyone

I am looking to gauge interest in advanced Mobile or General development training in the community. If you or your company has such an interest please email me at mark.dykun@bittelligentdev.com . If there is enough interest I will setup some training classes (online or onsite) .  Previously at Corum I trained many, many classes in Canada, the US, Australia, and the UK.

Supporting the Business Partner

One of the focuses of my company (www.bittelligentdev.com) is Business Partner development support where I can augment the partners development team and bring in skills and services that may not be available otherwise.  I provide full product development support (mobile or otherwise) and Sage SalesLogix platform customization support (Windows, Web and Mobility). If you are embarking on a large project and need to augment your existing team please consider BITtelligent as a viable solution.

– Mark

Mobile Navigation

I really think the writing is on the wall. The way we navigated within or mobile sets across the board will shift between touch/multi-touch and tactile keyboard as a standard across all mobile manufacturers. iPhone was not the first to provide touch capabilities to a phone/PDA however the way it works is very natural to the average joe and brings the navigation to the figures with gestures, and flicks. Samsung is releasing their ‘Instinct’ phone that also provides touch capabilities. I read yesterday that Windows Mobile 7 will introduce new UI and touch capabilities merging the SmartPhone OS with the PPC OS finally 🙂 Also with the next version of Windows multi-touch capabilities will be introduced into the OS and support will exist even for existing tablet PCs. The only device provider that I have not heard much about when it comes to touch support is RIM but I suspect that as the playing field levels it is only a natural direction for them to go in.

Development Environments

Given all of the shifts to touch on these devices it really bodes well for technologies like Silverlight/WPF and other Rich UI development environments.

One of the things I have been thinking about lately is mobile navigation. For example in the Sage Mobile Platform you drill down from form to form to see the information you are looking for be contacts, accounts, or opportunities. The forms are tab bases so you further drill down to a tab and navigating back and forth is through a collection of menu/tool button choices and popping screens.

My Ideas of Next Generation Navigation

The platform follows a pretty specific pattern and is more the likely shared by other menu platforms. Login->Select a Menu Item->Search for your data->view/change your data->save->close search->Start again. I am starting to think in a more view port methodology where composed entities are snapped together end to end and these entities are bound by a central context.  If I can be clearer, there is no reason that a screen of data needs to display completely related material, or if it does it can display it in completely different ways. An individual ‘View’ is made up of many interchangeable pieces that can be snapped together end to end. This takes away the ‘TAB’ UI metaphor and allow gesture navigation between tiles where the navigation shape can be box, or linear based. Tying the movements from one tile to another tile would be handled by the transition engine (Scrolling, replace, .. kinds of transitions) .

Given that these views are created by snapping together individual tiles the level of composition increases and allows for individual control over navigation and flow. For example say to me my contact information for a given user is the most important thing. Right now I have to do one of 2 things, select contacts->search for the contact->edit the contact or add the contact->Navigate to the Favorites->edit contact. Ok, I now have decided that I am going into see that contact, instead of searching for the contact again and again (review address to get there, while waiting for the meeting, potentially in meeting to review details) I can ‘Tear’ off the contact  and associated it to my main view where the details of that contact are up-front and central.

This approach also opens up the capabilities around dashboards, and reports on mobile devices as you can easily navigate around a much larger view simply by gesturing.

view SWF demo of PPC navigation

– Mark

Sage Mobile Plug-in Types

There are 20 distinct plug-in types used currently in the Sage Mobile platform. They are broken into device based categories. Supported is windows mobile PPC, SmartPhone and BlackBerry. Plug-ins whose type number is less then 10o target the windows mobile platform whereas 101 and greater is targeted towards Blackberry

Windows Mobile Plug-in types

  • VB.net Code (Business Entities, Action Code, ..) – Type 1
  • PPC Form – Type 2
  • Database Table – Type 6
  • Navigation Panel – Type 9
  • Action Bar – Type 10
  • Server 2 Client Map – Type 11
  • Client Query – Type 12
  • Client 2 Server Map – Type 13
  • Server Code Behind – Type 14
  • Detail Panels – Type 15
  • SmartPhone Form – Type 20
  • SmartPhone Detail Panel – Type 21
  • SmartPhone ActionBar – Type 22

BlackBerry Plugin-Types

  • Java Code – Type 101
  • BlackBerry Form –  Type 102
  • Database Table – Type 106
  • Action Bars – Type 110
  • Queries – Type 112
  • Detail Panels – Type 115
  • Table Relationships – Type 116

Plug-ins are store as a mixture of XML and code (VB.net or java) and are also versioned. The last non-deleted version will be used within a compilation and deployment.