Archive for the ‘Software Development’ Category

Common Pitfalls When Developing Virtual Appliances

April 25th, 2012 No comments

A virtual appliance is a virtual machine preinstalled with operating system, middleware, and applications. It’s ready to run after a few configurations after powering up.

The benefit of delivering a virtual appliance is obvious – it offers better out of box experience due to simplified installation/configuration and complete isolation from other applications. The disadvantage is also obvious in that it potentially uses much more system resources than sharing a virtual machine with other applications. Like any solution, it’s all about when and how you use it with what for best results. This can be a long discussion by itself.

Random Thoughts on Software Design

April 16th, 2012 No comments

Three months ago, I wrote an article Random Thoughts on IT Automation. I think it’s a pretty good style for capturing ideas without worrying much about content organization and flow. So I decide to use it again on software design which I have been practicing and thinking for many years.


Recent Hot Topics in Software Development

April 15th, 2012 No comments

InfoQ, one of my favorite sites on software, recently posted an article Key Takeaway Points and Lessons Learned from QCon London 2012. If you missed the conference but are still interested in recent trends of software development, it’s definitely a great read.

I browsed through the article, and found several interesting points there including the comments on Spring framework that VMware bought in 2009. In the following, I just list a few interesting or surprising comments and tweets from the article. If you are interested who made the comments based on which session, just check the original article.

IT Infrastructure: A Software Perspective

April 8th, 2012 No comments

Weeks ago, ThoughtWorks published a new issue of Technology Radar compiled by its senior tech leaders. It has done a great job to track latest technology and market trends since 2010 (for archives, scroll to the bottom of this page).

Learning Netbeans Platform For Building Java Applications

April 2nd, 2012 3 comments

Recently I started to build a stand-alone Java application. The first thing I thought of was to use Eclipse, which I have been using since 2000. As you may know, the Eclipse family has a framework called Eclipse RCP (Rich Client Platform) for building standalone application. In fact, Eclipse IDE is now built on top of the Eclipse RCP framework.

vSphere APIs for Guest Operating System Management: What’s Special and When to Use It?

March 19th, 2012 13 comments

This is a wrap-up post of recent series on vSphere guest operating system management APIs. If you missed them, here are a few links to related posts: [Note: these are not related to the vSphere Guest API.]

How to Upload File to Guest Operating System on VMware

March 12th, 2012 31 comments

My last post explained how to download file from a guest operating system. Naturally this post is about how to upload file. After a quick sample code, I will discuss how to extend the capability of existing APIs that run program inside guest operating system. My next post will wrap up this series of guest related APIs in vSphere API.

Let’s take a look at a sample code: (To run it, first check out the simple prerequisites in a previous post)

How to Download File from Guest Operating System on VMware

March 11th, 2012 22 comments

In my last few posts I discussed how to use the Guest Operating System Management API to run program, set/read environment variables. From this post, I will talk about how to move files to and from a Guest Operating System, and advanced features like moving whole directory only implemented in the Guest Operating System Management API.

Set Environment Variables in Guest Operating System on VMware

March 7th, 2012 No comments

While reading my last post on reading environment variables from a guest operating system, you may wonder how to set environment variables. Don’t be disappointed if I tell you that there is NO direct support for setting an environment variable.

However, you have a workaround – use a command directly. Unlike reading variables, there is no standard ways to do it for different operating systems. You have to first figure out what type of operating system and then run different commands. For example, if you are targeting Windows family of operating systems, you simply run the following:

Read Environment Variables in Guest Operating System on VMware

March 6th, 2012 12 comments

My last post explained how to run, kill, and list programs in guest operating system on VMware. In that post, I mentioned that you can actually use the same API, GuestProgramDirector in particular, to read environment variables. I think the explanation is detailed enough for an implementation.

Still, a good sample provides more details. That is why I decided to write a quick sample just to show how to read environment variables. While trying the sample by myself, I did find more that I will discuss after the sample code.

Run, Kill, and List Programs in Guest Operating System on VMware

March 5th, 2012 25 comments

In my last article, I announced the Guest Operating System Management API for vSphere. As promised, I will write samples to show how to use the APIs. This post explains the GuestProgramDirector type with an example.

Let’s take a quick look at the following sample:

Announcing Guest Operating System Management API for vSphere

March 5th, 2012 13 comments

Having created a sample to run a program in guest operating system using GuestProgramManager, I started to write a similar one to show how to use the GuestFileManager. Compared with the GuestProgramManager, the GuestFileManager is much more complicated to use.

Java Code Style and Formatter

March 2nd, 2012 No comments

While writing samples for my book VMware VI and vSphere SDK, I developed a Java code formatter within Eclipse. Although there are several built-in formatters like Java conventions, Eclipse, and Eclipse 2.1, I still decided to create my own partially due to the special requirements by Prentice Hall, but mostly due to my personal flavor for Java code.

Chasing Moving Targets

February 8th, 2012 No comments

As John F. Kennedy put it, “everything changes but change itself.” This is particularly true in computer industry where things move faster than other industries. It’s further complicated when you also have dependencies that also move fast.

A good example is that your software project depends on another product which is also under development. Sometimes we call it synchronous development. The payoff could be huge if you can ship your product at the same time as the dependent product which presumably has bigger user base. You can then leverage the go-to market opportunity as first player in the bigger community.

Why So Many Programming Languages?

January 10th, 2012 No comments

While checking out the search engine terms to my blog, I found an interesting one there: “why so many programming languages?” A great question indeed. If you take a look at the Wikipedia page on programming languages, you will be surprised by the number of programming languages today. To give you a hint, the languages are categorized into different sections by their first letters. When I browsed the page, I found most of them were new to me and will definitely remain so in the future. :-)

Setting Up IIS for ASP.Net Web Applications On Windows 7

December 16th, 2011 1 comment

This week I spent some time deploying a Web application I developed using Microsoft Visual Web Developer 2010 Express (it’s free). For that, I installed Microsoft Internet Information Service (IIS) on my Windows 7 enterprise edition. This turned out pretty straight-forward: Control Panel – Programs – Turn Windows Features on or off. In the Windows Features dialog box, just locate the Internet Information Service and check on it. After a click on the OK button, the IIS (version/build is IIS 7.5.7600.16385) was installed.

Categories: Software Development Tags: ,

Cisco UCS Management APIs

November 14th, 2011 3 comments

After installing the UCS emulator, I started to read and try UCS management APIs. I found the following two documents very helpful: Cisco UCS Manager API Management Information Model, and Cisco UCS Manager XML API Programmer’s Guide.

Key Concepts

The key concepts of the APIs are pretty similar to VMware vSphere API. For example, it has managed objects which represent UCS resources like chassis, blades, fabric interconnects, etc. They contain administrative states and operational state.

Eclipse: 10 Years of Excellence

November 8th, 2011 No comments

This month Eclipse turns 10 years old. Ten years ago, IBM donated the initial Eclipse Java IDE, which was then estimated $40M, to Eclipse Foundation. It has since grown to 273 open source projects and $800M portfolio today. Quite an achievement by any standard!

This news release summarizes some of the key accomplishments:

New Book: Enterprise Java Applications Architecture on VMware

November 4th, 2011 5 comments

My former colleague Emad Benjamin at VMware has just published a new book on running Java on vSphere. When I was still there, I had the opportunity to review the Chapter 5 of his book.

As many of you know, Emad is a well-known expert on this subject who has spoken at various events like VMworld and helped numerous customers. You can buy his book at Amazon or from publisher directly. Remember to bring it to next year’s VMworld for his autograph.:-)

We Are Hiring

November 4th, 2011 No comments

I think it’s going to be the longest single post I have ever done because we have quite a few openings in our VCE team. We are building our software capability for what I called turnkey software stack for cloud computing on Vblock.

The following are just three openings we want to fill immediately: Sr. GUI Engineer, Sr. Build/Automation Engineer, and Sr. Software Development Manager (update: Principal Solutions Engineer). We also have more software engineer and QA positions whose descriptions are not listed here. If you are interested in any position, please feel free to email me (