Join Our Blog
Years ago developing on the MS plaform was an exclusive activity. First you needed a version of Visual Studio to write code and compile it. That alone ran about 2500 per year. At the time MS had a licesning agreement that gave them rights to all code compiled using VS. It was and elitist club indeed. So what happened? Like capitalism tends to do, people were driven to innovation to free themselves from code tyranny. Hence Mono arrived on the scene. Mono is a compiler that works with MS languages thus removing some of the licensing shackles. Mono is well adapted and deployed across the globe to the point that it had an affect on Visual Studio users. After all to write the code all that is need is a text editor. To keep its relevnace, MS put out Express version of Visual Studio to keep the developer head count steady. So, at this point any application can be developed on Visual Studio or Visual Code without giving God Father Gates his cut. So what happened to Visual Studio? Market forces happened to it. The developer world wants to creat. Not be schackled by licenses.
The Blockchain algorithm is running without issue on nodes across the globe for nearly two decades. Like all things technology, the time comes for an upgrade. That time has arrived for the Blockchain. SegWit2X is an upgrade to the Blockchain set to deploy on the Aug 1, 2017. The upgrade will double the size of the block and increase the Bitcoin network performance which is very much in need now and more so in the future. So, what is the problem? Just click the upgrade package and wait for it to install. There is fear that some crypto current platforms will not support the new blocks. Bitcoin miners also are not fully on board with the implementation and some are deciding to stay with the old block structure. Since all crypto current is a block in the Blockchain, the idea that after Aug 1 some blocks may no longer be valid implies that some individuals in the Virtual Currency industry stand to lose large amounts of their virtual wealth. Thus far, there is a determination that 80% of the Bitcoin miners are needed to adopt this new block for the current levels of Bitcoin circulation to be maintained. So far about 60% of the currency miners have pledged to implement the new block structure.
What does this all mean? At 80% implementation there is the chance that 20% of all Bitcoin wealth will vanish. In terms of virtual currency this is value taken off of the markets permanently. Whose coins will be among those 20%? Everybody is working hard not end up in that group. Right away we see the natural tenancy for fragmentation. Bitcoin could split into two groups and therefore creating and separate denomination of currency. It would be something like, currently we only have a 100 dollar bill in circulation. Now we have a 50 dollar bill and 20 dollar bill in circulation.
If there is a 20% loss in circulation, then the value of Bitcoin should shoot through the roof and cover those with less virtual jingle in their crypto pockets. This most likely will be the outcome, but maybe without the full 20% loss.
Much of the fear is also of the unknown. New code is being introduced without much vetting, so anxiety is to be expected. After all the Blockchain algorithm mysteriously appeared and deployed, now there will be changes to its structure and the virtual wealth it has generated.
As we approach Aug 1, all virtual currency players will have their eyes wide open for opportunities and risks. Unexpected news should not be a surprise.
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.
This blog will be the beginning of a series to frame the inner workings of Blockchains and how they are evolving in modern society.
Let us begin with this question, “What is a Blockchain”. A Blockchain is a continuous record of individual transactions or “Blocks”. We might look at a Block as a receipt. When you make a purchase at a store, you are given a receipt for that purchase. When you think about it, that receipt is a record of two things. First it records how much money escaped your pocket. Next, it is proof of how much money was placed into a stores cash register. It is a chore to consumers across the globe to store a receipt as proof of a purchase. Enter the Blockchain. A Blockchain can be viewed as a centralized collection of <strong>all</strong> receipts. By “<strong>all</strong>”, I mean all over the entire world. Like a global library whose purpose is to just store receipts. It would work similar to a consumer making a purchase and then mailing the receipt to one global address for storage. The store where the purchase was made would do the same. Thus, the receipt would be permanently archived in the library. The Blockchain works much like this. Each individual Block is a receipt of mutually agreed upon conditions and attached to the Blockchain in a decentralized environment, and stored there forever without the possibility of corruption.
Now that we have some idea of the algorithm behind it, “what use does it have?” It is good for virtual currencies. They do not exist physically. They have no intrinsic value. They are worthless, right? Not right. BitCoin to the rescue. BitCoin is a Blockchain monetization platform. What Bitcoin does is prove that it took a lot of work to generate the virtual currency (Bitcoin). Thus, value was created. “How so?” you might ask. Mining is a key part of it. Bitcoin mining is the process of computing hash sequences which have varied levels of difficulty. When the correct hash (code) is returned then a block is generated by Bitcoin and attached to the Blockchain with the total amount of Bitcoins awarded for returning that correct code. This process involves building specialized computers which consume a great deal of electricity. There is definitely work involved in generating each Bitcoin. What Bitcoin does is determine the “<strong>Total Amount</strong>” on the receipt which you will be mailing to the global library.
Now that there is value there can be trade. How can we trade? Let’s take the analogy from the beginning. You make a purchase at a store and are given a receipt (or block). You mail that receipt to the global library and are done. Let us continue further, the store has your cash. That store would like to use that cash to pay the employee working the register. On payday that employee will be given a receipt (or block) for their pay. Then the employee will mail it to the global library (Blockchain) which will check all receipts for that company and make sure there is a matching consumer receipt. If there are enough sales receipts to cover the employee wages then the library will archive the employee receipt. So, trade begins with the creation of a Block. Once both parties agree to mutual terms, the Block will be attached to the Blockchain and become a permanent record of that transaction.
No we have an economy based on Blockchains. There is no physical money. There is value. It is near impossible to hack or rob it. What could possibly go wrong? Well, to begin with Bitcoin was never designed to last forever. Bitcoin mining is the process of generating virtual currencies used for trade. However, the algorithm used to reward Bitcoin miners was designed to stop after a fixed number of Bitcoins are issued. In November of 2012 the Bitcoin algorithm awarded 50 Bitcoins for each Block generated. That award amount is diminished by half every 210,000 Blocks, or approximately every 4 years. On July 9, 2016 it was halved again and only awarded 25 Bitcoins for every Block generated. Currently, 12 Bitcoins are awarded for each Block mined. This halving will continue until the final one, which is the 64<sup>th</sup> halving, after which no more bitcoins will be awarded. The total number of Bitcoins to ever be produced will be 21 million and currently 78% of them have already been mined.
Then, are there enough Bitcoins to do something with them? After all of them have been mined, there will be about 53 billion US dollars’ worth in circulation. To put it in perspective there are 1,800 billionaires in the world. The total possible number of Bitcoins would only cover 53 of them. You can see why a lot of wealthy people really hate Bitcoin. Clearly Bitcoin was only designed to introduce virtual currency to the world and nothing more. This will be discussed in more detail in future blogs.
We now have a new type of currency with value that can be traded and used for payment, but its circulation level is fixed to accommodate only a small group of the global population. What was the point of it all? The point of Blockchain for Bitcoin was to introduce the concept, but the point now looks to be to extend it to infinity. Keep in mind that, the Blockchain is infinite, so we can attach an infinite number of Blocks to it. A Block is simply a record of a mutual agreement. That agreement could be a purchase in Bitcoins, a transfer of a car title, a calendar date for an appointment or anything else.
From the Blockchain perspective is makes no different what sort of agreement it is. This point is what is driving the next generation of block chain companies. Ethereum (<a href="http://www.ethereum.org">www.ethereum.org</a> ) is a scripting platform that supports Blockchain operations. It is a software platform which allows for mutual agreements to be recorded as Blocks and attached to the Blockchain. Can you see the potential? It could be a social network site with a built in payment system. It could be a real estate site which records purchase contracts. It is potentially a revolution in how online services are done. Tezos is a recent start-up to enter this space. Unlike many others which are more focused on using blocks for non-currency transactions, Tezos claims to actually have invented their own block chain algorithm and no doubt have virtual currencies in the works to support trade on their platform.
What is the future of the block chain? We can see that as a virtual currency platform it fell short. However, as an incorruptible record of mutually agreed upon terms between two parties, the block chain will be around for a very long time.
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.