Friday, May 23, 2014

Benefits of "Being Agile" for an organization

One of the biggest benefits of "Being Agile" is that it helps you increase your revenue.
Read on to find out how.

Customers needs change with time. Thus, it is important to have the customer engaged throughout the lifetime of the project.

If the requirements are fixed at the start of the project, and the project is finished within the budget and schedule, but it does not deliver what the customer wants (at that point in time), we could lose the customer or need to incorporate the new changes requiring a change in budget/time.

Agile helps in building customer value and empowering the employees.
Thus we end up getting a satisfied (and loyal) customer and happier employees.
Both of the above lead to successful projects which lead to better revenues.



Still not convinced?

What are the most common problems that we see in a software development project:
  • Requirements may not be crystal clear
  • Requirements can change with market conditions
  • Schedules become tight since the initial information (on which the schedules are based) was not enough
  • Too many processes
  • Testing is at the fag end since schedules are tight

If you also face any of the above issues, Agile will help you out. Are you sure? Yes.

"Being Agile" will help to:
  • Enhance customer value (there should be continuous customer engagement to ensure we align and adapt with the changing needs of the customer)
  • Can help to manage change and improve project visibility
  • Can help to improve end product quality
  • Improve employee productivity
    •   Provide a work environment where they feel ownership of the work and can make their own decisions (This improves morale and productivity)

Customer engagement:

Key focus of Agile is to deliver customer value.
Value is the benefit a customer will get from your product or the functionality if you align with their needs.

Customer value = Customer needs + On Time delivery + Meeting budget costs

As mentioned above, there should be continuous customer engagement to ensure we align and adapt with the changing needs of the customer.
Needs of a customer change and so do market conditions.

Traditional waterfall methods take up a fixed set of requirements up front as a phase.
The longer the time of phasedelivery (from requirement gathering), the  higher is the risk of delivering something which customer may not want/need (due to changing requirements and/or market conditions).



In Agile, there is continuous customer engagement so that requirements are continuously validated during each iteration review (Sprint review).
Due to continuous feedback loop, there should be a narro gap in what was delivered and what the customer needs at that time.
The narrower the gap, the more happy the customer, the more customer loyalty and revenue for an organization.


Employee Engagement

This is a very important aspect for "Being Agile". How? Read on.

Employees are an organizations critical assets. If the employees are disengaged, the productivity suffers. However, when they are engaged, they bring motivation, innovative ideas, go the extra mile.

Levels of employee engagement/empowerment

1. Encourage employees to play a more active role in their work
2. Ask employees to become more involved in improving the ways things are done
3. Enable employees to make better and bigger decisions

Thus we work on the three aspects -Encourage, Involve and Enable.

Agile teams are self-organizing. There is a common goal and work is interdependent. Collaboration is the best way to achieve the goal. Employees increase their share of ownership (accountability and responsibility).

Companies gain from such strong employee commitment and performance.

The below picture should help to make a point to the above theory


There will be more articles on "Being Agile". Have fun!!!

Wednesday, May 21, 2014

Setting up and running Hadoop (hadoop-1.2.1) on Windows 7 (64 bit) [Single node cluster]

I will try to list the steps (with screenshots) of setting up hadoop (stable release 1.2.1) on Windows 7 (Single node cluster).

For an introduction to Hadoop, refer the following article

We will need the following for the same:
  • JDK 1.6+ installed on Windows box
  • Cygwin (with openssh)
  • Hadoop 1.2.1

Installing JDK 1.6+
I have installed JDK 1.7.0_55 for the setup.
This can be installed from the Oracle JDK download page @ http://www.oracle.com/technetwork/java/javase/downloads/index.html

After setup, put the JDK folder path entry in the Environment variables (system) in a new JAVA_HOME field.
[Computer right click > Advanced System Settings > Environment Variables > New > Put JAVA_HOME entry and value as  -- D:\Java\jdk1.7.0_55 (where your JDK is installed)]




Installing and setup Cygwin (with openssh)
Refer following article for step by step guide: http://mylearningcafe.blogspot.com/2014/05/installing-and-seting-up-cygwin-with.html

Installing and setting up Hadoop
  • Download hadoop-1.2.1 from http://mirror.metrocast.net/apache/hadoop/common/hadoop-1.2.1/ to your local machine
  • Use winzip to get the .tar file.
  • Use winzip to get the hadoop folder extracted. Place the folder in the Cygwin directory under <Cygwin_install_dir>\home\<user>
  • e.g. I have installed under C:\cygwin64\home\nlachwan. Thus my hadoop folder is C:\cygwin64\home\nlachwan\hadoop-1.2.1

Edit <Hadoop Home>/conf/hadoop-env.sh to set Java home
export JAVA_HOME=D:\\Java\\jdk1.7.0_55 (note the double back slash \)

Update <Hadoop Home>/conf/core-site.xml. with the below xml tag to setup hadoop file system property<configuration>
<property>
<name>fs.default.name</name>
  <value>hdfs://localhost:50000</value>
</property>
</configuration>


Update <Hadoop Home>/conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
  <value>localhost:50001</value>
</property>
</configuration>

Create two folders "data" and "name" under /home/<user> and do chmod 755 on both.
e.g. /home/nlachwan/data and /home/nlachwan/name


Update<Hadoop Home>/conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.data.dir</name>
<value>/home/nlachwan/data</value> <<Note: please put your username instead of nlachwan>>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/nlachwan/name</value> <<Note: please put your username instead of nlachwan>>
</property>
</configuration>


Note: You could do dos2unix for the above files (if edited in Windows). However, it didn't makeany difference for me (I didn't do it).

After setup, put the hadoop folder path entry in the Environment variables (system) in the PATH

[Computer right click > Advanced System Settings > Environment Variables > PATH entry and value as  -- C:\cygwin64\home\nlachwan\hadoop-1.2.1\bin (where your hadoop is installed)]


Format HDFS:

In the cygwin terminal, execute hadoop to confirm its working

 nlachwan@NLACHWAN-IN ~
$ hadoop
Warning: $HADOOP_HOME is deprecated.

Usage: hadoop [--config confdir] COMMAND
where COMMAND is one of:
  namenode -format     format the DFS filesystem
  secondarynamenode    run the DFS secondary namenode
  namenode             run the DFS namenode
  datanode             run a DFS datanode
  dfsadmin             run a DFS admin client
  mradmin              run a Map-Reduce admin client
  fsck                 run a DFS filesystem checking utility
  fs                   run a generic filesystem user client
  balancer             run a cluster balancing utility
  oiv                  apply the offline fsimage viewer to an fsimage

  .
  .
  .


In the cygwin terminal, execute hadoop namenode -format



Execute stop-all
Execute start-all
If you see an ssh connection refused error, follow all the steps from "Setup authorization keys"

Once hadoop is running, test hadoop file system by executing "hadoop fs -ls /"



You can also check the following URLs:
http://localhost:50070/
http://localhost:50030/





Your Hadoop is setup. Have fun !!

Installing and seting up Cygwin (with openssh)


This article is a pre requisite for Hadoop setup on Windows 7 (single node setup)

Install cygwin from the following URL: http://cygwin.com/install.html
As you go ahead with the install, select the SSH package under net (refer screen shot)




Put the cygwin bin folder path entry in the Environment variables (system) in the PATH field.
[Computer right click > Advanced System Settings > Environment Variables > Edit Path > Put PATH entry for cygwin -- C:\cygwin64\bin]


Setup SSH

  • Open cygwin prompt (Start > Cygwin terminal)
  • Execute ssh-host-config
  • When asked if privilege separation should be used, answer no.
  • When asked if sshd should be installed as a service, answer yes.
  • If asked, enter ntsec for CYGWIN environment variable.
  • In the screen shot below, I have masked the password



 Note: Password is masked in below screen shot

Start SSH
  • Right click on My computer.
  • select Manage from the context menu.
  • Open Services and Applications
  • Select Servicesitem
  • Right click on CYGWIN sshd
  • select Start up: Automatic



Setup authorization keys
  • Open cygwin prompt (Start > Cygwin terminal)
  • Execute ssh-keygen
  • Just press enter

  • Once completed, execute cd ~/.ssh
  • Create an RSA key pair with an empty password. You have to enable SSH access to your local machine with this newly created key.
  • Execute cat id_rsa.pub >> authorized_key
  • Execute ssh-host-config -y
  • Execute cygrunsrv -S sshd
  • Once completed, test ssh by executing ssh localhost


Setup Java home

Open the .bash_profile (in /home/<user>) file and set the JAVA home
export JAVA_HOME=D:\\Java\\jdk1.7.0_55  [Note that we have 2 backslash \\]

Open a new terminal and type
echo $JAVA_HOME

You have successfully set up Cygwin. Have fun !!

Tuesday, May 20, 2014

vt-x/amd-v hardware acceleration is not available - VM Issue on Win 7 64 bit

We get this error "vt-x/amd-v hardware acceleration is not available" while trying to run VM in Win 7 - 64 bit

Solution:
  • Restart the computer/laptop
  • Go to the BIOS (in Lenovo hit Enter and then press F1)
  • Look for security > Virtualization
  • Enable the options for Hardware Acceleration
  • Restart the computer/laptop
  • Reboot the VM image

Saturday, May 10, 2014

EBS 11.5.10.2 applet not working in Win 7

If you had EBS 11.5.10.2 with JDK 1.4_02 and if you were using Win XP, it may not work anymore after support for Win XP has been removed.

To make it work, there are two solutions:

  • Run EBS 11.5.10.2 in XP mode on Win 7 (uses Jinitiator)
  • Upgrade JDK to latest version

Option 1. Run EBS 11.5.10.2 in XP mode on Win 7 (uses Jinitiator)

Download and install XP Mode on Win 7 using the following URL:
http://windows.microsoft.com/en-us/windows7/install-and-use-windows-xp-mode-in-windows-7
Follow all the steps as mentioned.
  • Once installed, open the XP mode.
  • Connect to SSL VPN in the new VM (XP mode)
  • Connect to http://<domain_url>:<port#> and login
  • Go to some responsibility
  • Click on some link that opens an applet
  • It will take a while and ask you to install Jinitiator (oajinit.exe)
  • Once installed, applet will start working.

Option 2. Upgrade JDK to latest version

Follow the following three articles.
  • Using J2SE Version 6 with Oracle E-Business Suite 11i (Doc ID 401561.1)
  • Enhanced Jar Signing for Oracle E-Business Suite (Doc ID 1591073.1)
  • Recommended Browsers for Oracle E-Business Suite 11i (Doc ID 285218.1)

Wednesday, May 7, 2014

Introduction to Cloud Computing - Part 1.

This post will try to introduce one to the concepts of cloud computing.

What is cloud computing? What are the benefits?

Think of a business which has a website.



As the audience grows, the site will become slower and slower.
To increase the performance and speed, one can add more servers (hardware).



One can keep on adding servers but this requires a lot of money and time. Money is also spent on periodic maintenance.
Also, there could be seasons when the site may not be as active as other times. At that time, these extra servers are a liability.




What if one had an option to pay for the servers (the storage capacity) as they use and return them back as and when they did not need it?

Assume you need a sedan for an executive in your company.
To buy a sedan, one needs to fork out cash and also pay for the insurance and other things.
However, what if you need to buy a sedan for all executives of your company?

However, one also has an option to rent out a cab. You enjoy all the facilities of a sedan and pay only for the usage.








Cloud computing is like the cab service.
Pay for the usage.

Cloud computing allows users to run applications and store data online.
Scale up almost instantly. On demand!

Returning back to our first example of a company website.
In cloud computing, the company could host its website on a cloud and as the audience increases, it could get more hardware from the hardware supplier - on Demand.
It could also return the hardware when not needed and pay only for the usage.

One need not worry with the problems associated with the maintenance of the extra hardware, since the hardware is owned by another company (the supplier) and they are responsible for the same.

This series is continued in the next post: Introduction to Cloud computing - Part 2