26 December 2019

Digital to Sensecal - Decade of 2021

Best way to read & grasp is to open this article in computer with space to open new tabs as this intend to be led you to learn your way into this & next decade. Much better edited version available on LinkedIn here.
2020 Cyber Security Trends
Source of Image: 2020 Cybersecurity Trends… (Happy New Year!!)
In few days we are about to begin new year & probably new decade. As myself being a technologist it is important for me to reflect on whole decade which just passed by while I try to comprehend as much I can.

First decade of Millennium, world was recovering from dot.com burst but that era made a springboard for this decade to usher into new development of Digital technologies & enhance its reach to Billions of people. For example, many digital technologies came into light & well evolved which propel our digital journey. Following is brief history of last 10 years in timeline to make a point that whatever happened is happened in conjunction with overall growth in technology be it device computing power, Internet speeds etc.,
2010-2019 Timeline
Legends1,  2345678910  YTA – Yet to Arrive,   - Internet of things
After observing above facts, you would be thinking what would be next decade of exponential growth look like when more than half of world is already on internet & in general are contributing. But before getting into what would next decade look like I would say what would drive it in first place. Following are my thoughts after lot reading & googling & limiting it to technological rather political or societal.

Reach of Internet

Internet Penetration -Global
Source of Image: Digital-2019-global… (Based on old data)
In June 2019, Internet Users were 4.53 Billion which is roughly 58.8% of population this will get to 97 – 99.99% by 2030. It’s not mere reach but Quality of Internet will also be improved to 4G speeds to 100% of users while 60-70% of people would be experiencing 5G & beyond speed & latency. This brings to me next topic…

5G & Beyond

What is 5G
Source of Image: What is 5G.. ?
Most people perceive 5G as technological milestone which will just increase numerical speed of data download or what they experience while 4K/8K streaming. There are three broad use cases define by International Telecommunication Union:
  • Enhanced Mobile Broadband (eMBB): This is commonly referred as 5G which is progression from 4G which results in faster connections, higher throughput & lesser latency.
  • Ultra-Reliable Low Latency Communications (URLLC): This refers to using the network for mission critical applications that requires uninterrupted and robust data exchange for example., like Remote Healthcare or Industrial Automation etc.,
  • Massive Machine Type Communications (mMTC): This type of network which connect to a large number of low power, low cost devices, which have high scalability and increased battery lifetime, in a wide area.
You would have heard in headlines 5G standards are ready & people are planning on rollout. As Far as 5G concern only Phase 1 is completed which refers to only eMBB use cases which is commonly referred as Release-15. Release-16 will be focused on URLLC & set to be released by coming mid-2020. Release-17 is up in the air (and is about to be started soon) & planned to complete in Q3 2021. It will mostly be about enhancing 5G features in different areas including mMTC.
Early years of next decade will see low to mid band of 5G rolling out while hoping by 2025 we would see peak speed/latency/throughput realized at least in few countries. This is gigantic change of oceanic proportion which will influence & somewhat change our way to interact with day to day life tasks & business we all involve.

Computational Power

IBM Quantum Computing
Source of Image: IBM’s new quantum…
Moore’s Law was supposed to be dead by 2025 as per Moore himself. But our technological advance kind of killed it already 1. There are many alternatives & all these will evolve further in coming years, one type of alternative is Specialized Processing Architecture for ex., GPUs(FOR AI & advance Graphical computing by nVIDIA), TPU(Tensor Processing Units Introduced by Google), FPGAs(Microsoft used it for Bing). I see all these alternatives are bridge towards something radically new & branches of old semiconductor-based computing which making for time to welcome new field of computing. The next biggest discovery of initial decades of this millennium will be Quantum Computing which I foresee will be in at least world’s largest enterprises by end of year 2030. Obviously, this will take decades not just because of it is complex but also because of our limited knowledge of overall Quantum Mechanics so far, its real classical physics getting into way to get you a smartphone size Quantum Computer. If you have courage to survive hardcore physics, I love you to explore Quantum Entanglement & all other related series.  Anyway, here is good read which gives you idea where it is today. By the way if you are wondering how fast it would be anyway, Answer is A 30-qubit quantum computer would equal the processing power of a conventional computer that could run at 10 teraflops (trillions of floating-point operations per second). Today's typical desktop computers run at speeds measured in Giga FLOPS (billions of floating-point operations per second). While IBM & Google both claim that they have 53 qubit Quantum Computer ready. Use cases of such extreme computing will emerge with Data & Internet rises together. There are early set of language & SDKs are in making which will lead this era.
This brings to the Question:

“ How digital marketing will evolve in next decade which will shape the experience business? ”

So far largely the Digital Experience we witnessed provided by Digital Marketing was designed around viewing it, sometime hearing but not beyond it. Most of us think & perceive today Internet is a commodity which we see day in day out & experience it through Smartphone, Laptop, TV, streaming devices etc., which is in some or other form geared toward one of basic Human senses sight.

In Future it will be hearing when you don’t want to see it, but also it will be accompanied by things which you can touch or things can touch you back, things which can provide experience of other human senses. For example., think of a device which you can order for tasting/smelling wide variety of products at your home or a common place without purchasing actual product. How about most of reading glasses are connected to Internet & people love to watch Netflix or shop for their products with AR enabled content. In such world do you imagine people typing or clicking bookmarked websites to reach brand. The best nascent example of a device which cover atleast few senses, is intelligent is Amazon Echo. Same device can evolve tomorrow once you pack more sensors & have accessories joined to it, will make an good experience device of future.
My point is we need to stop thinking digital with its usual HTML boundaries, we need to blend physical & other aspects of human senses to create an experience which last forever. These experiences can be delivered by such devices or living services which provide dynamic two-way conversation. In end Digital we know today will be revolutionized to the core that in 2030 & beyond we even don’t recognize what we have today.
Now will that be call Digital after 10-20 years I doubt, it should be call Sensecal. As it would appeals to broader aspect of us being human not pair of eyes & brain attached together to decide.
But before leaving I can’t resist top three companies which changed this decade forever at least from personal opinion:
Tesla Cyber Truck
Source of Image: tesla.com (They disrupted Automotive Industry from slumber of 100 years)

Netflix Stock
Source of Image: fool.com (They disrupted Cable Industry & how movie & television industry worked)


AirBnb
Source of Image: Wallstreet … (They changed the hospitality industry & might be biggest IPO of 2020)

Disclaimer: I claim no subject matter expertise, but I see traditional Software companies are parroting day & night about Experience, Value etc., but they hardly inspire new generation of technologist innovators they might be mere 90’s Shopping Malls. Views like this, are my personal opinion & are not associated with my Employer or partners of Employer in anyway.

23 December 2019

Install Sitecore 9.3.0 with Windows Containers

First & foremost let's appreciate Sitecore Community for contributing great effort for making Sitecore available through Docker Images up here. This little post up here is effort to document Sitecore Container installation in learn your way in single post, so be ready to open lot of chrome tabs :).

Following will be key points of this blog post:
  • Docker on Windows Environment for Sitecore Installations
  • Little walk through of Sitecore Docker Git Repository
  • Actual Installation of XP0 flavor.
Now without further delay let's start with first point:

Docker on Windows Environment

Figure 1.1
There are tons of blog post/documentation both from Microsoft & Docker (Docker Desktop Client) available to make your Windows machine ready for Docker Containers. There are other alternatives like Orcale VirtualBox etc., which are great if you older version of Windows or due to some other reasons like you already have VirtualBox running than you must use this. Please also create you docker Account which will come handy later. In end if you have Docker Desktop Client Installed which is most preferred way than you must see something similar as shown up here in Figure-1.1. Make sure that you are on Windows Container not on Linux Containers for this post. Last thing on Docker learning is quick cheatsheat or list of commands most used.






Walk through of Git Repository

Figure 1.2
This Repo is designed to cater both for Windows & Linux containers, but to start with in this post we will talk on Windows flavor of Containers. This Repo is designed with PowerShell Scripts for lot of automation like downloading Sitecore Installation packages using your Sitecore Account of  Official downloads. In case you already have most of Sitecore Downloads in form of original Zip Archive formats, than you can post all such downloads in ~/packages/ directory. This will save you time, as scripts are smart enough to ignore existing packages. This Repo supports Sitecore Installations starting from Sitecore version 9.0.2 to latest till date & continue to support all coming latest version up-till Sitecore start itself officially support Docker Containers as part of their documentation. This supports Sitecore Platform(CMS+DMS  aka XP), Management(CMS Only aka XM), SXA with XP/XM flavor & finally with Publishing Server, this make it comprehensive options to choose from. This also intend to containerize all its dependencies & thus comes all you need to start in container way for development. To start you would also require your own Sitecore license. This is living & breathing repo so there are open items in Project tab which you should follow if you want to know what's in development & you can also raise issues etc., so keep engaging. Also please read actual ReadMe before you begin as I did not intend to repeat what has been documented already.

Sitecore Installation XP

To start make a quick copy of git repo using following usual command:

git clone https://github.com/Sitecore/docker-images.git

You can create your own feature branch or fork it out in case of serious tinkering if you intend to share with others. After cloning, enter the directory of cloned Repo & make new directory ~/packages/ & copy all existing Sitecore Archives for installation if you don't have any than Script will download for you, so no worries. Create new directory ~/../license/ outside of your cloned Repo & paste your license into that. Last I assume you had your docker hub account credentials ready with a private Repo name incase you are experimenting locally for actual build server you would use commercial private docker image repository like ACR(Azure Container Repository) etc., Though providing private repo url is optional but in that case all build images are stored locally only. That's all you need to start with building docker images, execute following command while being in repo directory. Again I assume you must have latest Powershell Core & running in Administrator mode:

.\Build.ps1 -SitecoreUsername "<YourSitecoreOnlineAccountEmail>" -SitecorePassword "<YourSitecoreOnlineAccountPassword>" -Registry "<YourDockerImagePrivateURL>" -RegistryUserName "<YourDockerImagePrivateUsername>" -RegistryPassword "<YourDockerImagePrivatePassword>"
or
.\Build.ps1 -SitecoreUsername "<YourSitecoreOnlineAccountEmail>" -SitecorePassword "<YourSitecoreOnlineAccountPassword>" -Registry "<YourDockerImagePrivateURL>"
Figure 1.3
Obviously replace contents including <..> here before executing. This will take time, I am serious even with 1 Gig Fiber Optics connection on Wifi & have SSD driven latest MS Surface book it might take hours like 2-6 hours. I have also noticed that if your laptop sleeps due to inactivity settings it might turn off wifi-network to save energy on battery mode etc., so make sure all those settings are off. Once successful, you should see bunch of images in your local & remote docker repo with docker images command as shown in Figure 1.3.

You might find an error like not able to build some solr image, my trick was to go to file "~\windows\9.x.x\sitecore-xp-solr\build.json" which keeps Solr windows build options. You can figure out your required build configuration based upon sitecore version & flavor you intend to install, for ex., I was looking on Windows for XP flavor of Sitecore 9.3.0, so i figured out following build command from same file & need to run from same directory:

docker build --build-arg BUILD_IMAGE=mcr.microsoft.com/windows/servercore:1809 --build-arg BASE_IMAGE=sitecore-openjdk:8-nanoserver-1809 --build-arg SOLR_VERSION=8.1.1 --build-arg CORE_NAMES='sitecore_core_index, sitecore_master_index, sitecore_web_index, sitecore_marketingdefinitions_master, sitecore_marketingdefinitions_web, sitecore_marketing_asset_index_master, sitecore_marketing_asset_index_web, sitecore_testing_index, sitecore_suggested_test_index, sitecore_fxm_master_index, sitecore_fxm_web_index, sitecore_personalization_index, sitecore_xdb, sitecore_xdb_rebuild' --build-arg MANAGED_SCHEMA_DEFAULT_NAME='managed-schema.default.930' --build-arg MANAGED_SCHEMA_XDB_NAME='managed-schema.xdb.930' -t sitecore-xp-solr:9.3.0-nanoserver-1809 .

Once done you can use existing Docker Compose YAML files to spin up your instance ready make sure you use -d argument so that it keep running in background. I would also request to examine compose file as this is next file format you should learn if you are new to docker. Following is command need to execute from "~\windows\tests\9.3.x\" directory.

docker-compose --file .\docker-compose.xp.yml up --d
Figure 1.4
You should see following containers running as shown in Figure 1.4
You can access the sitecore welcome page or cms admin page with container CD & CM using default usual sitecore creds. For ex., in my case from shared screenshot it is http://localhost:44002/sitecore/ &  http://localhost:44001/sitecore/ respectively.
Figure 1.5
Make sure you run quickly build Solr Indexes from Control panel, do publishing, do link build exercise to make sure all aspects & components are working as expected.

Common Errors:


  • You might also encounter an error like not able to push registry to access denied, you may skip private repo parameters with Build.ps1 file, If testing is all you want in local. This error is more related to proper docker login with your session being in right namespace & org.
  • If you are like where you tried XM which worked great & now playing with XP but somehow your SQLDev Container is stopping & you see network error for your page please look to this Issue #154, fix is to run ./Clean-Data.ps1 file but before running make sure your XM or XP containers are removed, by simply using compose with down switch.
  • Obviously refer to Sitecore Stack Exchange or existing Issues in Docker Git Repo.
I hope this helps but will follow up on this to add further on this docker theme.

26 November 2018

Setup latest Habitat Sitecore 9.0.2 on Fresh Azure VM

How to install latest Habitat using Sitecore 9.0.2 Update has been well blogged already by many of good friends like Siva , in Community.

Here i try to blog it additional steps or Gotchas, which will save you hours if you wish to setup single instance in fresh Azure VMs, this might save time somebody who is new to Sitecore & want to have quick demo running in Single VM, rather going through full Sitecore PaaS. by Single Instance here I mean one VM have everything ex., Solr, Database, Sitecore XP0 configurations etc., The Azure VM I used is Windows Server 2016 with Container. Good thing it doesn't require installing Visual Studio. My next 

I will list steps assuming you have nothing in VM, except RDP Login & Administrative Access to it.

Setup Java

  • To start on new VM get Google Chrome to get away with annoying IE Dialog Boxes. 
  • Solr required Java to present. So we will try to install Java Standard Edition JDK. Recently Java had launched SE 11.0.1(LTS) which is current & long term support release while sun setting Java SE 8 series.  Don't install SE 11.0 thinking latest is best as it is not compatible with Solr version we required. 
  • We still need to download Java SE(8u191) release from here. Install the Java JDK & setup Path variable & JAVA_HOME variable. It should look like following 
Figure 1.1

  • For Sitecore 9.0.2 (Update-2), We required to setup Solr 6.6.2. To setup same Jeremy Davis written an excellent PowerShell script which will do the required setup including Solr with SSL. Follow his post for information. Download & Unblock the PowerShell script while changing following values to suit
Figure 1.2
  • But before you execute that script you need to run following command to Import Dependency
       Import-Module BitsTransfer      
  • Once done you should be able to verify right installation as following:
Figure 1.3

Install IIS & its dependencies.

Before we start with actual installation of Sitecore & Habitat, we need couple of more things in place:
  • Install Windows Features for IIS & other required Apps. 
    • Choose Role-based or feature-based installation
    • Select local server
    • Select all checkboxes as suggested below.
Figure 1.4
  • If not present Install Web Platform Installer now come as Extension to IIS. After Installing it use it to install other required Server dependencies as show below, Few things might be already installed:
Figure 1.5

Figure 1.6
  • Install other Framework dependencies, as listed following:
Figure 1.7
  • Last is database dependencies, as listed following:
Figure 1.8

Install SQL Server Express

  • I used latest available SQL Express 2017, Installed the name Instance with mixed authentication enabled always.
  • After that install SSMS(SQL Server Management Studio). It's optional if you wish to remote Administer SQL server instance.

Install Mongo DB Community Server

  • For development & demo purposed we can use Mongo DB Community edition & download it from here, be mindful of downloading correct release which for this Sitecore version which is 3.6.9
  • In order to work with Mongo DB in GUI mode, I recommend to use RoboMongo which is now 3T. Again good for development & demo purpose.

Install NodeJS

  • Install latest Node JS version available from here & direct media from here
  • Install gulp as Global by using following command
npm install --global gulp-cli

Install MS-Build

  • Download Visual Studio Build Tools Bootstrapper from here. It will automatically select you Build Tools 2017. If you miss some features you re-run same exe but select Build Tools rather complete IDE versions like Enterprise, Professional or Community.
  • Once download, double click & install it, with following components:
Figure 1.9

Figure 1.10
  • You can also install it through completely no GUI mode.
Install Sitecore Habitat
         Install-Module -Name Invoke-MsBuild
  • Before running MSBuild run following command to quickly restore the Nuget packages & other dependencies, run this command from directory where you have .SLN file.
               dotnet restore --runtime win
          This will restore pacakges for Window x-86 as Runtime
  • Once done fire up below command to run MS-Build
               Invoke-MsBuild -Path "C:\Habitat\Habitat.sln" -ShowBuildOutputInCurrentWindow
  • Next you run following command from directory where you have .SLN file.
               npm install
  • Last you need to run Gulp Task, by running following command
               gulp
          This will run default task. Incase due to some issue if you are gulp task is interrupted, you can run always again either full or if you know the specific task than run same for example.,
               gulp Sync-Unicorn

End result should be same as what Siva had displayed.

Figure 1.11