<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>//Cloud notes from my desk</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/maheshk/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/maheshk/feed.xml</link>
    <description>@Maheshk - Technical Evangelist (Azure)</description>
    <lastBuildDate>Thu, 28 Feb 2019 03:19:40 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>[HTTP 301] Moved this blog to my WordPress</title>
      <link>https://docs.microsoft.com/archive/blogs/maheshk/moved-this-blog-to-my-wordpress-site-http-maheshkumar-wordpress-com</link>
      <pubDate>Wed, 16 Jan 2019 21:59:06 GMT</pubDate>
      <dc:creator><![CDATA[Maheshk [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/maheshk/?p=3445</guid>
      <description><![CDATA[All, 
I have moved this blog to my very own WordPress site --&gt;...]]></description>
      <content:encoded><![CDATA[<h4 style="text-align: left"><span style="color: #993366">All, </span></h4>
<h4 style="text-align: left"><span style="color: #993366">I have moved this blog to my very own WordPress site --&gt; <span style="color: #3366ff"><a target="_blank" href="https://maheshkumar.wordpress.com" rel="noopener">https://maheshkumar.wordpress.com</a></span></span></h4>
<h4><span style="color: #993366">Pls continue to read it from there. </span></h4>
<h4><span style="color: #993366">Thank you !!! </span></h4>]]></content:encoded>
    </item>
    <item>
      <title>[LFCS] Managing Software RAID</title>
      <link>https://docs.microsoft.com/archive/blogs/maheshk/lfcs-managing-software-raid</link>
      <pubDate>Mon, 11 Jun 2018 23:07:00 GMT</pubDate>
      <dc:creator><![CDATA[Maheshk [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/maheshk/?p=3395</guid>
      <description><![CDATA[mdadm is a super cool command in Linux used to manage MD devices aka Linux Software RAID. Before we...]]></description>
      <content:encoded><![CDATA[<span style="font-size: small"><u><em>mdadm</em></u> is a super cool command in Linux used to manage MD devices <em>aka</em> Linux Software RAID. Before we jump in, let’s see what is RAID. - --Redunant array of independent disks
--if disk gets corrupted, then data loss
--using RAID, if one disk fails, other will take over</span>

<span style="font-size: small">$ man page says this,</span>
<blockquote><em><span style="font-size: small">RAID devices are virtual devices created from two or more real block devices. This allows multiple devices (typically disk drives or partitions thereof) to be combined into a single device to hold (for example) a single filesystem. Some RAID levels include redundancy and so can survive some degree of device failure.</span></em></blockquote>
<span style="font-size: small"><strong>Understanding RAID soln, </strong>
RAID O- Striping { one big device based on multiple disk, no redundancy or easy recovery}
RAID 1- Mirroring { 2 disks, identical }
RAID 5- striping with distributed parity { if data is written with parity info, if one disks fails, then restore the data }
RAID 6- striping with dual distributed parity { redundant parity is written,advancement of RAID 5 }
RAID 10- mirrored and striped { minimum of 10 disks, 2 for striping, 2 for mirrored}</span>

<span style="font-size: small"><strong><span style="color: #ff0000">Sample question:</span> </strong>How to create a RAID 5 Device using 3 disk device of 1 GB each. Also allocate additional device as spare device.
-- Put a file system on it and mount it on /raid
-- Fail one of the devices, monitor what is happening
-- Replace the failed device with spare device</span>

<span style="font-size: small;color: #ff0000"><strong>Solution:</strong></span>
<blockquote><span style="font-size: small">$ <strong>cat</strong> <strong>/proc/partitions </strong>
$ <strong>fdisk -l</strong> { list the partition tables for the device, if no device specified then list all the partitions from the system }
$ <strong>fdisk</strong> <strong>/dev/sdc</strong>
</span><span style="font-size: small"><em> -n create a new partitions { size as +1G }
-m {help}
-t :L {enter "fd" for Linux raid auto}
-w { write the </em>entries to persist }
$ <strong>partprobe</strong> { inform the OS partition table changes }
$ <strong>vim /etc/fstab </strong>{ before we proceed, let’s verify the disks are not used for any mounting. In my case, I had used as swap device mounting so got an error saying device is busy error. Rmv the entry, reboot }
$ <strong>mdadm</strong> <strong>--create /dev/md1 -l <span style="color: #ff0000">5</span> -x 1 --raid-disk=<span style="color: #ff0000">3</span> /dev/sdc1 /dev/sdc2 /dev/sdc3 /dev/sdc4 --verbose --auto=yes</strong>
$ <strong>mdadm</strong> <strong>--detail /dev/md1</strong> { list details after creation, should see 3 device + 1 spare device }</span>

<span style="font-size: small"> $ <strong>mdadm </strong>--<strong>fail</strong> <strong>dev/md1 /dev/sdc1 </strong>{ to simulate the failure }
$ <strong>mdadm --remove /dev/md1 /dev/sdc1</strong> { remove the faulty one }
$ <strong>mdadm --add /dev/md1 /dev/sdc1 </strong>{ add the device back to the pool as spare device if healthy }</span></blockquote>
<span style="font-size: small"><em>other disk related commands,</em>
$ blkid $ blkid /dev/sdc
$ df -h, df -h -T, df -hT /home
$ du -h /home, du -sh /home/mydir
$ mount /dev/sdc5 /mnt, cd /mnt , touch file1 { after mounting make entry in /etc/fstab to persist}
$ mount -a { to mount all fs mentioned in fstab}
$ mkfs.ext4 /dev/sda4 { format a partition of type ext4, after creating a partition }</span>

<span style="color: #ff0000;font-size: small"><strong>Command output:</strong></span>

<span style="font-size: xx-small"><span style="color: #0000ff">root@mikky100:~# mdadm --fail /dev/md1 /dev/sdc1 { Simulate the failure }</span>
mdadm: set /dev/sdc1 faulty in /dev/md1</span>

<span style="color: #0000ff;font-size: xx-small"><a href="mailto:root@mikky100"><span>root@mikky100</span></a></span><span style="font-size: xx-small"><span style="color: #0000ff">:~# mdadm --detail /dev/md1 { view the detail after the failure, we should see the spare disk getting rebuild }</span>
/dev/md1:
Version : 1.2
Creation Time : Mon Jun 11 06:10:34 2018
Raid Level : raid5
Array Size : 1951744 (1906.32 MiB 1998.59 MB)
Used Dev Size : 975872 (953.16 MiB 999.29 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent</span>

<span style="font-size: xx-small"> Update Time : Mon Jun 11 17:06:09 2018
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1</span>

<span style="font-size: xx-small"> Layout : left-symmetric
Chunk Size : 512K</span>

<span style="font-size: xx-small"> Rebuild Status : 3% complete</span>

<span style="font-size: xx-small"> Name : mikky100:1 (local to host mikky100)
UUID : 772f743c:b1209727:6910411d:690d6294
Events : 20</span>

<span style="font-size: xx-small"> Number Major Minor RaidDevice State
3 8 36 0 <strong>spare rebuilding /dev/sdc4</strong>
1 8 34 1 active sync /dev/sdc2
4 8 35 2 active sync /dev/sdc3</span>

<span style="font-size: xx-small"> 0 8 33 - <span>faulty</span> /dev/sdc1</span>

<span style="font-size: xx-small"><span style="color: #0000ff">root@mikky100:~# mdadm --detail /dev/md1</span>
/dev/md1:
Version : 1.2
Creation Time : Mon Jun 11 06:10:34 2018
Raid Level : raid5
Array Size : 1951744 (1906.32 MiB 1998.59 MB)
Used Dev Size : 975872 (953.16 MiB 999.29 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent</span>

<span style="font-size: xx-small"> Update Time : Mon Jun 11 17:08:13 2018
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0</span>

<span style="font-size: xx-small"> Layout : left-symmetric
Chunk Size : 512K</span>

<span style="font-size: xx-small"> Name : mikky100:1 (local to host mikky100)
UUID : 772f743c:b1209727:6910411d:690d6294
Events : 37</span>

<span style="font-size: xx-small"> Number Major Minor RaidDevice State
3 8 36 0 <strong>active sync /dev/sdc4</strong>
1 8 34 1 active sync /dev/sdc2
4 8 35 2 active sync /dev/sdc3</span>

<span style="font-size: xx-small"> 0 8 33 - faulty /dev/sdc1
</span>

<span style="font-size: xx-small;color: #0000ff">root@mikky100:~# mdadm --add /dev/md1 /dev/sdc1 { add the disk back as spare }</span>

<span style="color: #0000ff;font-size: xx-small"><a href="mailto:root@mikky100"><span>root@mikky100</span></a></span><span style="font-size: xx-small"><span style="color: #0000ff">:~# mdadm --detail /dev/md1</span>
/dev/md1:
Version : 1.2
Creation Time : Mon Jun 11 06:10:34 2018
Raid Level : raid5
Array Size : 1951744 (1906.32 MiB 1998.59 MB)
Used Dev Size : 975872 (953.16 MiB 999.29 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent</span>

<span style="font-size: xx-small"> Update Time : Mon Jun 11 17:12:21 2018
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1</span>

<span style="font-size: xx-small"> Layout : left-symmetric
Chunk Size : 512K</span>

<span style="font-size: xx-small"> Name : mikky100:1 (local to host mikky100)
UUID : 772f743c:b1209727:6910411d:690d6294
Events : 39</span>

<span style="font-size: xx-small"> Number Major Minor RaidDevice State
3 8 36 0 active sync /dev/sdc4
1 8 34 1 active sync /dev/sdc2
4 8 35 2 active sync /dev/sdc3</span>

<span style="font-size: small"><span style="font-size: xx-small"> 5 8 33 - <strong>spare /dev/sdc1</strong></span>
</span>]]></content:encoded>
    </item>
    <item>
      <title>AI Revolution and resources</title>
      <link>https://docs.microsoft.com/archive/blogs/maheshk/ai-revolution-and-resources</link>
      <pubDate>Sat, 02 Jun 2018 19:32:00 GMT</pubDate>
      <dc:creator><![CDATA[Maheshk [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/maheshk/?p=3385</guid>
      <description><![CDATA[Before 1990, its was all CLI. Every software had commands &amp; parameters. That was the standard of...]]></description>
      <content:encoded><![CDATA[<span style="font-size: small">Before 1990, its was all CLI. Every software had commands &amp; parameters. That was the standard of the Software development. Post that we had GUI based interfaces having buttons and mouse clicks. Around 1995, we had Internet Web UI as became the standard. After the success of smart phones in 2008, we saw more Responsive UI developed using jQuery,Bootstrap and now we live in the era of Conversation UI. Bots like Cortana, Siri, Alexa are around the block to help our modern needs. </span>

<span style="font-size: small">Below is the snippet which I borrowed from this </span><a target="_blank" href="https://info.microsoft.com/ww-landing-ai-developers-bot-ebook.html" rel="noopener"><span style="font-size: small">ebook</span></a><span style="font-size: small"> covering “how the enterprise information technology has transformed over the last few decades”. Thanks to the author who put the classification beautifully with examples.</span>
<blockquote><em><span style="font-size: small"><strong>Client-Server Revolution</strong> → Systems of records It was the client-server revolution that first enabled broad use of information technology to manage business. Organizations first built systems of records: Customer Relationship Management (CRM) systems; Human Capital Management (HCM) systems for HR; and Enterprise Resource Planning (ERP) systems for financials and key assets. </span></em>

<em><span style="font-size: small"><strong>Internet Revolution</strong> → System of engagement The rise of the internet, mobile, and chat allowed us to create systems of engagement that interfaced between the systems of records and interacted directly with customers and suppliers. </span></em>

<em><span style="font-size: small"><strong>AI Revolution</strong> → System of intelligence What is emerging now are systems of intelligence that integrate data across all systems of record, connect directly to systems of engagement, and build systems that understand and reason with the data. These systems can drive workflows and management processes, optimize operations, and drive intelligent interactions with customers, employees, suppliers, and stakeholders.</span></em></blockquote>
<span style="font-size: small">Below is our Microsoft AI platform story covered in one slide deck. </span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/image84.png"><span style="font-size: small"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/06/image_thumb67.png" width="651" height="333" border="0" /></span></a>

<span style="font-size: small">If you are wondering how your organization can start the AI journey today, then below is the some of the key resources for learning, </span>
<ol>
 	<li><a href="https://azure.microsoft.com/en-in/overview/ai-platform/"><span style="font-size: small">Azure AI</span></a><span style="font-size: small"> -&gt; A page where our Microsoft AI story is well articulated (In the page, scroll down for ‘AI Services’). </span></li>
 	<li><a href="https://www.microsoft.com/en-us/p/intelligent-kiosk/9nblggh5qd84?activetab=pivot%3aoverviewtab"><span style="font-size: small">Intelligent KIOSK</span></a><span style="font-size: small"> –&gt; must try windows app to demonstrate Pre-built AI (Cognitive APIs) <a href="https://www.microsoft.com/en-in/p/intelligent-kiosk/9nblggh5qd84?rtc=1#activetab=pivot:overviewtab">&amp;</a> store url
</span></li>
 	<li><a href="https://www.microsoft.com/en-us/seeing-ai"><span style="font-size: small">Seeing AI</span></a><span style="font-size: small"> –&gt; Great demo app on iOS using our cognitive APIs. Good to install and check the capability it brings in</span></li>
 	<li><a target="_blank" href="https://info.microsoft.com/ww-landing-ai-developers-bot-ebook.html" rel="noopener" title="https://info.microsoft.com/ww-landing-ai-developers-bot-ebook.html"><span style="font-size: small">Conference Buddy</span></a><span style="font-size: small"> –&gt; ingredients needed to develop an intelligent chatbot. </span><a target="_blank" href="https://aka.ms/conferencebuddy" rel="noopener" title="https://aka.ms/conferencebuddy"><span style="font-size: small">sample</span></a><span style="font-size: small"> code for try one. </span></li>
 	<li><a href="https://aischool.microsoft.com/learning-paths"><span style="font-size: small">Microsoft AI School</span></a><span style="font-size: small"> –&gt; Another great learning resource our Services and ML offerings</span></li>
 	<li><a href="https://aka.ms/jfkfiles-demo"><span style="font-size: small">The JFK Files</span></a><span style="font-size: small"> –&gt; Cognitive Search - An AI-first approach to content understanding – </span><a href="https://github.com/Microsoft/AzureSearch_JFK_Files"><span style="font-size: small">code</span></a></li>
</ol>
<u>update: 6/26</u>
<a href="https://unearth.ai/">https://unearth.ai/</a>
<a href="https://alice.unearth.ai/">https://alice.unearth.ai/</a>
<a href="https://wolterskluwereap.azurewebsites.net/Home/Search">https://wolterskluwereap.azurewebsites.net/Home/Search</a>
<a href="https://text-analytics-demo-dev.azurewebsites.net/">https://text-analytics-demo-dev.azurewebsites.net/</a>

<span style="text-decoration: underline">update 12/28</span>

<a href="https://docs.microsoft.com/en-us/azure/cognitive-services/Text-Analytics/Tutorials/tutorial-power-bi-key-phrases">https://docs.microsoft.com/en-us/azure/cognitive-services/Text-Analytics/Tutorials/tutorial-power-bi-key-phrases</a>
<a href="https://rare-technologies.com/text-summarization-with-gensim/">https://rare-technologies.com/text-summarization-with-gensim/</a>
<a href="https://webmedsearch.azurewebsites.net/">https://webmedsearch.azurewebsites.net/</a>
<a href="https://github.com/liamca">https://github.com/liamca</a>
<a href="https://github.com/liamca/medical-ner-search">https://github.com/liamca/medical-ner-search</a>
<a href="https://github.com/liamca/BM25_Key_Phrase_Extraction">https://github.com/liamca/BM25_Key_Phrase_Extraction</a>
<a href="https://github.com/liamca/keyphrase_extraction_and_summarization_over_custom_content">https://github.com/liamca/keyphrase_extraction_and_summarization_over_custom_content</a>

<span style="font-size: small">Happy Learning !!</span>]]></content:encoded>
    </item>
    <item>
      <title>[LFCS] terminal multiplexer commands $ tmux</title>
      <link>https://docs.microsoft.com/archive/blogs/maheshk/lfcs-terminal-multiplexer-commands-tmux</link>
      <pubDate>Mon, 28 May 2018 15:17:00 GMT</pubDate>
      <dc:creator><![CDATA[Maheshk [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/maheshk/?p=3355</guid>
      <description><![CDATA[tmux, htop and bash-completion are the 3 useful commands for the exam. You can install them using $...]]></description>
      <content:encoded><![CDATA[tmux, htop and bash-completion are the 3 useful commands for the exam. You can install them using $ apt install tmux htop bash-completion.Let's see the commands for tmux,

Session management:-
$ apt install tmux -y
$ tmux new -s &lt;session-name&gt;
$ tmux attach -t &lt;session-name&gt; {continue to run in the bg if we detach}
$ tmux list-sessions

Session command:-
&lt;Cntl-b&gt; % -&gt; Split the window vertically
&lt;Cntl-b&gt; " -&gt; Split the window horizontally
&lt;Cntl-b&gt; x -&gt; kill the current pane
&lt;Cntl-b&gt; Up, Down, Right, Left cursor -&gt; switch the cursor from one pane to the other
&lt;Cntl-b&gt; x -&gt; Close the current pane
&lt;Cntl-b&gt; [ -&gt; Scroll within a pane (use q to exit)]]></content:encoded>
    </item>
    <item>
      <title>[LFCS] Commands to manage and configure containers in Linux</title>
      <link>https://docs.microsoft.com/archive/blogs/maheshk/lfcs-commands-to-manage-and-configure-containers-in-linux</link>
      <pubDate>Sun, 27 May 2018 09:48:00 GMT</pubDate>
      <dc:creator><![CDATA[Maheshk [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/maheshk/?p=3315</guid>
      <description><![CDATA[- LXC(Linux container) is an OS level virtualization for running multiple isolated Lx systems...]]></description>
      <content:encoded><![CDATA[- LXC(Linux container) is an OS level virtualization for running multiple isolated Lx systems (containers) using single kernel
- LXC combines the kernel's cgroups (Control Groups) to provide isolated space for our application
- Lx kernel provides the cgroups functionality + namespace isolation --&gt; cgroups is the brain behind the virtualization
- cgroups provides { resource limiting, prioritization, accounting and control }
- various projects use cgroups as their basis, including Docker, CoreOS, RH, Hadoop, libvirt, LXC, Open Grid/Grid Engine, Kubernetes, systemd, mesos and mesoshpere
- initial version of Docker had LXC as execution environment, but later replaced with libcontianer written in go lang
- both dockers and LMCTFY taken over the containers space and used by many companies

<a href="https://msdnshared.blob.core.windows.net/media/2018/05/image294.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/05/image_thumb225.png" width="439" height="231" border="0" /></a>

<strong><span style="color: #ff0000">&gt;&gt;&gt;LXC – Linux container commands </span></strong>

$ sudo -i {switch to root account}
$ apt update
$ free -m { check your memory availability, -m for MB, -G for GB }
$ apt install lxc  { linux container, docker is based on this/type of }
$ systemctl status lxc.service
$ systemctl enable lxc
$ lxc -&gt;tab -&gt; tab  { to see all the lxc- commands }
$ cd /usr/share/lxc/templates
$ ls { should see the list of templates }
$ lxc-create -n mylxcontainer -t ubuntu { should create ubuntu container based on the specified template}
$ lxc-ls { list the local container, ubuntu should appear with name mylxcontainer }
$ lxc-info -n mylxcontainer { should see the status as STOPPED }
$ lxc-start -n mylxcontainer
$ lxc-info -n mylxcontainer { should see the state as RUNNING }
$ lxc-console -n mylxcontainer { console login to the container, username -ubuntu, pass-ubuntu }
$ ubuntu@mylxcontainer:~$ { upon login your console prompt changes takes you to ubuntu }
$ uname -a or hostname { to confirm you are within the container }
$ Type &lt;cntrl+a q&gt; to exit the console
$ lxc-stop -n mylxcontainer
$ lxc-destroy -n mylxcontainer

<strong><span style="color: #ff0000">&gt;&gt;&gt;Docker container commands</span></strong>
$ apt update
$ free -m
$ apt install docker.io
$ systemctl enable docker
$ systemctl start docker
$ systemctl status docker
$ docker info
$ docker version
$ docker run hello-world { to pull the hello-world for testing }
$ docker ps
$ docker ps -la or $ docker ps -a { list all the containers }
$ docker search apache or microsoft { to search container by name }
$ docker images { to list all the images in localhost }
$ docker pull ubuntu
$ docker run -it --rm -p 8080:80 nginx  { for nginx, -it for interative }
$ docker ps -la { list all the containers, look for container_id, type first 3 letters which is enough }
$ docker start container_id or ubuntu { say efe }
$ docker stop efe
$ docker run -it ubuntu bash
$ root@efe34sdsdsds:/# { takes to container bash }
<em> &lt;type cntrl p + cntrl q&gt; to switch back to terminal </em>
$ docker save debian -o mydebian.tar
$ docker load -i mydebian.tar
$ docker export web-container -o xyz.tar
$ docker import xyz.tar
$ docker logs containername or id
$ docker logs -f containername or id { live logs or streaming logs }
$ docker stats
$ docker top container_id
$ docker build -t my-image dockerfiles/ or $ docker build -t aspnet5 .  { there is a dot at the end to pick the local yaml file for the build }

<strong><span style="color: #ff0000">&gt;&gt;&gt;for working with Azure Container</span></strong>

$ az acr login --name myregistry
$ docker login myregistry.azurecr.io -u xxxxxxxx -p myPassword
$ docker pull nginx
$ docker run -it --rm -p 8080:80 nginx { Browse to <a href="https://localhost:8080">https://localhost:8080</a>  }
{To stop and remove the container, press Control+C.}
$ docker tag nginx myregistry.azurecr.io/samples/nginx
$ docker push myregistry.azurecr.io/samples/nginx
$ docker pull myregistry.azurecr.io/samples/nginx
$ docker run -it --rm -p 8080:80 myregistry.azurecr.io/samples/nginx
$ docker rmi myregistry.azurecr.io/samples/nginx
$ docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" nginx
$ az acr repository delete --name myregistry --repository samples/nginx --tag latest --manifest
$ docker run -d redis (By default, Docker will run a command in the fg. To run in the bg, the option -d needs to be specified.)
$ docker run -d redis:latest
$ docker start $(docker ps -a -q)
$ docker rm -f $(docker ps -a -q)

<span style="color: #ff0000"><strong>&gt;&gt;&gt;docker minified version</strong></span>
$ docker pull docker.io/httpd
$ docker images
$ docker run httpd
$ docker ps [-a | -l]
$ docker info
$ docker run httpd
$ curl <a href="https://172.17.0.2">https://172.17.0.2</a>  &lt;ctrl+c&gt;
$ docker stop httpd
$ docker rmi -f docker.io/httpd
$ systemctl stop docker

Happy learning !]]></content:encoded>
    </item>
    <item>
      <title>[Azure HPC] Intro to HPC and steps to setup CycleCloud in Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/maheshk/cyclecloud-intro-to-hpc-and-steps-to-setup-cyclecloud</link>
      <pubDate>Sat, 31 Mar 2018 16:13:00 GMT</pubDate>
      <dc:creator><![CDATA[Maheshk [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/maheshk/?p=3305</guid>
      <description><![CDATA[&lt;update:9/2/2018&gt;
Aug 31, Our CycleCloud team hits general availability in Azure. It's a tool...]]></description>
      <content:encoded><![CDATA[<span style="color: #ff0000">&lt;update:9/2/2018&gt;</span>
<pre><span style="color: #808080"><em><strong>Aug 31,</strong> Our CycleCloud team hits <span style="text-decoration: underline">general availability in Azure</span>. It's a tool for creating, managing, operating, and optimizing HPC clusters of any scale in Azure.Azure CycleCloud is available in the Microsoft Download Center, Azure Marketplace, and Azure Container Registry,</em></span>
<span style="color: #808080"><em>• <a href="https://azure.microsoft.com/en-us/blog/microsoft-azure-the-cloud-for-high-performance-computing/">Azure CycleCloud announcement</a></em></span>
<span style="color: #808080"><em>• <a href="https://azure.microsoft.com/en-us/features/azure-cyclecloud">Azure CycleCloud product page</a></em></span>
<span style="color: #808080"><em>• <a href="https://docs.microsoft.com/en-us/azure/cyclecloud/">Documentation</a></em></span>
<span style="color: #808080"><em>• <a href="https://www.microsoft.com/en-us/download/details.aspx?id=57182">Azure CycleCloud download</a></em></span>
<span style="color: #808080"><em>• <a href="https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azurecyclecloud.azure-cyclecloud-vm?tab=Overview">Azure Marketplace offering for Azure CycleCloud</a></em></span>
<span style="color: #808080"><em>• <a href="https://hub.docker.com/r/microsoft/azure-cyclecloud/">Azure Container Registry container</a></em></span>

<span style="color: #808080"><em><strong>The following key scenarios are met by CycleCloud:</strong></em></span>
<span style="color: #808080"><em>• Ability to run Linux &amp; Windows HPC Clusters with traditional schedulers, including Slurm, PBS Pro, HPC Pack, Spectrum LSF and Symphony, Grid Engine, or HTCondor.</em></span>
<span style="color: #808080"><em>• Easily managing HPC clusters with multiple VM families and sizes to get capacity for critical runs</em></span>
<span style="color: #808080"><em>• Customizable workload templates that serve as best-practice starting points for Azure deployments</em></span>
<span style="color: #808080"><em>• Active directory integration for access to and management of compute environments</em></span></pre>
<span style="color: #ff0000">&lt;/update&gt;</span>

<span>As part of <strong><a href="https://www.youracclaim.com/badges/a7170005-e6c3-4a1e-9e1e-f556e6521562/">Microsoft Internal MOOC</a></strong> course “<b>Big Compute: Uncovering and Landing Hyperscale Solutions in Azure”</b>, I was introduced to CycleCloud and learned how to setup CycleCloud in my Azure subscription. I would like to blog about some of my HPC learning + steps followed to setup one.
</span>

<span style="color: #0000ff;font-size: small"><strong>What is HPC? </strong></span><span style="font-size: small">High Performance computing(HPC) is a parallel processing technique for solving complex computational problems. HPC applications can scale to thousands of compute cores. We can run these workloads in our premise by setting up clusters, extend the burst volume to cloud or run as a 100% cloud native solution. </span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image417.png"><span style="font-size: small"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb388.png" width="618" height="382" border="0" /></span></a>

<span style="color: #0000ff;font-size: small"><strong>Where is Big Compute used, usecase ? </strong></span><span style="font-size: small">Usually compute intensive operations are best suited for this workload. </span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image418.png"><span style="font-size: small"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image4_thumb1.png" width="616" height="361" border="0" /></span></a>

<span style="color: #0000ff;font-size: small"><strong>How HPC can be achieved in Microsoft Azure?</strong></span>

<strong><span style="font-size: small">1) </span></strong><a target="_blank" href="https://azure.microsoft.com/en-us/services/batch/" rel="noopener"><strong><span style="font-size: small">Azure Batch</span></strong></a><span style="font-size: small"> –&gt;managed service, “<strong>cluster” as a service</strong>, running jobs, developers can write application that submit jobs using SDK, cloud native, HPC as a service, Pay as you go billing</span>

<strong><span style="font-size: small">2) </span></strong><a target="_blank" href="https://cyclecomputing.com/products-solutions/cyclecloud/" rel="noopener"><strong><span style="font-size: small">CycleCloud</span></strong></a><span style="font-size: small"><strong> </strong>–&gt;<a target="_blank" href="https://blogs.microsoft.com/blog/2017/08/15/microsoft-acquires-cycle-computing-accelerate-big-computing-cloud/" rel="noopener">acquired</a> by MS, “<strong>cluster” management software</strong> aka orchestration software, supports hybrid clusters, multi cloud, managing and running clusters, one time license, you have complete control of the cluster and nodes
</span>

<strong><span style="font-size: small">3) </span></strong><a target="_blank" href="https://azure.microsoft.com/en-us/blog/cray-in-azure-for-weather-forecasting/" rel="noopener"><strong><span style="font-size: small">CrayComputer</span></strong></a><span style="font-size: small"> –&gt;partnership with CrayComputer, famous weather forecasting service</span>

<strong><span style="font-size: small">4) </span><a target="_blank" href="https://docs.microsoft.com/en-us/azure/cloud-services/cloud-services-setup-hybrid-hpcpack-cluster" rel="noopener"><span style="font-size: small">HPC pack</span></a></strong><strong></strong><span style="font-size: small"><strong> </strong>in Azure Infra–&gt;<strong> </strong></span><a target="_blank" href="https://docs.microsoft.com/en-us/azure/virtual-machines/windows/high-performance-computing#marketplace-solutions" rel="noopener"><span style="color: #000000;font-size: small">Marketplace offerings</span></a><span style="font-size: small">  {HPC Applications, HPC VM images, HPC storages}</span>

<span style="font-size: small">Azure Batch doesn’t need intro as it is there for quite sometime, setting up a Batch is very easy. Tools like Batch Labs helps us to monitor/control the Batch job effortlessly. Batch SDK helps us to integrate with existing legacy application easily to submit the job or manage the entire batch operation using their custom developed application. The end uses need not to login to Azure portal for submitting the jobs. </span>

[embed] https://twitter.com/MahesKBlr/status/948924709885771776 [/embed]

[embed] https://twitter.com/MahesKBlr/status/779008726908833792 [/embed]

<span style="font-size: small;color: #0000ff"><strong>What is CycleCloud? </strong></span><span style="font-size: small">CycleCloud provides a simple, secure, and scalable way to manage compute and storage resources for HPC and Big Compute/Data workloads in Cloud. CycleCloud enables users to create environments in Azure. It supports distributed jobs and also parallel workloads to tightly-coupled applications such as MPI jobs on Infiniband/RDMA. By managing resource provisioning, configuration, and monitoring, CycleCloud allows users and IT staff to focus on business needs instead infrastructure. </span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image1101.png"><span style="font-size: small"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image1_thumb1.png" width="678" height="448" border="0" /></span></a>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image419.png"><span style="font-size: small"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb389.png" width="676" height="408" border="0" /></span></a>

<strong><span style="font-size: small"><span style="color: #0000ff">How to set it up in Azure? </span></span></strong><span style="font-size: small">Steps are already documented </span><a target="_blank" href="https://github.com/azurebigcompute/BigComputeLabs/tree/master/CycleCloud" rel="noopener"><span style="font-size: small">here</span></a><span style="font-size: small">, I am trying to put the same steps in screenshot for easy reference. </span>

<span style="font-size: small">1) Download the </span><a target="_blank" href="https://github.com/azurebigcompute/BigComputeLabs/tree/master/CycleCloud" rel="noopener"><span style="font-size: small">json files</span></a><span style="font-size: small"> to your local drive. Say, c:\temp </span>

<span style="font-size: small">2) Generate the </span><a target="_blank" href="https://blogs.msdn.microsoft.com/maheshk/2018/01/31/aad-how-to-create-service-principal-through-cli/" rel="noopener"><span style="font-size: small">Service Principle</span></a><span style="font-size: small"> </span>

<span style="font-size: small">3) Generate </span><a target="_blank" href="https://blogs.msdn.microsoft.com/maheshk/2018/01/30/linux-ssh-how-to-login-azure-linux-vms-using-ssh-key-pair/" rel="noopener"><span style="font-size: small">SSH pub and private key</span></a>

<span style="font-size: small">4) Clone the repo file to your local drive, say c:\temp</span>

<code><span style="font-size: small">git clone </span><a href="https://github.com/azurebigcompute/Labs.git"><span style="font-size: small">https://github.com/azurebigcompute/Labs.git</span></a><span style="font-size: small"> </span></code>

<span style="font-size: small">5) Edit the <em><u>vms-params.json</u></em> file to specify the generated rsaPublicKey parameter from Step3. The cycleDownloadUri and cycleLicenseSas parameters have been pre-configured, but if you procure license then you need to update these two params as well. For now, I am leaving as it.. </span>

<a><span style="font-size: small"></span></a>

<span style="font-size: small"><a href="https://msdnshared.blob.core.windows.net/media/2018/03/image420.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb390.png" width="855" height="335" border="0" /></a></span>

<span style="font-size: small">6) Now login to Azure CLI, create resource group, storage account, create VNET deployment and at last create VMs</span>

<code><span style="font-size: small">C:\temp&gt;</span></code><code><span style="font-size: small">az login</span></code>

<code><span style="font-size: small">C:\temp&gt;az group create --name "cycle-rg" --location "southeastasia"</span></code>

<code><span style="font-size: small">C:\temp&gt; az storage account create --name "mikkyccStorage" --group "cycle-rg" --location "southeastasia" --sku "Standard_LRS"</span></code>

<code><code><span style="font-size: small">C:\temp&gt;az group deployment create --name "vnet_deployment" --resource-group "cycle-rg" --template-uri </span><a href="https://raw.githubusercontent.com/azurebigcompute/Labs/master/CycleCloud/deploy-vnet.json"><span style="font-size: small">https://raw.githubusercontent.com/azurebigcompute/Labs/master/CycleCloud/deploy-vnet.json</span></a><span style="font-size: small"> --parameters vnet-params.json</span></code></code>

<code><code><span style="font-size: small">C:\temp&gt;az group deployment create --name "vms_deployment" --resource-group "cycle-rg" --template-uri </span><a href="https://raw.githubusercontent.com/azurebigcompute/Labs/master/CycleCloud/deploy-vms.json"><span style="font-size: small">https://raw.githubusercontent.com/azurebigcompute/Labs/master/CycleCloud/deploy-vms.json</span></a><span style="font-size: small"> --parameters vms-params.json</span></code>
</code>

<code><code><a href="https://msdnshared.blob.core.windows.net/media/2018/03/cyc3.png"><span style="font-size: small"></span></a><span style="font-size: small"><a href="https://msdnshared.blob.core.windows.net/media/2018/03/cyc31.png"><img title="cyc3" alt="cyc3" src="https://msdnshared.blob.core.windows.net/media/2018/03/cyc3_thumb.png" width="855" height="440" border="0" /></a></span></code>
</code>

<span style="font-size: small">
7) Post the deployment, you will find the above set of resources created in our resource group say “cycle-rg”. Select the Cycleserver VM and copy the IP address to see if you can browse CycleCloud setup page. </span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image421.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb391.png" width="855" height="406" border="0" /></a>

<span style="font-size: small">8) Pls note, the installation uses a self-signed SSL certificate, which may show up with a warning in your browser. So, it is safe to ignore the warning and add it as exception to get the page like the after setting up the cluster (refer configure “CycleCloud Server” section from this <a target="_blank" href="https://github.com/azurebigcompute/BigComputeLabs/tree/master/CycleCloud" rel="noopener">page</a>). If you get the below page after all the setup, then we are ready to create new cluster and submit the jobs. </span>

<span style="font-size: small"><a href="https://msdnshared.blob.core.windows.net/media/2018/03/image422.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb392.png" width="785" height="447" border="0" /></a></span>

<span style="font-size: small">9) Refer the section as it is “Creating a Grid Engine Cluster” 5.1 as it is from <a target="_blank" href="https://github.com/azurebigcompute/BigComputeLabs/tree/master/CycleCloud" rel="noopener">here</a></span>

<span style="font-size: small">10) After the cluster is created, we need to start the cluster and see it is running like the below. </span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image423.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb393.png" width="783" height="380" border="0" /></a>

<span style="font-size: small">11) Now our Grid Engine cluster is ready for the job submission, For security reasons, the CycleCloud VM (CycleServer) is behind a jump box/bastion host. To access CycleServer, we must first log onto the jump box, and then ssh onto the CS instance. To do this, we'll add a second host to jump through to the ssh commands. </span>

<span style="font-size: small">From Azure portal, retrieve the admin box DNS and construct the SSH command as in screenshot. The idea is to “ssh –J” to our CycleServer through CycleAdmin box. One cannot directly ssh into CycleServer which is for security. </span>
<pre><code><span style="font-size: small">$ ssh -J cycleadmin@{JUMPBOX PUBLIC HOSTNAME} cycleadmin@cycleserver -i {SSH PRIVATE KEY}</span></code></pre>
<span style="font-size: small"><a href="https://msdnshared.blob.core.windows.net/media/2018/03/cyc.png"><img title="cyc" alt="cyc" src="https://msdnshared.blob.core.windows.net/media/2018/03/cyc_thumb.png" width="855" height="492" border="0" /></a></span>

<span style="font-size: small">12) Once we get into <a href="mailto:CycleAdmin@CycleServer">CycleAdmin@CycleServer</a>, first change into root user and call CycleCloud Initialize command. You need to enter the username and password for that machine. </span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image424.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb394.png" width="855" height="430" border="0" /></a>

<span style="font-size: small">13) Connecting to the Grid Engine Master as </span>
<pre><code><span style="font-size: small">[root@cycleserver ~]$ cyclecloud connect master –c &lt;clustername&gt;</span></code></pre>
<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image425.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb395.png" width="855" height="224" border="0" /></a>

<span style="font-size: small">14) Now ready to submit our first job, <span style="font-size: small"><a target="_blank" href="https://gridscheduler.sourceforge.net/htmlman/htmlman1/qstat.html" rel="noopener"><strong>qstat</strong></a><strong> </strong>is to query the status of grid engine jobs and queues &amp; <span style="font-size: small"><a target="_blank" href="https://gridscheduler.sourceforge.net/htmlman/htmlman1/qsub.html" rel="noopener"><strong>qsub</strong></a><strong> </strong>is to submit the batch jobs<strong>. </strong></span></span></span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image426.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb396.png" width="854" height="163" border="0" /></a>

<span style="font-size: small">15) On successful submission, we should see the job started executing in our nodes. </span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/read16.png"><img title="read16" alt="read16" src="https://msdnshared.blob.core.windows.net/media/2018/03/read16_thumb.png" width="855" height="402" border="0" /></a>

<span style="font-size: small">Master takes the batch job and getting executed from 3 nodes spin under execute node template</span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image427.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb397.png" width="855" height="611" border="0" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image428.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb398.png" width="855" height="277" border="0" /></a>

<span style="font-size: small">By the way, if we login the Azure portal and navigate to the RG, then we would see there is VMSS created as part of execute worker nodes. </span>

<a href="https://msdnshared.blob.core.windows.net/media/2018/03/image429.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb399.png" width="855" height="142" border="0" /></a>

<span style="font-size: small"><a href="https://msdnshared.blob.core.windows.net/media/2018/03/image430.png"><img title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/03/image_thumb400.png" width="855" height="405" border="0" /></a></span>

<span style="font-size: small">we could also set the autoscaling feature from CycleCloud cluster settings, so the Azure VM’s comes and goes away once the job is completed. We have submitted 100 jobs per our command so it will request 100 cores. Based on the cluster core limit, it will decide whether to scale till that or not. Let say, if we have set 100 cores as cluster scale limit, then we would see many other VM’s also getting created to complete the task in parallel. </span>

<span style="font-size: small"><code><span style="font-size: small">[cyclecloud@ip-0A000404 ~]$ qsub -t 1:100 -V -b y -cwd hostname</span></code></span>

<span style="font-size: small">Once the job is completed, we can terminate the cluster and also delete the RG if you don’t want to retain which is our last step. I know it’s a bit of learning + confusing to start for the first time, but once you hands-on then it is easy to setup whenever you require and dispose off after completing our jobs. </span>

<span style="font-size: small">Happy learning !</span>]]></content:encoded>
    </item>
    <item>
      <title>[AAD] How to create Service Principal through CLI</title>
      <link>https://docs.microsoft.com/archive/blogs/maheshk/aad-how-to-create-service-principal-through-cli</link>
      <pubDate>Wed, 31 Jan 2018 15:20:00 GMT</pubDate>
      <dc:creator><![CDATA[Maheshk [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/maheshk/?p=2815</guid>
      <description><![CDATA[There are multiple ways to generate the Service Principal for Azure AD. Say, through portal, CLI or...]]></description>
      <content:encoded><![CDATA[<span style="font-size: small">There are multiple ways to generate the Service Principal for Azure AD. Say, through portal, CLI or PowerShell. </span><span style="font-size: small">I always used Azure portal for this registration. But started liking CLI way of generating principal which is very simple and easy to register and generate the required keys and move on. Yes, many times you would find this step as a prerequisites or in mid way to continue say Azure Data Lake Analytics query or ADAL programming. </span>
<pre><code><span style="font-size: small">$ az login</span></code></pre>
<pre><code><span style="font-size: small">$ az account list -o table</span></code></pre>
<code><span style="font-size: small">$ az ad sp create-for-rbac --name MikkyDemoTraining --years 1</span></code>

<code><span style="font-size: small"><strong>output:</strong>
        {
                "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "displayName": "MikkyDemoTraining",
                "name": "https://MikkyDemoTraining",
                "password": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        }</span></code>

<span style="font-size: small">
Ps: Take note of the password value for later references, otherwise you may need to regenerate again. </span>

For more detail - <a href="https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?view=azure-cli-latest">https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?view=azure-cli-latest</a>]]></content:encoded>
    </item>
    <item>
      <title>[Linux] How to login Azure Linux VM’s using SSH key pair</title>
      <link>https://docs.microsoft.com/archive/blogs/maheshk/linux-ssh-how-to-login-azure-linux-vms-using-ssh-key-pair</link>
      <pubDate>Tue, 30 Jan 2018 21:25:00 GMT</pubDate>
      <dc:creator><![CDATA[Maheshk [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/maheshk/?p=2805</guid>
      <description><![CDATA[This post is for Linux newbies trying to figure out SSH way login to Azure Linux VM. I am following...]]></description>
      <content:encoded><![CDATA[<p><font size="2">This post is for Linux newbies trying to figure out SSH way login to Azure Linux VM. I am following the steps explained <a href="https://docs.microsoft.com/en-us/azure/virtual-machines/linux/mac-create-ssh-keys">here</a>. Had seen many times our windows users struggle to get this right at first shot. Hope the below screenshots are clear to follow and achieve easy logon. Ps note, there are many ways to get this done but I felt this as the quick way to get it right without jumping between tools/sites. </font></p><p><font size="2"><strong>Step 1</strong>: I am using WSL but you can try Git Bash or bitvise or Putty or Tux vm or any other SSH client of your choice. </font></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image384.png"><img width="680" height="692" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb366.png" border="0"></a></p><p><font size="2">Pls note down the Key passphrase safely. This is required when we SSH to Linux VM from $ terminal. </font><p><font size="2"><strong>Step 2: </strong>You would see the public and private keys generated at the path <strong>~/.ssh</strong>. Cat out the <strong>id_rsa.pub</strong> file to grab the public key which is required when creating Azure Linux VM. </font><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image385.png"><img width="687" height="178" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb367.png" border="0"></a><p><font size="2"><strong>Step 3: </strong>Paste the above Public key at the time of VM creation in portal or CLI</font><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image386.png"><img width="682" height="537" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb368.png" border="0"></a><p><font size="2"><strong>Step 4: </strong>Once the VM is created, copy the SSH command to logon</font></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image387.png"><img width="855" height="348" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb369.png" border="0"></a></p><p><font size="2"><strong>Step 5: </strong>Go back to the your favorite SSH client and run the above copied command. Pls note, it will prompt for the passphrase which you have to enter now. On success, you would see your remote machine terminal. </font><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image388.png"><img width="855" height="455" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb370.png" border="0"></a><p><font size="2">Let me know if you see this helps you in some way. </font><p><font size="2">Happy learning !</font>]]></content:encoded>
    </item>
    <item>
      <title>[Azure PaaS] Why to consider Azure PaaS?</title>
      <link>https://docs.microsoft.com/archive/blogs/maheshk/why-azure-paas</link>
      <pubDate>Thu, 18 Jan 2018 22:09:00 GMT</pubDate>
      <dc:creator><![CDATA[Maheshk [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/maheshk/?p=2715</guid>
      <description><![CDATA[Happy new year ! As a Technical Evangelist, I work with bunch of ISV's where I meet technical...]]></description>
      <content:encoded><![CDATA[<p>
<font size="2">Happy new year ! As a Technical Evangelist, I work with bunch of ISV's where I meet technical architects for engagements which includes Architectural design talk, review or POC's assistance. To me, its easy to work with and explain Uber architects vs PowerPoint architects who resist PaaS services aggressively and often describe it's a burden for them. As a leader in PaaS offerings, we encourages developers/startups to focus on their “apps” rather spending time on managing the underlying resources. It gives us a “real” freedom to operate cloud easily and also provide easy integration happy path to various tools, reports and monitoring. Here </font><font size="2">
I wanted to list out the advantages of adapting PaaS Service over IaaS. </font></p><p><font size="2"><strong>1) Open and Hybrid:</strong> Azure is committed to being open and speak customer languages of their choice and platforms they prefer. We openly work with many open source communities, integrating the demands, acknowledging the development community movement and also contribute the same fix back to the community repos. By this way, It put us on a win/win situation. Hybrid path and options in Azure is so useful for someone to leverage their existing on Premise investments. Azure PaaS provides high control, high productivity + Intelligence platform which you can consider for both Open source and Hybrid scenario’s. </font></p><p><font size="2"><strong>2) Data-driven Intelligence:</strong> Azure is the "<em>only</em>" cloud provider which provides comprehensive monitoring solutions to monitor both Cloud and On- Premises in a single pane. It has Azure Monitor, Application Insights, Log Insights etc helps to get various intelligence about the services easily. It also has the Azure Security Centre to helps us easily detect threats early and avoid false positives.</font></p><p><font size="2"><strong>3) Continuous Innovation:</strong> Azure services can be easily integrated with VSTS which provides an end to end DevOps having planning, build &amp; release and required tools. Azure Cognitive and AI services is way ahead of other providers. In fact, Azure provides 29 API's for Cognitive Service which is a true value proposition and also a sign of Innovation. </font><font size="2"><strong></strong></font></p><p><font size="2"><strong>4</strong></font><font size="2"><strong>) Cross Platform:</strong> Using VS tools for Xamarin, developers can build native Android, iOS and windows apps sharing 90% of the code across device platforms. Non developers can also build scalable applications for desktop and mobile on top of cloud &amp; On Premise services using PowerApps (no coding skills required). </font><font size="2">
</font><font size="2"><strong></strong></font></p><p><font size="2"><strong>5) Productivity &amp; Tools: </strong>Azure offers unparalleled developer productivity tools for PaaS Development with Visual Studio through which one can even step into remote codes in few mins(remote debugging).&nbsp; </font></p><p><font size="2">
</font><font size="2">Do you still believe as a burden? </font></p><p><font size="2">#StayLearning..</font></p>]]></content:encoded>
    </item>
    <item>
      <title>[Linux] LFCS prep and easy way to remember commands</title>
      <link>https://docs.microsoft.com/archive/blogs/maheshk/linux-lfcs-prep-and-easy-way-to-remember-commands</link>
      <pubDate>Mon, 23 Oct 2017 00:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Maheshk [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/maheshk/?p=2655</guid>
      <description><![CDATA[I’m into LFCS certification preparation for the past one year on and off. It is not an easy job for...]]></description>
      <content:encoded><![CDATA[<p><font size="2">I’m into <a href="https://training.linuxfoundation.org/certification/lfcs"><u><strong>LFCS</strong></u></a><strong> </strong>certification preparation for the past one year on and off. It is not an easy job for a beginner to digest the information spread across the <a href="https://training.linuxfoundation.org/images/pdfs/LFCS_Domains_Competencies_V2.16.pdf">topics</a> ranging from basic commands to virtualization. </font></p><p><a href="https://msdnshared.blob.core.windows.net/media/2017/10/image1060.png"><img width="482" height="189" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/10/image_thumb1017.png" border="0"></a></p><p><font size="2">I started as a Newbie to Linux, today having a considerable knowledge on Linux environment but still struggling to use the right switch key at first shot. Very important thing is, we keep forgetting the commands if there is no continuity in preparation especially when not using Linux as primary OS for day work. </font></p><p><font size="2">One thing I learned during this time period is, “there is always more than one way to do things in Linux”.&nbsp; That’s the spirit keep motivated me to go strong for the exam. My learning started with deploying 1) Azure <a href="https://blogs.msdn.microsoft.com/maheshk/2016/06/30/how-to-rdp-into-azure-linux-machine-using-xrdp/"><u>Linux VM prepared for RDP</u></a>, then 2) dedicated laptop installed using bootable USB (thanks to <a href="https://rufus.akeo.ie/">Rufus</a>), 3) then formatted ubuntu and installed Centos to get a feel 4) Again back to Ubuntu </font></p><p>[embed]https://twitter.com/MahesKBlr/status/779008726908833792[/embed]</p><p><font size="2">5) then Redhat machine in Azure 6) then tried bash on windows (<a href="https://msdn.microsoft.com/en-us/commandline/wsl/install_guide">WSL</a>), 7) tried Hyper-V manager to have Ubuntu and Centos but finally heavily using Azure Ubuntu Linux for giving my exam. After all this trial and error, now </font><font size="2">I can talk about the variants <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/2017/10/wlEmoticon-smile9.png">, understand any command and its purpose, can write a small bash script for a cron job, manage system services, install the missing pieces and prepare a machine etc. </font></p><p>[embed]https://twitter.com/MahesKBlr/status/917053415502397441[/embed]</p><p><font size="2">Now, coming back to the topic, It is not always easy to remember and recollect the Linux commands with various switches. It needs a lot of practice and continuous hands on to get memorized otherwise we will be managing with 10-15 commands with lots of trial and error. Now, I love my terminal windows than Linux IDE. I stopped spending time installing GUI or RDPing, I manage to live with only commands for anything. It forced me to think through deep enough and also gives me a various flavor to choose from. Here today, I would like to leave with these 3 Linux tools which would help us any day to get the right commands to use. Later we can deep dive man pages for switches. </font></p><p><font size="2"><strong>tool #1:-</strong> <a href="https://www.linux.com/learn/intro-to-linux/2017/7/simplify-linux-command-line-fish-shell"><font><strong>Fish</strong></font></a> is an awesome tool help us to get an autocomplete for the entered command with all possible options. It actually takes to the fish shell, where we need to enter the partially broken commands to get variants.</font></p><p><font size="2"><a href="https://msdnshared.blob.core.windows.net/media/2017/10/fish.png"><img width="719" height="260" title="fish" alt="fish" src="https://msdnshared.blob.core.windows.net/media/2017/10/fish_thumb.png" border="0"></a></font></p><p><font size="2"><strong>tool #2:-</strong> <a href="https://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x1712.htm"><font><strong>History</strong></font></a> command is the one which most frequently use to recollect the command switches. I highly recommend making use of this when we copy paste certain commands from net for the first time to make it work then later we forget the steps we arrived. </font></p><p><font size="2">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/2017/10/history.png"><img width="455" height="278" title="history" alt="history" src="https://msdnshared.blob.core.windows.net/media/2017/10/history_thumb.png" border="0"></a></font></p><p><font size="2"><strong>tool #3:-</strong> <a href="https://www.linfo.org/apropos.html"><font><strong>Apropos</strong></font></a>, this one is a personal favorite. When I doubt, run apropos command to get all the possible nearest commands. Many times we know there will be a command way to manage database say mysql but won’t know the full command in hand to try. This command fills the gap by providing all the list containing the search keyword. </font></p><p><font size="2"><a href="https://msdnshared.blob.core.windows.net/media/2017/10/apropos.png"><img width="618" height="237" title="apropos" alt="apropos" src="https://msdnshared.blob.core.windows.net/media/2017/10/apropos_thumb.png" border="0"></a></font></p><p><font size="2">Few other useful commands for productivity, (1) tmux </font></p><p>[embed]https://twitter.com/MahesKBlr/status/907280156380692480[/embed]</p><p><font size="2">(2) apt-cache search &lt;pckg name&gt; (3) sysctl (4) find (5) grep (6.) tree (7) watch elinks (8.) ps (9) top/htop (10) tar. </font></p><p><font size="2">Let me know your favorite ones <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/2017/10/wlEmoticon-smile9.png">. </font><font size="2"><br></font></p>]]></content:encoded>
    </item>
  </channel>
</rss>