Learning Blockchain

A few days back, when I was looking at my LinkedIn profile, I got a recommendation to learn “Blockchain Basics”. Given that the course was for an hour I could finish it. Though it was a good introduction, the course made me curious (of course left me confused leaving so many questions :P). Today I happened to watch a video by Mark Russinovich (CTO of Microsoft Azure) which gave a very good technical information of Blockchain, bitcoin, ethereum, COCO framework etc.

This blog is to share pointers to the getting started with blockchain.

  1. Introduction to Blockchain by Mark Russinovich – This is definitely a must watch video.
  2. Blockchain basics on LinkedIn – This got me started with Blockchain.
  3. How did Satoshi manage to mine bitcoins as the first user – Thank god there is an answer to this. I had the same question as you need to do some proof of work for transactions to earn bitcoins (as per my initial understanding). This post gave an answer how you can earn.
  4. What is a smart contract? – This is a pretty well written blog. I liked the analogy with buying movie tickets which made it easier to understand the concept better.

I should probably find more time to explore ethereum and solidity and try out to create a small ICO on my private cluster as shown by Mark in his video.

Blockchain is pretty exciting.

 

Advertisements

Getting started with Kubernetes

I have started understanding Kubernetes aka k8s as part of my work recently and went through some learning. I will share some high level notes which I have made while reading through different content and also the links to resources for a quick getting started.

Pre-req:

  • Good to have a high level understanding of containers (Docker etc)

Learning links:

  1. Kubernetes tutorial – this is the first link I went through to get a very high level overview of what Kubernetes is and how do we go about using different commands on the k8s cluster.
  2. Scalable Microservices with Kubernetes – this is a very good course on Udacity which gives very good overview. This same course is referenced from the above tutorial.
  3. Using Visual Studio Team Service to deploy applications to Azure Container Service – This blog talks about using VSTS Release Management solution to automate deployments to K8S
  4. A very good site to understand few internal details about K8S, worth the read – Julia Evans Kubernetes

Learning notes:

  • In simple terms you can consider k8s as a platform for containers cluster management.
  • A k8s cluster has a master node – which manages the cluster and a set of other nodes – which are workers that run the applications. For a production traffic scenario, k8s cluster should have atleast 3 nodes
  • Key terms in k8s – Deployment, Pods, Volumes, Services, kubelet, ConfigMaps/Secrets etc
  • minikube is a light weight k8s implementation that creates a VM on local machine and deploys a simple cluster with one node.
    • While following the Hello Minukube section on windows, you can run “minikube docker-env” instead of “eval $(minikube docker-env)“. Once the “minikube docker-env” command is executed it prints a message with the subsequent command (a for loop) to be run to set certain variables, ensure to run that step
  • kubectl commands are used for all the cluster management

Lets understand the key terms:

  • Deployment: 
    • is a declarative way to say what goes where in the cluster
    • use ReplicaSets to maintain enough number of Pods as the desired config state
    • used to enforce the desired state as provided by the user
    • if a node goes down, deployment takes care of creating a new pod and place it into the available nodes
    • create a ReplicaSet to handle pod creation/deletion/updation
    • own and manage ReplicaSets
  • Pods:
    • Logical Applications
    • each pod has one more containers. When you have apps that have hard dependency on one another, you package them to the same pod
    • Shares volumes. Volumes live as long as the pod lives
    • has a shared namespace – help in containers to communicate with each other
    • each pod has one IP address
    • containers in a pod can communicate with each other using inter-process communication (IPC). Containers in different pods have different IPs, hence can’t communicate using IPC
    • Why Pods?
  • Volumes: 
    • you can consider them as shared storage
  • Kubelet:
    • each node has a kubelet
    • manages the pod and containers running on it
    • its an agent which helps the nodes to talk to master
  • Services:
    • defines logical set of pods and policy by which to access them
    • provide persistent endpoints for pods
    • enable loose coupling between pods
    • are defined using YAML/JSON
    • set of pods targeted by a service is determined by label selector
    • pod’s IPs are not exposed out of cluster without service
    • services have a integrated load balancer to distribute network traffic to all pods
    • you can expose you pods/containers using “kubectl expose” command
    • While creating the service following the “Hello Minikube” Section, set the type as NodePort in case the LoadBalancer type doesn’t work.

Kubernetes is very actively worked on and many things are rapidly changing. There is an interesting talk from Deis (PaaS on Kubernetes), in which it is mentioned that in CNCF “Kubernetes  has been offered as a seed technology” – this also signifies that k8s is a good technology to invest your time to learn.

PS: Azure has a very strong support for containers, container registry, different orchestration platforms like Docker Swarm, DC/OS, K8s. Do try out things on Azure and keep learning.

Electricity transfer process for a new flat in Hyderabad

(First non-technical post on my blog ;-))

This post is to highlight the simplicity in the process of transferring electricity bill to an individual’s name from Builder and encourage people to avoid using an agent help (especially avoiding the special pricing part). The overall process hardly take an hour and is cost effective.

Below are the steps and required documents:

  1. Take a printout of the document shared here, this document needs to be signed by your builder. Fill all the required details before giving the document to the builder
  2. Carry a Xerox of your latest EC. (not more than 3 months old). It takes about 250 Rupees to get a new EC. You would receive the EC within 4 days. You can save this 250 if you have a latest one.
  3. Take 2 copies of the Sale deed on both sides. One is needed for address change and the other for title change.
  4. 2 Passport size photos
  5. ID Proof
  6. Latest electricity bill
  7. You would need a Rs.100 Title Change Indemnity bond.
  8. You need to pay a Rs.25 challan
  9. Link document (both sides) if flat is land owner’s flat
  10. Rs.10 NOC by the joint owner, in case your flat is jointly owned.

Go to the near by electricity department with the above mentioned documents. There are enough shops around the electricity board where you can get bond mentioned in point 7 (even though it is 100/-, you would end up paying 160 or so depending on the shop). Usually there would be someone around in the board who would help you organise your documents and help in submission. I found the staff in Kukatpally electricity board really helpful and they didn’t expect any money.

In this process, you would maximum spend an amount of 500/-. If you try to go through a broker you would pay around 1200/- to 1500/- (it can vary depending on your relation and negotiation). The difference here might not be high but the point is if we understand the system, we can appreciate how things are organised, else we keep cribbing about bribery. Even if couple of folks avoid paying additional prices after reading this, I would be happy 🙂

Thanks!

Web debugging tip : Using Fiddler to load local files instead of remote files

I was recently asked a question by one of my team mates if there is a way to load a file locally instead of the remote file, keeping rest of the files served from the remote server. My instinct said it should be very well possible to do it. I did a quick search and found an interesting feature in Fiddler, it is named “AutoResponder”.

autoresponder

 

Here is a good video by Eric, the creator of Fiddler which talks about it

As shown in the video, you can create a rule which can say – given a request which matches a pattern pick a local file. After adding the rule, do select “Enable rules” for the rules to take affect. Make sure to select “Unmatched request passthrough”, else all the requests which doesn’t match the rule will fail.

You can also do little advanced things using FiddlerScript. For example: if you want to pick a local file which matches a pattern, you can write code in OnBeforeRequest() and specify the pattern match by your self.

And in order for these rules to work, you shouldn’t bundle your files for obvious reasons 🙂

Continuous Delivery to Azure App Services using VSTS Release Management

Our team has been working on a very important feature addition to Azure App Service for the last couple of months which went Preview in the recent connect() 2016 event. I have built most of the UX and back end for enabling this experience.

This is feature is about how to make it easy for a customer to configure Continuous Delivery/Deployment from the new Azure Portal for a given App Service. The Source code can be either in VSTS (currently only Git Repos are supported) or Github and the applications can be either ASP.NET or ASP.NET Core.

A detailed blog post can be found here – Continuous Delivery to Azure App Service

A video of the demo shown at the Connect() event by Brian and Jamie can be found below (You can skip to 55 minutes to start seeing our experience :))

Do try out the new feature and share your comments.

https://channel9.msdn.com/Events/Connect/2016/ALM-DevOps-with-Brian-And-Jamie/player

Load Testing Azure WebApps from Microsoft Azure Portal

I am excited to share about a great feature added to Azure Web Applications experience in Azure Portal, which is the capability to do Load Testing of the web application right from the Azure Portal. There is a detailed blog post on Visual Studio MSDN Blogs about this announcement – Announcing Public Preview for Performance/Load Testing of Azure WebApp. Similar announcement on the Azure blog – Public Preview of Performance Test on Web and Mobile App.

Here are two videos on the topic on Channel9 (Do watch them):

  1. Azure Friday Video on Performance Testing Web Apps
  2. And follow up video on doing Advanced scenarios from Visual Studio Enterprise

I know what you are feeling, the experience and the User Interface looks just brilliant, right?. Yes, Its brilliant. There has been a great effort behind it building this experience :). There were good challenges and great great learning as well.

And I do think you would be interested in understanding how is the new Azure Portal being built. There is a very good blog from Justin Beckwith which explains this stuff perfectly – Under the hood of the new Azure Portal. I recommend this as a must read blog to know about the new portal. Make sure you watch Steve Sanderson video as well, its really cool.

Please do try out the new feature and share your valuable feedback.

Question and Answers.

Question: How to use an existing Visual Studio Online account work with the new Load/Performance Test Experience in Azure Portal?

Answer: Your Visual Studio account should AAD backed. To know if you account is AAD back you can go to the account settings and figure if it AAD backed. Else you can follow the link provided there 

There is a blog post which should make things easy: Link Visual Studio Account to Azure

Question: [A very very rare scenario] I am facing issue setting an account like mentioned below. How to unblock my self?

SadCloud

Answer: You shouldn’t be seeing this at all. But there is a very negligible chance you might face this. In such cases, you can click on the gear button at the top right corner of the Azure Portal that takes you to the “Portal Settings”. Here you can click on the “Discard modifications” button and things should start work.

Gear

Settings

The impact of this change is that it would clear any user settings in the Azure Portal like the pinned tiles on the home page will be cleared and specific user settings that are customized would be reverted and portal would be started afresh. Please note that it would not clear any application data.

Roslyn – The .NET Compiler platform

Roslyn is the .NET Compiler Platform which provides open-source C# and Visual Basic compilers with rich code analysis APIs. Roslyn exposes modules for syntactic analysis of code, semantic analysis, dynamic compilation to CIL, and code emission

I heard about Roslyn during one of the Hackathon events but didn’t get a chance to explore it till couple of days back. As part of the recent Hackathon, I got a chance to work on a project which needed Roslyn help to make my work quick and easy. I was amazed at the easy at which we can use the compiler service. This tutorial helped me to quickly get on track, thanks to the author – Learn Roslyn Now. The same author have a FAQ section which gave me a path to many of my requirements for the project like given a particular piece of code in a workspace how do I find all the references across the solution etc etc.

This Hackathon was a great learning and a great fun. The most memorable part being demoing this project to one of our CVPs :). I should be very thankful to one of my team mate for the idea!

Do read about Roslyn and get amazed 🙂