Monday, August 15, 2016

HyperForm: A Practical Guide to Docker For Windows Administrators

Linux & Docker has succeeded in finding a place alongside Windows in many enterprise environments. More than ever before, Windows administrators need to be familiar with Linux & Docker and understand the relative strengths and weaknesses of the two platforms. Written for the Windows administrator, this guide provides practical information on integrating Linux, Docker, and Windows.
At the writing of this guide Docker container tech for Windows is in the Tech-Preview state. And it will take even more time for most of the official docker images to be available for Windows. 
In this guide, we'll be focussing on automation of the following workflows.

  1. Docker Containers running on top of Linux Virtual Machines.
  2. Linux Virtual Machines running on top of Hyper-V
  3. Windows Virtual Machines running on top of Hyper-V

First, let's quickly glance over Docker terminology and container lifecycle.
  • Image
    • Is a container snapshot just like in a virtualization world a VM checkpoint or a VM snapshot. 
    • Refer to docker image documentation for more details.
  • Repository
    • Provides a standard interface for storing and retrieving images. 
    • e.g. Docker Hub, Nexus, Artifactory,
  • Container
    • Wraps a piece of software (e.g. MySQL, IIS) in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries - Anything that can be installed on a server.
  • Container Lifecycle
    • Just like VM, container supports similar lifecycles states like Start, Stop, Restart, Pause, Snapshot, Destroy etc.

Secondly, It is important to use proper management products to administer Docker, Linux, and Windows environments. Having direct access to Hosts and Docker CLI gives unprecedented access with no access controls, policies, governance, and ability to support multi-tenancy.

A quick introduction to HyperForm (DCHQ) from HyperGrid - HyperForm is a Hybrid Cloud/Container Management platform.

  • Seamlessly works with Docker Ecosystem supports.
    • Docker Engine
    • Swarm
    • Docker-Compose
    • Docker-Machine
    • Docker-Volumes
    • Weave (Networking)
    • Repository etc

  • Seamlessly works with Hyper-V. 
    • Register a Hyper-V or Hyper-V Failover Cluster.

  • Build-in Orchestrator can provision Windows, Linux based VM's on Hyper-V.
    • UI based workflow for provisioning VM's.
    • Simplifies and introduces Cloud-Provider like discipline for "Instance Types".

    • Text Template based workflow for provisioning VM'

    • Build-In Ops Module can do real-time monitoring, scripting of both Windows, Linux VM's.

Governance & Access-controls
    • Seamlessly control which Users are entitled to provision VM on the registered Hyper-V.
    • Control what VM templates and blueprints are allowed.
    • Control whether a user can request custom VM.
    • Optionally enforce Approvals for VM requests.
    • Set Max VM's that can be provisioned on the Hyper-V.
    • Ability to set Custom Quota per user/groups.

Lastly, let's deploy Docker containers on provisioned VM's. Note: Multiple VM's can be grouped into a single Cluster which can optionally have an overlay network (Weave, Swarm) for the container to discover each other and communicate across hosts.

  • The Cluster/DataCenter view in HyperForm

  • The Library view in HyperForm

  • Customize and deploy "Wordpress with MySQL" image.

  • Deployed Application and Management options.
    • Seamlessly real-time monitoring, and alerts of containers
    • In-browser Terminal
    • Scale-out, Scale-in individual nodes
    • Update, Refresh running container.
    • Access to logs, timeline etc


Containerizing enterprise applications is still a challenge mostly because existing application composition frameworks do not address complex dependencies, external integrations or application life-cycle management tasks post-provision.

HyperForm, available in hosted and on-premise versions, addresses all of these challenges and simplifies the containerization of enterprise applications through an advanced application composition framework that extends Docker Compose supporting
  • advanced plug-ins that can be invoked at more than 20 different lifecycle stages to enable service discovery, on-the-fly containerization and application storage automation, and
  • data injection to support complex application dependencies.

To run & manage the simple Docker ASP.NET "Hello MVC" and “Hello Web” applications on 18 different clouds and virtualization platforms (including HyperGrid, vSphere, OpenStack, AWS, Rackspace, Microsoft Azure, Google Compute Engine, DigitalOcean, IBM SoftLayer, etc.), make sure that you either:

Friday, December 18, 2015


In small business owner is the dominant personality.
To max potential of business max to potential of owner
If business growing/stagnant its direct reflection of leadership

Biggest Obstacle
  If someone told you they would pay you 1million if you get 20 customers?
    - Apathy - is the biggest obstacle
  How to batter apathy
   Choice, Courage, Vision
  How to maximize potential
   max your time, effort, potential
1. Time
  Our challenges
     distracted, easy,
  Determine value?
    profit activity generates
    achieve business vision
    next level

 Pareto Principle
 Value   Input  Output  Return
  A         1%      50%       5000%
  B         4%      64%       1600%
  C        20%     80%         400%
  D       80%      20%         25%

If you do A, B, C for next 30 days, where will you be?
How to get high-value task done?
  - Identify, Scale-to-magnify & consistently get-done.

What task brought the most business?
   Deploy apps magically using compose
General high valued tasks
  - Developed lucrative ideas
  - Referral, partnerships
  - Events
  - Strategies

Tag tasks as A B C D
  - Delegate, Defer, Delete, Design out

2. Maximize Efforts?
  Upgrade peer group,
  expert in one thing
  decision that really count

Upgrading your peer group
Level                    1                 2             3              4        
Effectiveness  Ineffective Somewhat Effective Highly-Effective
Seek out the advice of the others

Be an expert and be a leader

  On the fly decisions - win/loss
  Thought out pre-established criteria - most win, less loss

3. Potential
   - Scale strengths and shore up weakness
   - Surround with people who wants to grow
   - Measure the progress


One Page Startup Validation Plan

Problem People want fixed:

Product/Service Solutions:

Target Market:

Basic Needs:

Big Benefit:


Current marketplace prod/srvc

Whats Missing

Preliminary research

Idea Validation Formula

Thursday, December 17, 2015

How to Turn Your Idea Into a Money Making Business Right Now

Adv of online business ?

   1. Low Startup Capital
   2. Always Open for business!
   3. Work Anywhere You Want!
   4. Access to Global Market!
   5. Cost Saving!

Four Costly Mistakes to Avoid!
  1. Spending too much on website!
  2. Spending too much on inventory!
  3. Implementing marketing techniques blindly (track results)
  4. Not doing a proper research!
Types of online business
  1. Selling physical products
  2. Selling virtual products
  3. Selling services (Offer service help)
  4. Selling other people's products or services
  5. Selling advertisements

How-to achieve online success!
  1. Create awareness
  2. Educational (Subscribe to mailing list)
  3. Validate solution
  4. Engage sales

Market Research
  1. Find best sellers
  2. Can you add more features or customer service to differentiate.
Selling Services

Sunday, November 22, 2015

Linux Essentails

Linux directory structure

 /                          "Root" "Slash"
/bin                      Binaries files or executable files
/etc                      Configuration files
/home                  User home directory, separate user data (pics etc)
/home/shannan   User Shannan home directory
/root                    Home directory for root account.
/opt                     Third-party software (google earth gets installed)
/tmp                    Temporary space (OS cleans these directory at boot time)
/usr                      User related programs lives
/var                     Variable data (logs files). Things that change often
/cdrom                Mount point for CD-ROM
/boot                   Files needed to boot OS
/lib                      System libraries
/lost+found        Used by the filesystem keep recovered files after check has been performed
/mnt                   Used for mounting external file systems
/proc                  Info about running processes
/sbin                  System Administration binaries
/selinux             Display info about SELINUX
/srv                    Contains data which is served by the systems
/srv/www          Webserver files
/srv/ftp              FTP files

$   typical user prompt
#   root user prompt

Root user can do all things
Normal user account can do subset of things

Basic Linux Commands
  commands are case sensitive
  ls, cd, pwd, cat, echo, man, exit, clear

man ls --> space, enter, g, G

Environmental Variables
  Storage location with name/value
  Name typically uppercase
  Print value $VAR_NAME
  Locate command "which ls"

.     current dir
..     parent dir
cd - previous dir
./     execute command in the current dir
/opt/command/cat    executes cat file in the dir

Creating/Removing directories
mkdir [-p]  directory - Create dir
rmdir [-p]  directory  - Remove dir
rm -rf        directory  - Recursively remove all

ls -l
 permissions links user groups size modified-date name
 -  file
 d dir
 l  symbolic link
 r  read
 w write
 x  execute
 three sets of permissions user, group, other

  chmod ugao (user group all other) +(add) -(remove) =(set) x(execute) file

find command
 find path expression

find / -iname  dchq  (ignore case)
find / -iname  *dchq  (ignore case)

tail -50 filename (print last 50 lines)
tail -50f filename (print last 50 lines and follows the file)

vi has modes (command, insert, line)
command (h j k l)
insert (i)
line (:no) :$ last line
shift + 6 is beginning of line
shift + $ is end of line

c create
x extract
z compression
f file
t list
v verbose

tar cf bkp.tar abc
tar tf bkp.tar (prints files)
tar xf bkp.tar (extracts file)
tar zcf bkp.tar.gz or bkp.tgz


du -h

IO Redirection
Output redirection
ls -lrt > files.txt
ls -lrt >> files.txt (appends)
ls -lrt 1> files.txt  (0 is standard input, 1 output, 2 error)
lss -lrt 2> files.txt (standard error)
lss -lrt 2> /dev/null (standard error)
ls -lrt 1> files.txt 2>&1 (standard error is also going to files.txt)

input redirection
sort < files.txt

grep (search file contents)
grep abc file.txt
grep -i abc file.txt (ignore case)

crontab -l
crontab file

su (switch user)
sudo (super user do) execute command as other user

Packages & Package Managers

package is collection of files for an application
Package Managers - installs, updates, remove packages
RPM (RHEL, CentOS, Oracle Linux, Fedora, Scientific Linux) Redhat Package Manager
yum search
yum install yum install -y
yum info
yum remove

rpm -ql (list)
rpm -ivh (install)
rpm -e (remove)

DEB Distro
apt (Advance packaging tool)

apt-get install -y
apt-get remove -y

Thursday, October 2, 2014



# book summary


  - Chris Sims
  - Hillary Louise Johnson

Scrum Definition: >
  Is a framework designed to help small teams of people develop complex products,
  the framework is not technical and can easily adapt the tools and practices to
  other industries.

more: >
  A Scrum team typically consists of seven (+-2) people who work together in short,
  sustainable bursts of activity called sprints, one of the mantras of scrum is
  “inspect and adapt” both the process and product.

# chapter 1: Roles
  - Product-Owner
  - Scrum-Master
  - Team-Member

  - looks at ROI (product vision)
  - controls priority of work
  - responsible for user stories (business interests, customer, acceptance criteria, answer questions)

  - facilitator (between team and stockholder)
  - team impediment resolver

  - provides estimates
  - completes user stories

  - few: less skills to finish the job
  - more: communication overhead

# chapter 2: Artifacts
Scrum-Artifacts (tools):
  - Product Backlog: Todo List of prioritized work items or user stories (e.g. features, bugs, doc etc)

  - todo list (current sprint)

  - team deliverable unit
  - contains one or more task.
  - user (customer or owner to who the story will benefit)
  - description
  - value
  - estimate (size)
  - acceptance criteria (how to know that it was implemented correctly)

  - person deliverable unit

  - represents time(x-axis) and scope(y-axis), i.e. scope reduces with time.

  - visible to all
  - contains todo, doing, done items
  - helps team and stakeholders see progress

Done-Definition: Team should define the definition to avoid confusion (code complete is not done may require other task like testing and releasing etc)

# chapter 3: Cycles
  - Sprint-Planning  (2 hrs)
  - Daily-Scrum       (15 mins)
  - Story-Time         (1 hr)
  - Sprint-Review     (30 mins)
  - Retrospective     (90 mins)

  - commit to stories and tasks

  - tasks completed
  - task expect to complete
  - any obstacles
  - problems are solved out site the meeting

Story-Time: discuss and improve product backlog

  - show accomplishments to all including stakeholders
  - highlight any work not done
  - feedback

  - what went well
  - what did not went well.

Frequent-demo: inspect and feedback

  - Terminating a sprint half way is business decision.

Thursday, July 3, 2014

Introduction to Java 8: Lambda Expressions and Streams

- Ways of representing functions
- pre-built function building blocks
- Set of function composition methods

 - Wrappers around collections
 - map, reduce, filter, forEach
 - Lazy Evaluation
 - Can be made parallel

Lambda is not lisp
Stream is not Hadoop

Why Lambda's in Java
  Ability to pass functions around (Javascript, Lisp, Ruby, Scala etc)
  Functional approach proven concise, useful, and parallelizable

Java 7 version
String[] testStrings = {"", "", ""};
Arrays.sort(testStrings, new Comparator() {
   public int compare(String s1, String s2) {
      return (s1.length() - s2.length());

Lambda version
Arrays.sort(testStrings, (s1, s2) -> s1.length() - s2.length());

 - replaces anonymous inner class' single method
 - No type should be used (Type inferencing)
 - Parens optional for single arg (Parens omitting)
     button.addActionListener(e -> setBg(Color.RED));
 - can refer to local, instance variable
 - are not allowed to modify local variables
 - allowed to modify instance variables
 - this is outer class

  - tells compiler is a functional interface
  - only one abstract method
  - other's won't be able to add more methods, compile time check

Method References
 - E.g., Math::cos or myVar::myMethod


Stream methods
 forEach, map, filter, findFirst, findAny

how to make stream
 - Stream.of(val, val)
 - don't use int use wrappers Integer array

  - strm.toArray(EntryType[]::new)
  - strm.collect(Collectors.toList())
  - strm.collect(Collectors.joining(delim)).toString()


String[] arr = {"a", "b", "c"};

Double[] nums = {1.0, 2.0, 3.0, 4.0, 5.0};
        Double[] squars = Stream.of(nums).map(n -> n * n).toArray(Double[]::new);

Double[] nums1 = {1.0, 2.0, 3.0, 4.0, 5.0};
        Double[] squars1 = Stream.of(nums).filter(n -> n % 2 == 0).toArray(Double[]::new);

Optional squars2 = Stream.of(nums).filter(n -> n % 2 == 0)
                .filter(n -> n > 10).findFirst();

System.out.println(Stream.of(arr).reduce("", String::concat));
System.out.println(Stream.of(nums).reduce(1.0, (n1, n2) -> n1 * n2));

comma, space delimiter.
StringJoiner j = new StringJoiner(", ");
j.add("").add("") etc

Limiting Stream Size
limit(n) - returns a Stream of first n elements
substream(n) - starts with nth element

Comparisons - sorted, min, max, distinct

- Sorting by salary,filter(..).limit(..)
   .sorted( (e1, e2) -> e1.getSalary() - e2.getSalary())

- Richest employee,filter(..).limit(..)
   .max( (e1, e2) -> e1.getSalary() - e2.getSalary()).get()

Checking Matches - allMatch, anyMatch, noneMatch

Predicate, Function & BiFunction, Consumer, Supplier and binaryOperator