rama

Oct 112011
 

Before I became a pointy haired boss, I was a developer. I still develop, but none of my code goes into projects. Apart from being a PHB, I had experience in being an entrepreneur doing all sorts of jobs. Most of my work happens in meetings.

There are two problems in meetings, especially, exploratory meetings:

  • Mismatch in the understanding: The meeting may not offer us a chance to understand and restate the problems as we see them.
  • Lack of follow up: While we understand what that is said then and there, as soon as we walk out of the meeting, it is jumbled up. Even action items may not help, as the context is lost.

I find it useful to use note taking as a way to take care of these problems. Here are a few simple note taking best practices:

Always take notes on a computer

In this day and age, you don’t want to use a notebook and then transcribe. If you are anything like me, you will never end up writing and enhancing. In fact, the more you practice taking notes on the computer, the better you will become. Imagine the effect you can create by sending out the notes and your thoughts immediately after the meeting!

You can use any tool for taking notes, but I prefer freemind (or XMind). It is a mind-mapping tool, that provides a hierarchical view of the information. It is especially useful, when the information is hierarchical instead of being linear. For instance, if you are listing out all the team members and their role and other details– this information is not linear (you don’t care which order you get to them), but hierarchical (you list out the name and under the name you list the role and other details).

Start with a simple template

As I said, I prefer the mind map tool for this job. Before the meeting, I jot down the various aspect of the meeting that I am supposed to gather information about. (If I am providing the information, that is a different kind of meeting).

Take this example: Suppose we are having a meeting about a project we want to start.  You are meeting the customer as a potential project manager.  A possible information template could be:

SNAGHTML29cd723e

Of course, your headings could change. The beauty of such arrangement is that you can see the items of similar importance at the same font size and same distance from the center (Radial Hierarchy).

Keep the hierarchy in mind – use it to guide your questions

As the meeting progresses, you find yourself doing the following:

  1. As you get information about any topic, you will put it under that topic. Good – this is the way to go.
  2. You are getting details about a topic, but the context is not there:  What it means is that you are at level 1 and you are getting details about level 3. You will establish the context at level 2. Example: You may be given details about the project users, without categorizing the details. That means you will supply the categorization (like business users, consumers etc.).
  3. You are getting new top level topics: That may mean two things: you may not have thought about the meeting to give a good starting point. Or, the meeting is going off direction. In the first case, you add the topic to your mind map. In the second case, you nudge the meeting to the right topic: (“Before getting to those details, can you please tell me who are the people involved so far in the project?”).

If all things go well, you will get a rich description of the meeting. And, you will look like a genius for providing a structure and context to the information.

One advantage with mind-map tool is this: By looking at the picture, I can tell if we did a good job on information gathering or not. If we are too deep in one topic, the image shows the imbalance. If we did not cover a topic or excessively covered a level 2 topic, the picture clearly shows.

Publish it immediately

You think you will refine the mind-map, create a document and then publish it. Trust me, you won’t get around to it. I suggest you correct the typos, enter any contact information, clear out any questionable material, pay attention to the action items, and if needed, add your perspectives (make sure that is marked as your take on the meeting), and then publish it immediately. I publish my mind-map meeting minutes in less than 30 minutes after the meeting, in general.

Summary: Always take notes if you are participating in an exploratory meeting. Use a computer and a program to take the notes. Prepare an outline and use it to guide the meeting. Publish the finished outline.

 Posted by at 3:39 pm
Sep 112011
 

http://www.kanneganti.com/social/my-beloved-city/

It has been 10 years since I wrote that piece in a moment of anguish and shock. Ten years passed by, bringing in more and more dystopian visions of the future – curtailment of liberties, heavy-handed government, needless wars, suffering of the innocence, self-censoring of the press, and untold missed opportunities for golden future.

In the last ten years too, lot of things have changed. I moved farther and farther away from my childhood as it receded slowly from memory. First to go is the poetry. None of the old memories – the rains, the stars, the morning walks to the animal yard, the idle cards players in the library – seep into the semi-conscious morning. Instead of feeling the lyrics of the songs, now I merely listen to them.

Simply put: life goes on. We get used to things that we never understood. We take off shoes silently, paying the homage to TSA Gods and proceed to the altar of the winged machines. Does it remind me of my temple going days? Did I take of my shoes in quiet obedience then? I don’t recall that 10 year old person — – did he understand the nature of the God? Did he marvel at mornings and evenings? Did he stare at the stars to brand that image into the brain forever? What did he think of the world?

As memories fade away, I lose a bit of myself. I forget the excitement of the first day of school, earnestness of skipping the water puddles on the roads, first flush of youth, the sweet anticipation of exam results, and fateful farewell from the familiar.

Then, in forgetting those old memories, we make new ones. I suppose these memories are too static, stealing a moment of contentment from everyday life, or a happiness shared. It is not the same as exploring the world with wondering eyes — none of the childhood stuff.

Perhaps these new memories are not so far back as yet to romanticize. Perhaps I need to age before I look back wistfully at the mundane routine of meeting with friends in Farmington library, or taking the kids to ice-skating on a snowy morning in Michigan.

Till then, I will try to hang onto my old memories a bit longer, thank you.

 Posted by at 5:10 pm
Sep 052011
 

With more than 20,000 participants and 400 exhibitors, VMWorld is the place to be for people interested in virtualization, cloud, and new trends in IT, as driven by fast changes in infrastructure. Of course, with $3000 per head, it is also one of the most expensive conferences out there. I, along with VMware’s Thirumalesh, presented on migrating to cloud-ready platforms from Weblogic:

First, the general trends

VMworld 2011 at Las Vegas

It is clear VMware spawned one of the biggest eco-systems in the world.

To start with, all VMware has is the ability to virtualize a machine. That is, it can run a program on a machine so that the machine can appear to be multiple machines or VM’s. It means, on one server or PC, we can run multiple OS’s.

Next up, they provide the ability to take an application and OS and bundle it as a thin VM (just enough OS to make that app run). That means, all the issues of porting to different OS’s and incompatibilities of OS’s disappear.

Next, they moved along the direction of managing the VM’s. They can manage capacity leveling, load balancing, and sharing across the VM’s. They can manage a cluster of host machines running several VM’s. For instance, they can migrate one VM from one server to another server. The potential management possibilities are enormous. Your server going down? Just move your VM to another server and be done with it. Or, there is a hurricane coming your way? Move your VM to a server in a different country.

And, of course, if you have the capability of capturing, restarting, replicating the computer, then you can do lot of other interesting magic: horizontal scaling, recovery, and backups. Of course, lot of these capabilities need support at various levels: computing, storage, and networking.

The traditional way of viewing the virtual server market: Compute, Storage, and Networking is maturing progressively. There are lot companies that are solving some problem in the management, provisioning, operations, and decision making in the virtual infrastructure area.

One interesting trend is virtualizing at the device level. VMware is working on technologies to push a virtual device onto android or iPad (it is bit more convoluted – it is actually an interface) so that people can own their own devices and yet access company resources with a clear wall between personal and company. If a person leaves the company, a central admin can de-provision without having to be there physically.

octupusOn one hand, the trend of managing the personal devices for the company is exciting. Still, I have mixed feelings about it (I think it is encroaching on the capabilities of the web – why are we going down this path anyway?). Watch out this space for a detailed blog about my perspective on that.

Next, journey to the cloud

Stick figure guide to cloud computing from Tier 3

As interesting as the the infrastructure is (and lucrative too), VMware is spending lot of time and money on the cloud platforms. For them, it is a part of the strategy to get the organizations move to the cloud. They invested heavily in SpringSource platform under vfabric. They are also investing in other platforms to make sure that they run better in VMware’s cloud. In addition, they are looking at other platforms as well as long as it fits into their cloud vision.

vFabricDiagramOne of the big issues with their platform vision is this: they are not leaders in the platform business. They are not, historically, a player in providing any software stack. Other vendors (IBM, Microsoft, Oracle etc) or other cloud players (SFDC, google) are bigger at this platform business. So, VMware is making a big push towards this platform.

The first impediment towards this platform is that there are lot of applications that companies have developed in standard J2EE platform. These technologies are complex, with too many levers to operate and optimize. It means, for VMware, they are an obstacle to successful movement to cloud. Yes, they can be virtualized, but without many benefits that VMware can offer.

If you are wondering about the benefits, consider one example: VMware’s hypervisor (the application that runs all the VMs) as you know allocated memory to the VM’s. Now if it can know how the machines are using the memory, it can do some dynamic adjustment so that it can manage more VM’s for the same memory. It may be that different machines are peaking at different times. Now, with regular VM’s VMware runs a program at OS level to help with this smoothing out of the demand for memory. If it java program, how can it do that? Enter EM4J – elastic memory for java. It runs only on tcServer, a part of vFabric.

All this means is this: VMware likes to see transition to the vFabric from other platforms so that they can win the cloud war.

This is a short note – soon, I will be writing about my impressions of micro foundry.

 Posted by at 10:28 am  Tagged with:
Aug 222011
 

It is obvious to most people that, at heart, I am a programmer. I am not a good artist. My wife wouldn’t trust me to pick colors for our bath room. She wouldn’t even let me pick the tiles! But, obviously, I am qualified to make judgments about UI design Smile.

image

Deprecations aside, I worked hard to compensate for my innate weaknesses: I spend long hours on the internet. Whenever I see a website, I view the source and then understand how they did each page. I try to even guess what kind of software they used in the backend. I regularly check out standard sites. I took college level courses in history of art.  In my misguided youth, I even designed fonts. I am writing al this preamble only so that you don’t think that I am ranting.

Long back (in the internet time, it means just 5 years back), we used to get user interface designers. We expected little from them because we didn’t know much. All we told them was to make it look pretty. What we used to get is always a windows interface tacked on to the web:

image

Essentially, you have a menu bar, and then the menu bar lets users perform activities on the data in the screen. The menu can be on the side, but that is still the same principle. Even if you have multiple menus, it is somewhat same.

What is the problem with this? Nothing, if you are addressing the same audience. But, most applications on the web are not like windows applications. They are for different purpose, for different audience, to be used in different context. For instance, they may be for casual users who do not know all these menu’s are about. Or, they may be for doing a series of standard steps. Just like how, even in windows, you have different kind of UI’s for specific tasks (like say, a wizard), you do need to adapt to the activity and the users.

If we want something better than this monstrosity, what do we need? Since sky is the limit, let me stipulate the following:

  1. We are not developing a world class system where UI is the main innovation. We know that the difference between facebook and myspace is say 50(?) billion dollars and better user interface. If you have such great ambitions, what I am going to say may not work for you.
  2. We also want the best UI that our limited budget is going to buy. Surely, it is the functionality we are selling. At the same time good UI make the functionality actually usable.
  3. We are building enterprise applications with only limited number of users. We are not building a website for the millions.

You may think it is restrictive – but wait till you see remedy interface. I wish they spent all of $500 on the interface!

What I expect the UI developers to do

With those goals, if I were to design a web applications, this is what I would want my UI people (or UX people) to do:

To be in between users and developers

I want my UI people to know the users well enough to disregard UI requirements and create a cohesive and coherent interface. UI design is not about focus groups and satisfying different users. It is about understanding what users really want to do and provide a consistent way to do it.

Similarly, they should understand enough about developers to see map the requirements to familiar patterns. Most developers don’t develop well, if you ask them to do it from scratch. They can imitate well; they can reconstruct reasonably well. UI developers should be able to map the user requirements to familiar patterns in the developer toolbox.

Adapt Industry best practices

Either we lead or we follow. Looking at the constraints that I laid out earlier, I say we should follow the leaders. There is nothing intuitive about any design (except some – like pulling a loose cord, or pushing a stone – blame it on our nomadic hunting days). Most of the complex paradigms are learnt over years of experience from using the systems.

image

And, innovation over those complex interactions is somebody else’s job. Your job is merely understanding the right innovation and using them in your system. In fact, I have seen that any innovation fail miserably because of lack of talent, support, or budget. So, stick to what worked outside.

Integrate the standard paradigms

Most enterprise applications are about data entry and queries. Workers add information and managers review information, approve applications, or get reports. There are lot of variations in the usage paradigms: workflow, process flow, content management, user interaction, social networking, CRM, helpdesk, self-service, e-commerce etc.

From http://ui-patterns.com/

Most modern applications are a combination of all of these. A good UI person understands the nature of the application to get the UI representation of these standard paradigms and map the user requests to the design. If not, what we get is a bunch of pages, that ignores the connections and neglects the possibilities of achieving a coherent vision. Worse still, it will not leverage the established UI patterns and therefore ends up being too costly.

Manage the costs of technology

I recall an incident that a friend of mine told me. The incident happened in the hype of Java applets age. The client wanted the comments field to support variable width fonts and some limited formatting capabilities. The UI person, who was working on the wireframes put that as a part of the design. Unfortunately, the design was not supported in HTML in those days (no/low css; low adoption of JS). So, the developers were forced to use Java applet. That complicated development, testing, and deployment. When the final ballooning of the cost was shown to be more than $200K, the client was dumbstruck. “Why didn’t you tell me that it was going to cost so much – it was not a big deal!” was his last plaintive cry before being wheeled into emergency room.

image

So, I want my UI people to know the standard Javascript libraries. I want them to know the what plugins exist, what are the costs of doing different interactions. I want them to know some security repercussions of the designs as well. And, with that understanding I would like them to design the user interactions.

Work with templating systems

I often find in the following difficult situation. I get a bunch of screens (HTML +CSS). I do not know the relationship between the pages. Not the navigation scheme, but the relationships. As a programmer, I am used to seeing pages as a hierarchy. Like, say, the results page is just like any other page except the results are in the middle of the page.

(Repetition is good, if we can identify the hierarchy and differences)

In short, if we are able to create a hierarchy of pages, each child specializing the parent page by adding more element, I can quickly prototype and build a system that can be changed at will. If not, each page will get programmed and changing the look and feel of large number of pages depends on the programmer skill.

Unfortunately, here we get into a snag often. The tools the UI people use do support this kind templating system (Dreamweaver and so on), but they do not or cannot expose that to the developers because the developers use different kinds of templating systems. I cannot offer a universal solution – all I say is, the UI people should be able to work it out with the developers.

What I look for in the UI designers

Now that I specified what I want them to do, I will tell you what I look for in the interview:

Knowledge of CSS

Most UI developers are quite good at this. If we want low cost solution though, your best bet is to go with something standard like using Jquery UI. If we are using Jquery UI, it comes with its own themes. Any average UI person should be able to develop the themes to meet the client requirements. The advantages are many fold: you can use lot of plugins as is. You can reuse developer skills as well. [Here is a simple introduction.]

image

Knowledge of Javascript

In the modern days, any reasonable UI requires a Javascript person on the team. Even the UI people should be familiar with the standard libraries, what they can do, which are the ones that we decided to go with and how to use them to achieve the interactions we need. For finer customizations, we may need a full-fledged JS developer, but most of the basic ones can be done by UI developers.

image

Color schemes

I know that this is supposed to be the forte of the UI developers. I have often been disappointed with the UI team’s failure to develop a good color scheme. If you are forced to do it, just look at these two resources: color wheel and kuler.

image

Icons

A simple good set of icons can spice up the design and get user attention easily. Here is where we can create a unique branding, play on the color scheme, and provide good visual relief. If the UI designer cannot design the icons, at least he/she can buy them or get them from public domain. Ability to incorporate the icons in the web design for consistency and usability is something I look for in a UI developer.

image

On the issue of stock images: Most corporate applications get spoilt by usage of stock images. How many times have you seen a bunch of white people in suits, with couple of minorities thrown in to indicate seriousness of the site? I agree that you can create a good ambience and set the tone for the site by the stock photos – but that is rare enough that I lost faith. In any case, if you want good stock images free, you can always go to this site. Summary: Don’t expect too much in the way of stock photos from your UI designer.

Fonts

A few words: CSS; standard set of fonts; good readability; ability to use web fonts. And, of course, use them as a theme for using Jquery UI or some such system. If your UI engineer can do that, that would be good enough.

PS: If you are a developer and think that your designer is producing that is way too difficult to develop for, or not doing a good enough job, you can do a few simple things:

  1. Use Jquery UI for your design
  2. For your screen layout, check out the following: http://www.openwebdesign.org/. For instance, I found this http://www.openwebdesign.org/design/3499/multiflex32/ design – a reasonable, if a bit old fashioned one.
  3. For stock images, check out: http://sxc.hu
  4. For your icons: There are several open source ones. While I like the ones from the nounproject, they are not in color.
  5. For your fonts: check out http://www.google.com/webfonts
  6. For your UI paradigms, you are on your own – you need to understand the user needs and what your application is about!
Aug 192011
 

[A caveat for the experienced people: this is a highly simplistic introduction to college grads. I only mean to provide some overall view.]

I am a relatively new comer to data warehousing. I come from OLTP world, where we take lot of transactions and put them through the databases. Early in my career, I worked in data warehousing, specifically archiving.

Historically (For the most readers at least), RDBMS have been the mainstay of the OLTP system. Get a high end RISC (*nix) computer and put Oracle on it – this is the standard OLTP in most shops. There have been lot of changes in the last 10 years, starting with the rise of low-end databases with different performance characteristics (lot of reads and few writes or explicit transaction control etc). But, I digress.

You have your database where all your data is storied; but the people upstairs want a different database for other purposes. Why? What other purposes could there be? Why not use the same database?

Consider the case of a Acme company that sells widgets to coyotes on an e-commerce site. Naturally, they use an OLTP system to sell their widgets – from the record of the sale to current status of the order. But, if they want to generate standard reports (say, how many widgets sold in which state for the last month), they cannot go against the OLTP database – obviously, that can interfere with serving your e-commerce. Or, you may want to look at the trends – which products are selling fast in the last month. Naturally, you do not want to hit the OLTP database.

What you need is a separate DSS (Decision support system) to support your queries and reports. Here is the way it would fit together.

image

Of course, this is highly simplified picture We will see how it can evolve and can reflect real-world scenarios as we proceed.

A small note: You will encounter words like OLAP. OLAP is what one kind of DSS system does. You also will hear about Datamart. You can think of it as a subset of data (or a mini data warehouse). DSS database is called data warehouse for the most part. DSS is used for the applications+data warehouse.

Why did we have to introduce the ETL tool at all? Consider the following possibilities:

  1. The schema in OLTP is optimized for specific purpose: to run transactions. The data warehouse is optimized for a different purpose – ability to run queries and reports faster. So, that schema is different from OLTP. ETL tool can do the translation.
  2. The data in the warehouse may have to come from multiple different databases. Typically, you have the departmental, corporate warehouses that collate the information from multiple sources. You need ETL for that.
  3. The data may lie in different kinds of databases as well as other sources. ETL deals with all those different sources.

Standard ETL tools are: Informatica, Ab Initio, or in the open source Kettle and Talend. (More on ETL tools later).

Before going further, you are right to ask: What other kinds of uses are there for databases? As a web developer, I am familiar only with OLTP databases. Tell me about the other standard ways that databases are used.

Here is a simple view, that will suffice for the beginners:

image

Of course, to solve these different needs, we do have different kind of databases (and constantly invented as well). Recall that most databases speak SQL, which is a bit of a burden on developing a new database. Fortunately, some databases break that taboo for greater glory. In another note, we will get into those details.

Here are a few take-away’s for the beginners:

  1. Standard database that we generally learn in college or while programming the web, is good for transactions but not well-optimized for other needs.
  2. There are lot of other ways databases are needed; and there are different kind of databases that support different needs.
  3. As you are creating all these different kind of databases, you will encounter different data transformation needs and other needs pertaining to integration – which is solved by yet another piece of software like ETL (and a few others – you will see later).
 Posted by at 7:36 am  Tagged with:
Aug 032011
 

In today’s installment, I will show how to install a hypervisor. I choose a free product VMware hypervisor to install on my computer so that I can run VM’s.

What is a hypervisor? It is an hosting environment to run virtual machines. There are two kinds. The first kind runs on the bare metal (no OS needed) and the second one runs on an OS. Naturally, the first kind is faster. In case of VMware hypervisor, it runs a barebones version of Linux with hypervisor software, file system and a few other tools.

Step 1: Download the software

Hypervisor itself is free, which you can download it at: http://www.vmware.com/go/esxi. Make a note of the license number they give you – you need that later. The old name for hypervisor is ESXi. You will find references to vSphere, which is the enterprise version which costs lots of money. You need vSphere Client as well, but that can wait. The software comes in the .iso format. You can mount it in windows using http://www.daemon-tools.cc/eng/products/dtLite (daemon tools).

Step 2: My machine is not supported!

First thing I did was to burn the iso to the the DVD. I installed Linux countless times from 1994 and thought I could get this past quickly. Little did I know that VMware removed support for standard components like Mobo based network interfaces. Too bad.

First thing is to remember what components I have in my system. The mobo (mother board) information comes up during boot times, but I still wanted a complete list. An evaluation copy of AIDA 64 listed the complete list of the machine hardware details after I installed in that machine.

What I need is to do the following:

  1. Get the driver: You can find most drivers as oem.tgz here.
  2. You need to modify the boot image. You can use ESXi customizer for this purpose. It creates a new iso for you.

At this point, you will be running out of DVD’s to burn. I wanted to use flash drive to install my OS. That way, if there is a mistake, I can always rewrite that.

Step 3: Creating a bootable flash drive

Most mother boards support booting from flash drives. When booting up, you can enter the setup (by pressing DEL often, but it tells you what to press to edit the setup) and edit the boot sequence. You may have to insert the flash drive before and rescan it and then setup the boot sequence. That is what I did.

To prepare the flash drive, there are several ways. Here are the two methods (thanks to: vmhelp site).

  1. Use syslinux(make sure you use version 3.8x – the version 4.x doesn’t work):
    • First format the flash drive in DAT32 mode.
    • Go to syslinux/win32 folder and run the command: syslinux.exe –mbf G: (assuming G: is where your flash drive is).
    • Copy the contents of the iso that you created with ESXi customizer. Again, mount the iso using daemon tools.
    • Rename the isolinux.cfg to SYSlinux.cfg.
  2. Use Unetbootin for creating the flash drive.

Once you created the boot drive, you will notice that you still will encounter issues. Specifically, the system needs to know that it needs to copy files from the flash drive. Here is what you can do, using kickstart script.

First edit the syslinux.cfg file:

menu title VMware VMvisor Boot Menu
timeout 80

label ESXi Installer
menu label ^ESXi Installer
kernel mboot.c32
append vmkboot.gz ks=usb --- vmkernel.gz --- sys.vgz --- cim.vgz --- ienviron.vgz --- install.vgz --- mod.tgz

label ^Boot from local disk
menu label ^Boot from local disk
localboot 0x80

All we did is to add  ks=usb Now, we need to create a ks.cfg in the following way:

vmaccepteula
rootpw password
autopart --firstdisk --overwritevmfs
install usb
network --bootproto=dhcp --device=vmnic0

Thanks to Jonathan Medd for this guidance. Now, boot from the flash drive and finally, the system will copy the files to the first bootable drive and complete the installation. Finally, remove the flash drive and reboot the system. Before the reboot is done, for a good measure, adjust the booting sequence.

Step 4: Configuring the hypervisor

When you first login (remember the login password that you specified in the ks.cfg file (password)), you can do a few adjustments. This is what I did:

  1. Move from DHCP to static IP. Makes it easier to remember the IP number.
  2. Set the DNS to static DNS (I have a forwarding DNS running on a different machine, that caches the requests – I use that as well as google’s which is 8.8.8.8).
  3. Enable local tech help mode (which lets me login on the local console into shell).
  4. Enable remote tech help mode (which lets me login via ssh).

The last two are not a good idea security wise, but I decided to do it temporarily.

Step 5: Installing the client

There are four/five ways to interact with the hypervisor:

  1. You can login locally to do what you can with shell.
  2. You can ssh into the box to do the same.
  3. You can run remoteCLI that VMware gives.
  4. You can use web services SDK and forge your own programs.
  5. You can use vSphere Client, a gui program to create/manage your virtual machines.

Naturally, most people opt for the last one. I am doing the same too (except that I use the ssh as well. More later). The licensing restricts some functionality. It would be fascinating to see if web services are also restricted.

Btw, once you start the vSphere client, you can provide the license that you got when you were downloading. Otherwise, you are in 60 day evaluation mode.

Step 6: Installing an existing VM

The web is replete with virtual machines. Most virtual machines are created for use in VMPlayer. THe hypervisor only lets you create/clone machines. How do you transfer the new machines in here? As I see it, there are two choices:

  1. You can use vmware converter to convert the existing physical machines. It can covert to and upload the image to the hypervisor.
  2. You can move the vmdk file to the hypervisor (you can use scp or winscp)  and convert the file with the following command: “vmkfstools -i sourcefile.vmdk destinationfile.vmdk”. After that, when you are creating the virtual machine, you can link into this file.

I did the second type.

In the next posts, I will describe the machine setups that I am planning on (mostly for various BI projects that I am planning on). Specifically, I will see if we can use openstack with this hypervisor.

Aug 012011
 

I generally run lot of virtual machines on my desktop. For any development activity, I use VM’s. These days, the cost of machines plummeting, I got my self a new machine recently. My considerations are these:

  1. Lot of memory: I need to run VM’s.
  2. Lot of parallel processing: Again, needed to run VM’s.
  3. Not so much for the high graphics controller: I am not a gamer. I suck at most games, including computer games. All I need to do is to run two monitors from my machine.

I wanted to, but cannot make a case for an SSD. I know it makes the system blindingly fast, but they are still pricey.  I don’t want to spend $450 on a small SSD now.

I looked at the big players like DELL and HP and was not happy with the offers. They seem to focus on Xeon based servers which are marketed to the SMB market. As an enthusiast, I want to pick and choose my parts.

I finally ordered a computer from Avadirect. It’s prices are very reasonable (I calculated the cost for me to assemble and it came to be a difference of just $75 or so) and the delivery times are OK (it took them two weeks to deliver).

Here are the parts I chose:

  • Case: I wanted a middle of range case, that is cool enough. I went with COOLER MASTER, Elite 335 case. I went with a standard 585W power supply.
  • Motherboard: Here I had an option for the Z68 based motherboard (modern, supports sandy bridge, but can only support 16GB memory for now – when the larger chips become available, it can support up to 32GB). My other choice was X58 chipset based which can support 24GB right now. The cost is just about the same, but opted for Z68 chipset only because I want to have that sandy bridge advantage.
  • Memory: The maximum it can support – that is 16GB of DDR3 1333MHz memory.
  • Disks: Two Seagate 1TB barracuda disks at 7200RPM. They are not the best, but they are quite good.
  • Graphics: Even though I could run off the motherboard, I wanted to have a dedicated card. I chose a lower end GeoForce GT520. If I were redoing it, I would have chosen a different one. The problem with it is while it supports two monitors, it supports 1 DVI, 1 HDMI, and one VGA. I have two DVI at home. Bummer!

All in all, it set me back by a $1000 dollars including shipping.

If anybody is looking for getting a machine custom built, I can recommend Ava direct. It is exactly what it seems.

Nov 252006
 

All the rage in the blogosphere

No knead bread

Adapted from Jim Lahey, Sullivan Street Bakery
Time: About 1½ hours plus 14 to 20 hours’ rising

3 cups all-purpose or bread flour, more for dusting
¼ teaspoon instant yeast
1¼ teaspoons salt
Cornmeal or wheat bran as needed.
  1. In a large bowl combine flour, yeast and salt. Add 1 5/8 cups water, and stir until blended; dough will be shaggy and sticky. Cover bowl with plastic wrap. Let dough rest at least 12 hours, preferably about 18, at warm room temperature, about 70 degrees.
  2. Dough is ready when its surface is dotted with bubbles. Lightly flour a work surface and place dough on it; sprinkle it with a little more flour and fold it over on itself once or twice. Cover loosely with plastic wrap and let rest about 15 minutes.
  3. Using just enough flour to keep dough from sticking to work surface or to your fingers, gently and quickly shape dough into a ball. Generously coat a cotton towel (not terry cloth) with flour, wheat bran or cornmeal; put dough seam side down on towel and dust with more flour, bran or cornmeal. Cover with another cotton towel and let rise for about 2 hours. When it is ready, dough will be more than double in size and will not readily spring back when poked with a finger.
  4. At least a half-hour before dough is ready, heat oven to 450 degrees. Put a 6- to 8-quart heavy covered pot (cast iron, enamel, Pyrex or ceramic) in oven as it heats. When dough is ready, carefully remove pot from oven. Slide your hand under towel and turn dough over into pot, seam side up; it may look like a mess, but that is O.K. Shake pan once or twice if dough is unevenly distributed; it will straighten out as it bakes. Cover with lid and bake 30 minutes, then remove lid and bake another 15 to 30 minutes, until loaf is beautifully browned. Cool on a rack.

Yield: One 1½-pound loaf.

My experiences:

  • Attempt1: Perfect bread, until I messed up on the pan. I chose the wrong one without the lid and then immediately shifted to another which is not well heated. Still, it looked good.
  • Attempt2: Perfect bread. The pan problem solved. I used an aluminium vessel. Picture attached.
  • Attempt3: Added rosemary and a table spoon of olive oil. It did not raise as well, but tastier!
 Posted by at 5:04 pm
Feb 282006
 

I love biscotti. I have been trying various recipes and here is one that I consider that is sure bet. I found it on Alton Brown.

Biscotti

biscotti

(original from Owen Zoars)

It is important to dry out the biscotti, but don’t let it get stale.

Ingredients

  • 1/4 lb. (1 stick) butter
  • 1 cup sugar
  • 3 eggs
  • 1/2 teaspoon vanilla
  • 1/4 teaspoon anise flavoring
  • 2 cups flour
  • 2 teaspoon baking powder
  • 1/4 teaspoon salt
  • 1/2 cup chopped almonds (I find slivered or sliced almonds easier to chop than whole. Do not use almond meal.)

Steps:

Blend butter and sugar. Add eggs one at a time, blending thoroughly after each.

Add flavorings. (If you like anise, use more.)

Add dry ingredients gradually, mixing carefully.

Mix in chopped almonds.

Spread in two loaf-like shapes on large greased cookie sheet (or use two sheets). Don’t spread too close to edge; they spread. They should be about 4 inches wide by 8 – 10 inches long.

Bake 20-25 minutes at 375 degrees until light brown. Let cool. Remove from cookie sheets and cut into 1″ slices. Arrange on cookie sheet allowing space between. Bake another 15 minutes or so to toast at lower temperature. I use 300 degrees. Let dry completely before storing.

 Posted by at 4:59 pm
Feb 252006
 

his seemingly simple question has lot of thought behind it. It is all about metrics, what to measure, how to measure, and how to use the,. Not scientific enough, but written for motivational purposes.

How long does it take to boil an egg? (Or Total Time to Boil An Egg or TTBAN).

I am sure you all boiled eggs at some point or other. But how many of you can answer this question? Honestly.

People will say around 5 to 10 minutes.

Think about it. Suppose you are boiling an egg again. You have to look at it occasionally to see if it is done. To be cautious, you let it overcook. And, you will be forced to check on it periodically. Each of these actions say cause 2 minutes of your time. I am counting the fuel loss also in time.

Suppose, you boil an egg once a week. On average, you cook for 50 years. So, an average, you will be spending around 500 hrs because you never know exactly how much time it takes to boil an egg. Imagine getting 20 days of your life with some planning.

Now, think of how you do the "virtuous cycle": Code, Test, Debug. If it takes longer for you to test, even simple inefficiencies add up and waste time in the critical moments.

If I were a developer, I would see where I am spending my time. I will make sure that the environment and I match in my work habits.

So, lesson 1: If you are a developer, you always watch how you are working and work towards improving efficiencies.

Suppose you are a manager. How does this information help you?

Lot of managers think their duty is only these:

  1. Planning the project
  2. Following the plan
  3. Making sure that people follow the plan
  4. Planning for additional resources

If you think only these are your duties, your developers will most surely call you "Soup manager". That is when all you do is to come around and ask "is the soup done"? The question does not change the answer, obviously.

So, the egg lesson is that the manager knows where the efficiencies lie even when the developers are not aware of them. They also would know how much time each task takes so that they can verify the developer’s understanding.

For example, if I were a manager, I would see where the developers are spending time. It could be as trivial as the font settings on the machine to downloading mail to opening Word Files. I would see how to improve those efficiencies.

Also, I would use my experience to assess if developers understanding of the problem is correct. If I were to ask some developer the TTBAN, and he were to answer 1 hr, I am sure there is a gap in understanding. May be he is thinking that he should get the egg from the market, or make a curry of it. Or simply he does not have enough fuel.

So, as a manager, this information would help you to assess the understanding and ability of the developer.

So, what else?

There is more. For example, if you are a senior developer, you understand that the unspoken assumptions builtin in TTBAN. If you are cooking in high altitude, it takes longer to boil. So, you would have seen it before and be alert to that. You would also know it takes different times on an electric stove vs. gas stove. Why? Because you are experienced.

So, if I were a senior developer, I would understand the assumptions in any software design. Just because somebody tells that this software works, I would not accept it at face value. I know what works in what context. I know what kind of tools to use since I know which one works where.

What next?

If you are an architect, you also would know how to change the parameters. For example, you would understand why people are trying to boil an egg. May be it is for a dinner. But you would look at the guest list and figure out that all the guests are vegetarian! So, you would change the problem completely.

So, if I were an architect, I would not immediately solve the problem without understanding the intent. I understand it and see if we are solving the right problem. If needed, I will change the problem.

Anything else?

Well, lot more. All that will have to wait for some other day.

 Posted by at 6:46 pm