We are currently building custom MVC widgets for a client, and noticed a couple of things. First is that the development environment with Sitefinity Thunder is not the best. The provided Visual Studio project is part of the site installation. Since this client pushes content changes from their development installation, we would have to work from the same site. Work would be checked from the physical site and not in a development environment. This slowed us down a great deal. What we did is to create a standard MVC project in Visual Studio and use pre and post build scripts to package everything according to Sitefinity’s specifications and then drop the .DLL in the run-time directory. This approach allowed us to develop faster and still have an easy deployment process for the finished product. The second important concept to develop Sitefinity MVC Widgets is deciding to what level of MVC the Widget will be. The CMS supports both ASP life-cycle pages and MVC routed views. There are three possibilities. The classic MVC approach offers custom routing, but minimal access for content administrators. The Hybrid model offers more access to content administrators, but tons of additional ASP life-cycle overhead. The Pure MVC model is the one we like. It offers content administrators access to the widgets while keeping overhead to a minimum for better performance. Pure MVC Widgets also allow multiple Controllers on the same page. This has value for controlling code scope on complex pages.
In all the best approach we found to creating custom MVC Widgets is to work from a VS MVC project, package it as a pure MVC Widget and drop into the Sitefinity installation.
When Progress bought Telerik and as Sitefinity consultants, we were concerned that the commitment to MVC might be lost. The .ASP life cycle has served its purpose for many years; however, modern client side complexities are better tackled with architecture capable of offering flexible client side packages and proven server side frameworks to handle the business needs.
Over the years we have made a number of custom Modules for Sitefinity. The unusual ability for Sitefinity to allow custom development while giving content administrators creative control has made working with it a very nice experience. From the beginning, as a Sitefinity consultancy, most of our custom Development focused on Sitefinity and not the page lifecycle. This is not the case with many other CMS systems. For clients, this really can save a lot of money in custom Web Application Development.
We looked at MVC and Sitefinity Widgets and feel that Progress seems to be staying true to driving Sitefinity more towards MVC. We can say that for the Windows environment, this is the best CMS on the market and overall among the top CMS solutions available.
Sitefinity offers many ways for developers to add custom features. Often we find ourselves asking, “What would work best”? Create custom controls or a custom module. From our experience working with the CMS on various client projects, the answer resolves to the question, “Native logic and custom controls or custom logic and native controls”? With a module there will be an entire configuration section that gets built for users to set global configuration. This may be a necessity, for example, when integrating Sitefinity to other applications such as SalesForce. Also, a Module’s native functions can be overridden to perform custom logic. This approach obviously involves more interface implementations, more coding and more resources. One might think the easier path would be to just create custom controls for content editors to drop into pages and create their own logic. Not so fast. The native Sitefinity controls extend the native Telerik controls. Those controls extend the native .NET 4.5 Toolbox controls. Many layers of polymorphism have already been applied, so adding another layer is not going to be a quick and trivial project. In fact if you were to look at extending any of the Sitefinity controls, they require over half a dozen supporting files to function properly. There are interfaces which must be implemented, there are JS files to manage the controls while in the browser, there are core references which must be set for everything to work on the platform. This in itself can be just as time consuming as creating a custom Module in C# and MVC.
Best practice for deciding how to create custom Sitefinity features is to first determine how much control over the logic flow content admins need.
With the current administration’s intent to revamp the H1B program, this is a good time to have a look at what is in play.
The IT industry claims a need for H1B workers due to labor shortages. However, other views see the industry simply abusing opportunities for cheap labor at the expense of domestic works. This issue has been around for a while and not of much interest in the scope of this blog, so we will leave it alone.
What are of interest are the influences affecting the US IT industry for the longer term. Domestically we have an administration driving an “America First” policy focused on training and employing domestic workers. On the other side is a large 3+ million army of foreign H1B workers thriving and living well for their standards. Both movements will be limited by the ability to train and supply workers.
Let’s look at the domestic perspective first. Since the beginning of the dot-com age, American IT workers face ever tighter criteria to land a decent paying job. As a result, younger American’s are faced with fewer options to get into the IT industry. Of course there are options, like degrees, certifications, intern work and similar, but the youth entering the job market today is looking for a short and direct path to the labor force. Hence the MOOC, and coder camp like industries are born. Online courses, lasting only a few months can give you IT knowledge which traditionally requires a degree and years of experience. Although the placement rate is considerable low for such programs, they, none the less, are great training centers for those interested in beginning a career in IT. Coder camps and similar and are so much recognized as potential training centers that the current Department of Education has begun a pilot program (EQUIP) to allow Title IV financing to students of these “Tech Trade” programs. Enrolling into a coder camp, millennials can finance a 3 month course on software programming and pursue a career in the field. So we have a solution. Affordable training and supply is not federally supported. The need has always been there so the demand is ready to absorb these youngsters and help them pay their student loans back.
Let us travel to the other side of the world. Millions of IT workers are coming to the US on the H1B program. As of 2012 the IT outsourcing industry contributed 7.5% to the Indian GDP (http://www.nasscom.in/indian-itbpo-industry). India has certainly many great schools and institutions to train its workers for industry. India no doubt has the population to supply the US IT demand. Many of these workers are living higher than average standards in their country and are driven to continue their success.
Of course the issue is not that straight forward. As with all industries there are lobbies, business agreements, contracts and other tools designed to promote the interest of whoever is behind the signatures. So, fundamental economics, at this point, is probably out the door. What is certain is that there is a need for about 4 million additional IT workers whose average salary is way above the US average. The question is who will those jobs go to? The current administration would like US citizens to fill those jobs. India is benefitting greatly from all of those jobs and would like to continue doing so. As the Department of Education under the Trump administration develops its EQUIP program to allow domestic training centers to put US citizens into those millions of jobs, India has an interesting counter plan.
How can there be a plan to counter such a federally supported movement? Simple, do what has worked so far. Underprice the domestic supply. This is what the major India IT companies are planning. Using the same H1B program they will send the same people as educators to train domestic workers to do what they would have done under the current H1B program. The brilliance is phenomenal! The plan is absolute genius! How so? First, the US IT industry has a low wage addiction. Outpacing inflation with lower waged workers is business strategy. This will not easily change. Second, MOOCS and coder camps have notorious low placement. India is betting that even if the federal programs work and short term training with financing creates huge interest, the likelihood of those who complete the programs finding jobs is low. So, the volume of H1B workers will not be affected.
Two things for sure will come of the H1B program changes. A domestic IT training industry will mature. Second, the demand for IT works will continue. India will try to underprice the IT training industry and take that over, while maintaining the current H1B volume, in essence expanding market share. The Trump administration will try to create programs to help US citizens get trained and find work in the IT industry. If India does it right a huge increase in its GDP will be its reward. However, if things go wrong for India, the US middle class will see a consumer boom minus the Butter Chicken dinners.
We did a survey of food truck operators while researching features for an on-line web application which will serve that industry. We found some interesting things.
We asked if they needed an application to let their customers know where they are. All responded in the negative. The next question was if their customers needed an online menu. All responded in the negative. Intuitively, one would think these two questions are the two most important to that industry. They are not as you will see.
The next question was if their customers would like to place and order before the truck arrives. Most responded with a strong affirmative. This one really has a lot of meaning. We think this may be one of the strongest indicators of what drives the mobile food vending industry. Workers no longer have time for anything but to eat and run.
Continuing with the questions, the next one was if customers needed an easy way to get to the vendors information. All responded in the negative. In general it seems that customers are not interested in established daily routines. They have no expectations of a truck showing up, so when it does they are more than ready to eat.
The responses to this next question surprised us. Asked if they would like a web portal for food truck operators to share knowledge, they all responded with a strong affirmative. Why? Perhaps permits requirements and government regulation changes are driving this response. It makes sense in that when a vendor renews their license, they may come across a regulation change and want to let other vendors know. We really have no idea why this questions got a strong affirmative.
This next question we thought would be a strong affirmative, but it was not. The question was if customers want to pay for their food online. The response was a strong negative. This again would seem to be another key indicator of what is driving the industry. Workers have less time and are limiting their budgets for lunch expenses.
Finally, we asked if they could have an web application designed specifically for their business, what sort of application would it be. All responded that it would be a mobile app. Makes total sense.
The rapid growth of social media has been amazing no question. If you recall MySpace when it was an IPO, the model for raising a social media network was established with some concrete definition. First Hollywood was called upon to show the public how they regularly stay in touch with each other. The younger generation jumped on board quickly and blew up the number of users. Shortly after those younger users, came the small businesses looking to attract customers. Then after business adopted social media, came the politicians. Even with that many people MySpace still struggled to cash in on advertising. The reason why is important to this very day.
MySpace went out and new social networks came in. Using nearly the same business model they went live one after the other. What developed was a wide range of social networking platforms that fall into two categories.
The first are those that profile users by accumulating tons of small pieces of information about the individual over a long time. The other is a platform designed for real time communication over a short period.
The first has longevity. Old posts are the bases of an ever evolving character development. It’s like a job interview which never ends. You are in a room selling yourself in perpetuity, without any idea of what the end outcome can be. The second has engagement. These platforms offer a mechanism to stimulate and gauge a response. These are no doubt an attractive platform for a skilled salesperson.
We are now at a point where both models of social networking platforms have saturated users to the point that most major social media sites have indicated stagnate levels of read content, but increasing levels of newly generated content. We may be at the global social media saturation point.
The current difficulty Twitter is experiencing is an indication of this. What is interesting is that Twitter would fall into the category of the real time engagement platform, which seems to be the one with the most conversion possibility. However, in its current state, Twitter has become the leading news dissemination platform with financial problems. How can this be? A platform designed to engage users in real time became a generator of news feeds. I think the explanation enforces my feeling that social media is saturated and much of the message posts on those sites have not been submitted by average users. I am only saying what everybody is already been thinking! Yes, social media is driven by language recognition software like http://www.antlr.org/ and professional trolls! There it is. Further, users have noticed that their two way communication does not fulfill their needs so they re-purpose social media into something else. In Twitter’s case it got re-purposed into an information portal. The platform now for the most part, generates news and users decide if it is of interest to read. This in effect kills the engagement model. What are you left with then? The answer is something, similar to Yahoo. To put the nail in the coffin, main stream media outlets have the lowest confidence levels ever in history among the public. If this trend continues, social media platforms will be stuck trying to hold traffic with content that the public has less and less interest in reading. It really comes at no surprise that social sites like Twitter are finding it hard to justify their value.
There is good news! Once Twitter finds an interested buyer, not doubt that it will get a new direction which will target a specific audience. Many of the current users may not be among that group and will fall back onto the other social platforms. What is going to happen is that the stagnation will vanish for a while and new content will get read once again. Yippie! A great opportunity may be just around the corner to get your product or services to the attention of the right customers. Don’t let is pass you by.
How much native code is required for the app stores? “As much as you can get”.
A client recently asked us to make an existing app more “appy”. That is the word they used. Strangely though, the app was already deployed to Google Play and iTunes. It was based on a cross platform framework and they were having difficulty getting changes published because of insufficient native code. So there seems to be the case that there can be just too much framework and not enough “appyness”. Hmm, what should a growing business which connects with its customers through an app do? Make it more “appy” of course.
None the less the trend we see these days is more towards native code and away from frameworks. I like this from a technical perspective because it puts more focus on programming languages. It makes sense from a business point of view as well. About a decade ago, Enterprise this and that was the trend. Much of it was driven by lots of cash for IT projects and the idea that Enterprise platforms already have the solution to problems you have yet to uncover. The “appy” trend will encourage business managers to better understand their needs and goals.
Finally some clarity! Thank goodness.
Antyhing SalesForce related is not cheap. Not consider integrating your CMS with SalesForce and the letter “c” drops right out of the alphabet. There is exponential effort in getting a sales lead started as there is maintaining the contact. Why not let customers interested in your services or products start their own contant information. This Sitefinity module is just the thing. It lets you convert the standard Sitefinity forms builder into a self help SalesForce kiosk that allows customers to create their own contact information. It really is worth the money.
If I had to pick right now which CMS is best, the answer would come from two questions. The first is, “Is it Windows based or LAMP?” The next question is, “how capable is the person/s managing the content?” There are not many Windows based CMS’s available in the market. Partially, because Sharepoint fills the need and smaller businesses mostly run on LAMP environments at a 30% discount from a Windows platform. However, PHP applications can run on IIS and so most of the emphasis moves to the second question.
How capable is the person/s managing the content? OK, sure Joomla, Sitefinity and others can give a admin the interface with which to change just about everything. These are all fine CMS applications and deployed across the globe. However, what about that start up or small business that needs to target a specific market? The full featured CMS’s will require too much training and or cost to quickly give such a business a specific online presence. As new businesses attack existing markets, they need to stand out from the rest by using responsive design and easy to change content. This gap is filled in nicely with ProcessWire CMS. It is amazing at supporting the concept of creating that custom template and wiring up a content administration pages to it. What clever engineering. Create a template and then insert placeholders for content interfaces that users can log into and make changes as needed. This really supports the idea of market driven development. This is just the sort of principle new businesses and startups are driven by. It is fast, highly customizable and agile in every sense from the business objective perspective.
Now developers, check this out. The template is straight html. PHP variables are placeholders for dynamic content. Those variables are pointers to predefine Fields, that are also HTML WYSIWYG controls. Actually not much software development is really needed other than for highly customized plugins.
ProcessWire is a CMS that makes highly speialized web design into an easily maintained website.
I really like the way SalesForce setup its REST API. The intuitive nature makes it simple and unnecessarily complex. Two main principles are involved. The first is the URL path to the SalesForce object. Next is the JSON serialization of that object posted to the URL. That’s it. SalesForce knows if it is an update insert, delete, or anything else. The reverse is true also. GET from the URL path to the object and de-serialize from the JSON string. Of course NOQL queries can be uses as well with the same technique. CRUD interfaces for the standard objects can be built in less than an hour on an MVC platform. Next to Entity Framework or Hibernate this is about as the easiest ORM one has to create manually.
I have worked with the SOAP services also and find it cumbersome in not only in overhead, but serialization of objects and security. These web services rely on before and after triggers which in themselves require some time to create, test and maintain. SalesForce, requires a minimum code coverage before any trigger changes can be pushed to production. This, over time, becomes an additional task and will diminish an organization’s agility during growth spirts.
For quick easy and reliable SalesForce integration, the REST API is the way to go.