Virtualization with VMware vSphere (ESXi) Hypervisor

One of our servers, collocated in our office, crashed couple of weeks back. We took this opportunity to virtualize most of the stuff, earlier only some intances were virtualized.

Installing and setting up VMware vSphere Hypervisor is a straight forward process, even the process of creating virtual-machines.

Most of time, I spent was figuring out:

  • Storage devices and configuration
  • How many virtual machines, do we need?
  • Which operating systems, do we need?
  • Network configuration

I am not going to cover details of installation and network configuration. I might write more posts in future to cover specifics. Meanwhile, I would love to answer the comments, if I know or share anything I know.

Anyway, this is what we have now:

  • IBM x3250 M2
    • Intel Xeon (Quadcore) x64
    • 4 GB memory
    • 3TB+ storage connected to LSI RAID and SATA controller
  • Host: VMware vSphere Hypervisor - which runs out of  1.5 TB datastore, directly connected to SATA controller (different from LSI)
  • Guest VMs:
    • OpenVPN Access Server for VPN
    • Ubuntu 10.10 Server as Development sandbox
    • Zentyal(eBox) as Internet Gateway (filtering, IDs, proxy)
    • Ubuntu 10.04 LTS Server for SVN, Mails, Local Staging WebServer
    • Windows 2008 Server for ActiveDirectory, FileServer, Windows-Specific-Software (access-control-management-gui, etc.)
    • Others: Project Specific VMs

We are very happy with the improved performance and stability, and the way hardware is properly used. Thanks to VM templates, clones and snapshots, we would be able to provision above infrastructure with minimal downtime.

I would soon replace Windows Server with Zentyal (eBox), which I believe, can handle most of things. However, we would need another Windows XP box to run some software (proprietary), which only runs on windows, to manage various other devices (EPBX, Access-Control-System, etc.).

We now have relatively more scalable infrastructure, more virtual machines can be created to take care of email-server, svn-server, etc.

We are yet to invest in a sophisticated storage device such as DAS or NAS or SAN, hence we are relying on some cheap tricks here:

  • 1.5 TB disk as datastore for VMware vSphere, which stores
    • Guest Operating System VMs
    • Guest Operating System VMs Paging files
    • Virtual Disks (non critical data - programs and configs) required by host virtual-machines
  • 1.5 TB disk via Raw Device Mapping (RDM) shared among virtual machines
  • 500 GB disk via Raw Device Mapping (RDM) shared among virtual machines
  • 1.5 TB USB/Firewire - Backup storage
    • Rsync is used to backup critical data and configs from all virtual machines on daily, weekly and monthly basis.

Things I didn't like:

  • VMware vSphere client requires Microsoft Windows
  • VMware vSphere client doesn't allow creating RDMs from GUI, one has to use these instructions

Finally, I could execute some of things I planned more than two years back.

TEDx in Kanpur - TEDxIITKanpur

Entrepreneurship Cell (E-Cell), at IIT Kanpur, is organising TEDxIITKanpur event on March 12, 2011. This is the first event of it's kind, and I hope we would have more of those (TEDx, BarCamp, DevCamp, etc.) in Kanpur (within IITK campus or outside).

Our company (Allies Interactive Services) is honoured to contribute as design sponsor of TEDxIITKanpur, and hopefully other events organized by E-Cell, IIT Kanpur.

Adobe AIR and Flash Player Incubator program

The Adobe Flash Platform runtimes team has launched Adobe AIR and Flash Player Incubator program, which would showcase bleeding-edge, under-development or under-consideration features of Adobe AIR and Flash Player builds.

Unlike Adobe pre-release program(s), Incubator program is open to everyone, and encourages companies and developers to look at under development features, and also give feedback to shape the future of these runtimes.

This launch is another major milestone, after Adobe Labs and Open Source initiatives by Adobe. We are heading in right direction.

“Molehill” 3D APIs and Cubic Bezier Curves are the first two features available in incubator build. I am sure, there would be more features available in coming months.

BTW! These early features might not make to final release of runtimes, as it's always case with

Visit Adobe AIR and Flash Player Incubator's page on Adobe Labs to learn more. You can also subscribe to new Adobe Flash Platform Runtimes releases blog to get real-time updates on new AIR and Flash Player releases.

A Developer's Open Letter to RIM

Jamie Murai has written an open letter to RIM, the company behind Blackberry and Playbook. Jamie talks about his experience of setting up development environment for Playbook application development.

It seems, RIM has failed to attract developers, the credit goes to broken development process and tool-chain. One has to spend good amount of time (and money?) setting up development environment, building application and deploying the same to marketplaces.

Why would developers bother looking at Playbook development, when they have better options (iOS and Google Android), where  development, deployment and monetization is relatively very-very simpler.

Developer usability is very important. Any company that relies on developer community/ecosystem for their growth, should take some lessons from Jamie Murai's open-letter, which enlists some important points/issues.

Read Jamie Murai's Open Letter To RIM's Developer Relations.

CalDAV and SyncML Resources

One of our projects requires a calendar application with bi-directional synchronization with any other calendar applications/services such as Microsoft Outlook, Mozilla Thunderbird, Google Calendar, Yahoo! Calendar, iPhone, Nokia or others.

We can export iCalendar file, that would be readonly i.e. client applications can not write back to source calendar

I started looking at CalDAV, which is an extension to WebDAV, and SyncML, which is gaining traction because most of the mobile devices use it for synchronization of data. I yet to find where CalDAV fits when it comes to mobile devices.

I found out some interesting links, which I am still going through. I thought, it would be nice to share these links:

Adobe Flash Platform and I

It appears to me (and perhaps others), I have distanced myself from Adobe Flash Platform during last couple of years. Not because I don't like it, actually I love it, rather due to some other priorities here at our company, which does lot more (web-standards and design) than flash/flex stuff.

All this time, I have been keeping very low profile in flash-platform community, literally not talking about anything. I feel bad about it, I don't know 'why'.

I have done some trivial stuff (video players, flashlite and air apps) but nothing very cool or useful to everyone else.

My to-do list contains a long-list of applications targeted towards Adobe Flash Platform (desktop and other devices), I am supposed to do; Considering, my plate is full with all other responsibilities, I am not spending even 1/4th of the time writing actionscript.

Meanwhile, I have tried to encourage my team to learn actionscript and flex-framework. I even tried to hire some flash (or flex?) developers. I even managed to hire one flex developer last year.

Unfortunately, this person left the company as soon as when it was time to contribute back after 6 months training (no contribution period). That was big set back, a discouragement to me; I stopped looking for Flash/Flex developers.

I keep on promising myself, that I would do these applications; I keep on forgiving myself when I am not getting those done.

Anyway, there is still hope, I would building applications the on language (ActionScript), I am very good at. There is still hope, this blog would have more posts related to Adobe Flash Platform.

Agilo: Scrum plugin for Trac

We use Trac as project collaboration space[1] within our company. We have been trying out agile-methodology (specially Scrum) for projects, but recently we went more formal with the approach using a software to manage the whole process.

I evaluated some software for agile project management and found good ones including ThoughtWorks' Mingle, but it's not open-source and I believe, we can't afford it (licensing, subscription).

We found 'Agilo', a plugin for Trac, is easy to setup and was intuitive enough to get us started, considering our (no) experience with formal agile-methodology.

Do you want to get started with Scrum and don't want to invest time learning a complicated software? You don't need a software to do Scrum. However, if you like managing projects using a software and you are comfortable with Trac, try Agilo.

You might want to check <a title="Scrum in five minutes - crash course" href=""http://www.softhouse.se/Uploades/Scrum_eng_webb.pdf">Scrum in five minutes</a> [PDF]

BTW! This is yet another post to spread the word about the software and tools, we find useful and have been using.

[1] project management, bug tracking, documentation, wiki and version-control browser

DeltaCopy: Backup software utility for windows

We have one Windows server, which is there for many reasons. Taking backup on windows can be pain, one has to rely on third-party software. We use DeltaCopy, which relies on rsync (an awesome piece of open-source software), statically linked Cygwin libraries/binaries.

It is easy to setup and doesn't conflict with any existing Cygwin installation.

DeltaCopy has saved us from many disasters(disk failure, etc.), some of those happened during last one month. Had we not taken daily, weekly and monthly backup snapshots, we would have lost months of work.

Thanks to DeltaCopy and developers/company/community behind it. This post is my way of thanking them, by spreading some words.

Using DeltaCopy is very intuitive, however, feel free to leave comments, if you need any help setting it up.

Hiring Mistakes

Hiring mistakes hurt us[1] in terms of time, money, cultural-issues and many other things. I have made those, more than one time - that makes me guilty of repeating mistakes (a crime or sin?).

We filtered résumé, screened candidates over phone, interviewed in-person over multiple rounds and discussed among ourselves before extending employment offer. Sounds good to get good candidates? No, it is not. We ended up having some bad hires.

Anyways, most of us know - Resume don't matter anymore; Someone really good at things[2] should have more than résumé to show and talk about

  • bunch of projects done in free time;
    • indicator: passion, love for craft and desire to improve by practicing in free time
  • technical or craft related blog
    • indicator: communication skills; knowledge sharing attitude
  • contribution to open-source projects
    • indicator: love for FOSS; desire to do something beyond self, for others; team player
  • active participation in technical communities[3]
    • indicator: knowledge sharing attitude; mentoring and helping
  • every word on résumé should be justified
    • indicator: modesty and humbleness

I believe, we lacked some discipline in our hiring process and new-hire-orientation process. We were also not strict, at reviewing and monitoring progress, during probation period.

Both pre and post hiring phases are important.

Pre hiring is good time to know about candidate personality wise.

Post hiring is another chance to make sure if hiring decision was really good. Within three months, it should be absolutely clear (binary: 0 or 1), whether one is good match[4]

The one who has potential to be rockstar and great team-player should be given more time and mentoring; This might affect the economy of company in short term, but worth doing for long term benefits. Patience works, I need to get better at this.

I am learning something everyday, often I realize I am not doing something right; I need to bring discipline in my life and the way I do things, hopefully, rest would go very well.

In Kanpur, I am yet to connect to good software developers and designers. I know there are good ones, perhaps they are working outside of Kanpur.

I am curious, how do you hire, train and get people started?

[1] Entrepreneurs and companies
[2] Programming, Software development, Graphic/UI/UX Designing or skill in question
[3] <a -=\"\" a=\"\" best=\"\" for=\"\" forum=\"\" href=\"http://www.flex-india.org\" india=\"\" technical=\"\" the=\"\" title=\"\"Flex\">flex_india</a> or alike), forums, etc.
[4] Great Thinker, Technically sound and has emotional-intelligence

Professional Responsibility and Ethics

I would have spent hundreds of hours talking, about professional responsibility, craftsmanship and ethics, to my team. What you would read below, is a summarised version of the same.

If I sign up for something (a job, a project or something else), I am going to do it with responsibility. If I develop disliking for job/project at any point of time, I am going to:

  • reflect (validate, find causes/solutions)
  • communicate promptly and proactively all the times
  • challenge myself to keep myself motivated
  • try changing things around for better
  • find responsible exit strategy, if there is no hope

We live in free country, there is no reason to do wrong, like:

  • being dishonest with myself and others
  • doing anything (moonlighting, sharing confidential information, etc.)
  • being irresponsible towards my work, hence often repeat mistakes which cause loss to my employer/customer
  • being irresponsible towards, in general

Let me give some examples of wrong-doings, based on my experiences:

  • I lie (wrong reasons) while quitting the job
  • I do something, which I agreed not to do, for the sake of extra money
  • I don't spend enough time figuring out solutions of problem, instead I start running away from problems.
  • I don't communicate properly
  • I assume and judge based on rumours/gossips/assumptions
  • I quit without giving any notice and expect my employer to give me all certificates and positive reference
  • I request to be relieved from my duties without serving a required notice period. I promise buy out (i.e. pay money back to company/customer), which I never do
  • I take some days off from work but I never return back to work; I don't communicate and keep my employer posted on status
  • Above all, my actions are irresponsible, unprofessional and unethical

We all make mistakes. If I made one (wrong-doing) intentionally, it's not good. If I made one unintentionally, later realized it as a mistake, however, I keep repeating, what could be worse than this?

No one is perfect in this world, neither is the company/customer I work with nor I am. However, we can work together despite all these imperfections without doing anything wrong (ethically, professionally). There is always a right option, thankfully.

Good communication, at all the times, always help us doing things right and avoiding wrong ones.

I am not sure, if I could express what I want to say; I hope you can understand what I mean.

Please leave your comment and feel free to correct me, if I am wrong somewhere. I am always open to learn about different perspectives and improve myself.