Wednesday, March 26, 2008

First Birthday Tips

We celebrated our son's first birthday quietly.

He was all dressed up in his corporate attire (with tie and coat) clicking away on his little laptop.

He was going through a range of emotions like surprise, irritation, weariness and was trying to gain attention of his mom. He was also crying a bit with a number of new faces suddenly hovering around him. He was besotted with gifts sent to him from all over.
He was glued to his cell phone and looking to talk to someone. May be he wants to get ahead in the corporate world already. Kids nowadays are getting smarter. If you give them a toy cell phone with all the fancy ringtones included, they wouldnt be satisfied with that alone. They want to grab the real ones. This may be harmful for them as their organs are in a development stage and might affect adversely.

We should try and avoid putting too much plastic near by them as well. Avoid decking them up in heavy jewellery, even if you have to, just put them on until the mandatory photo session. Balloons should be kept away from the tiny tots as they might get choked trying to blow them (too hard). Try to feed them with light food before you start the festivities and arrange the party at a convenient time. A good time would be to call children and friends after his/her nap time which will leave them fresh and energetic. Try not to put noisy bloopers and bursting crackers will only frighten the little ones. Avoid the foam and other colourful paper dust as this may not be suitable for a kid's first birthday party. Keep the little kids away from the fizzy drinks even as they crave to drink whatever the elder ones are gulping up, their curiousity can wait for now. Putting carpets/mats on the floor will help the kids move and crawl around comfortably. If the space in your apartment/house is limited, this will help accomodate more people as well. Throw open all the doors and windows to let the fresh air in which will keep the kids active. Also, add more ligthing if possible to make it a bright and cheerful occasion.


Slip the kids into some loose cotton clothing ones the cake cutting and photo sessions are done, as all the remnants of the food might spoil their clothes and their mood. Make sure there are no sharp objects in the vicinities accessible to all the kids coming in. Also, it would be nice if you can find a plastic knife for your tot to cut the cake with. This would be comfortable and not so dangerous. Make sure some space (at least one room) is left for your kid's feeding and changing nappies which may look odd in front of everyone. Make sure you clean up all the plastic plates, spoons, plastic glasses and other cutlery after every one leaves. It would be nice to give him a bath after the party (if he feels fine).
Ahh!!! Now, its time for him to slip into mama's arms finally and sleep!!! Happy Birthday to you, dear son!!!

Monday, March 17, 2008

VOIP and GOD


It is the God's divine grace that keeps the believers moving forward and making this world a better place. Most people would like to make a pilgrimage to their favourite God's abode every now and then to reinforce their beliefs and rejuvenate themselves in His Divine "Presence".

VOIP and related web technologies are doing their bit in helping those who cannot afford to take this pilgrimage for whatever reason. If you are in Hyderabad or any other part of the world and would like to go to visit Sai Baba's temple in Shirdi but are not able to do so, do not be worried for He is omnipresent and His presence is palpable on the web too. You can have live Darshan provided you have Windows Media Player 9 or higher and a 512kbps or a higher connection. The live web casting is provided by the Shirdi Sai Baba Sansthan Trust, Shirdi and the timings are from 5 a.m. to 22.20 p.m. You can view the live feed at
Please recommend more sites of your favourite God, Temple, etc in helping the decrepit and incapable ones satiate their thirst. May God Bless - the VOIP way.

Polycom Skype USB communicator



Polycom has introduced a range of USB communicator products like C100, C100S and CX100. These are slated to give you the ultimate high-fidelity hands-free experience from your PC, Skype or Microsoft Office Communicator 2007 respectively. The polycom communicator series has a great audio quality and the hands-free is good for even small conferences.



Skype is a free voip calling Instant Messenger client which can also be used to make calls to telephony users (for premium subscribers). As long as both the participants are on skype, its free. You have a global user directory, text chat, voice chat, video chat feature and you can have your own skype avataar (or upload your image onto skype). A little text bar against your avataar gives you a means to make a statement or add some cheeky, witty sentence to identify you among other users in a list. There is a history tab, flagged events list (like missed calls, etc) and a host of other features.

There a number of articles with reviews for both Polycom USB communicator

http://reviews.zdnet.co.uk/hardware/networking/0,1000000696,39279139,00.htm

http://www.goodgearguide.com.au/index.php/taxid;2136212878;pid;2009;pt;1

http://blogs.zdnet.com/Ou/?p=227 (this article is a review about the C100S which is the one used with Skype).

The price for the Polycom USB communicator is listed as Rs.7740 which sounds a bit high as quoted in this article.

http://www.tech2.com/india/reviews/pc-accessories/polycom-communicator-c100s/1290/0

What many people may not know is that some part of the work for the Polycom USB communicator was done right here in the Polycom India R&D center in Hyderabad. This is a matter of pride for those who are associated with its development for delivering a world-class product.

Using Skype has its own disadvantages. Apart from the host of wonderful features provided by skype, what it does is it uses the Skype client's PC as a Supernode to help users behind a NAT/Firewall. What this does is it uses up a lot of bandwidth which may be premium at times. There are a number of articles on how not to be supernode. Beginning with Skype 3.0, disabling of supernode functionality is provided as posted at the skype site.
www.skype.com/security/universities/
You can search for Skype and Supernode if you want to browse articles that provide more insights in the Google toolbar provided below on this site. Happy Skyping!!!

Saturday, March 15, 2008

Memory Leaks - Quick Fix

Nobody likes leaks whether it is from your faucet or from your computer program. There are a number of tools available for finding leaks (for example, Rational's Purify and Quantify) . But they may not work essentially well in multi-processor based, multi-process based, multi-threaded environments which is often the case with VOIP and related systems. Here I list a simple program that re-defines malloc() and free() to track the dynamically allocated memory. There is no guarantee provided with this piece of code and please dont sue me - I am already broke :-)

/***************************************************
LEAK LIST EXAMPLE:
The program will store the file name and line numbers of all the

dynamically allocated pointers using new_malloc and new_free
and maintains the pointers in a linked list.
At the time of exit ofthe program, display_leak_list must be called to check if thereare any unreleased pointers.
The resultant list will display the unreleased pointers list, file name and the line number where this pointer was allocated.
DRAW BACKS: If free() is called on already released pointers, thebehaviour is undefined. Assert statements may be used (doesntwork) to take corrective action.
***************************************************************/
#include "stdio.h"
#include "stdlib.h"
#include <>
#include <>
struct leaklist{
int line_number;
char *file_name;
int* mem_ptr;
struct leaklist *next;
};
struct leaklist *list_head;
//typedef struct __leaklist leaklist;

void add_to_leak_list(struct leaklist **list_head, void *ptr,
int buf_size, char *str, int line_no)
{
struct leaklist *new_ptr;
struct leaklist *temp_ptr;
temp_ptr = *list_head;
if(temp_ptr == NULL)
{
temp_ptr = (struct leaklist *)malloc(sizeof(struct leaklist));
temp_ptr->mem_ptr = ptr;
temp_ptr->file_name = (char *)malloc(strlen(str) + 1);
strcpy(temp_ptr->file_name,str);
//printf("File_name: %s\n",temp_ptr->file_name);
temp_ptr->line_number = line_no;
//printf("add_to_leak_list(): temp_ptr->line_number = %d \n",
//temp_ptr->line_number);
//memcpy(temp_ptr->mem_ptr,ptr,buf_size);
temp_ptr->next = NULL;
*list_head = temp_ptr;
//printf("add_to_leak_list(): first node %d\n",*list_head);
}
else
{
while(temp_ptr->next != NULL)
{
temp_ptr = temp_ptr->next;
}
new_ptr = (struct leaklist *)malloc(sizeof(struct leaklist));
if(new_ptr == NULL)
{
printf("\n malloc returned NULL : EXITING \n");
exit(0);
}
//printf("add_to_leak_list(): value of ptr = %d \n", new_ptr);
new_ptr->mem_ptr = ptr;
new_ptr->file_name = (char *)malloc(strlen(str) + 1);
strcpy(new_ptr->file_name,str);
new_ptr->line_number = line_no;
//printf("add_to_leak_list(): temp_ptr->line_number = %d \n",
//temp_ptr->line_number);
//memcpy(temp_ptr->mem_ptr,ptr,buf_size);
new_ptr->next = NULL;
temp_ptr->next = new_ptr;
}
}
void delete_from_leak_list(struct leaklist **list_head, void *ptr)
{
struct leaklist *old_ptr = NULL, *temp_ptr = NULL;
temp_ptr = *list_head;
if(NULL == ptr NULL == temp_ptr)
return;
while(temp_ptr->next != NULL)
{
if(temp_ptr->mem_ptr == ptr)
{
//if the node to be deleted is the head node
if(temp_ptr == *list_head)
{
*list_head = temp_ptr->next;
free(temp_ptr->file_name);
free(temp_ptr);
temp_ptr = NULL;
return;
}
else
{
//if the node to be deleted lies between start and
// end nodes
old_ptr->next = temp_ptr->next;
free(temp_ptr->file_name);
free(temp_ptr);
temp_ptr = NULL;
return;
}
}
else
{
old_ptr = temp_ptr;
temp_ptr = temp_ptr->next;
}
}
if(temp_ptr->next == NULL)
{
//check if the node is the last node in the list
if(temp_ptr->mem_ptr == ptr)
{
if(temp_ptr == *list_head)
*list_head = NULL;
else
old_ptr->next = NULL;
free(temp_ptr->file_name);
free(temp_ptr);
temp_ptr = NULL;
}
}
return;
}
void * my_malloc(unsigned int buf_size, char *str, int line_no)
{
void *ptr = NULL;
ptr = (void *)malloc(buf_size);
add_to_leak_list(&list_head,ptr,buf_size,str,line_no);
//printf("\n my_malloc(): __FILE__ %s \n",str);
//printf("my_malloc(): ptr=%u, buf_size=%d, line_no=%d \n",
//ptr, buf_size,line_no);
return ptr;
}
void my_free(void *buf_ptr)
{
//printf("my_free(): deleting from leak list buf_ptr = %u \n",buf_ptr);
//assert(buf_ptr != NULL);
delete_from_leak_list(&list_head,buf_ptr);
free(buf_ptr);
return;
}
void display_leak_list(struct leaklist **list_head)
{
int count = 0;
struct leaklist *temp_ptr;
temp_ptr = *list_head;
printf("\n");
if(temp_ptr == NULL)
{
printf("list is empty \n");
return;
}
while(temp_ptr != NULL)
{
printf("display_leak_list(): ");
printf("mem_ptr:%u, ",temp_ptr->mem_ptr);
printf("line_no:%d \n",temp_ptr->line_number);
printf("file_name:%s \n",temp_ptr->file_name);
temp_ptr = temp_ptr->next;
count++;
}
printf("Total Unreleased Pointers = %d,\n",count);
}
int main()
{
int a = 1, *ptr, *ptr1, *ptr2;
char name[] = "test1\n";
char *str1;
//ptr = (int *)malloc(sizeof(int));
ptr = (int *)my_malloc(sizeof(int),__FILE__,__LINE__);
*ptr = a;
printf("main(): value of ptr=%u, *ptr=%d\n",ptr,*ptr);
//str1 = (char*)malloc(sizeof(name));
str1 = (char *)my_malloc(sizeof(name), __FILE__,__LINE__);
strcpy(str1,name);
printf("main(): value of str1=%s \n",str1);
ptr1 = (int *)my_malloc(sizeof(int),__FILE__,__LINE__);
*ptr1 = 666;
printf("main(): value of ptr1=%u, *ptr1=%d\n",ptr1,*ptr1);
ptr2 = (int *)my_malloc(sizeof(int),__FILE__,__LINE__);
*ptr2 = 777;
printf("main(): value of ptr2=%u, *ptr2=%d\n",ptr2,*ptr2);
//free(ptr);
//free(str1);
//my_free(ptr);
my_free(ptr1);
my_free(str1);
//my_free(ptr1); //Releasing ptr1 2nd time does not work
//my_free(ptr2);
my_free(ptr); //Release pointers out of order
display_leak_list(&list_head);
return 0;
}
/*****************************************************/

Thursday, March 13, 2008

Scoring at VoIP Interviews - II

Now, since you are getting your basics right, lets move a step further. What really is VoIP (Voice Over IP Protocol) about? Why you need to look at VoIP option when you have traditional telephony?

The main competing protocols are SIP, H.323, MGCP and others include MEGACO, H.248 and proprietary standards from industry leaders and implementors.

A good overview of the VOIP protocols could be found at http://www.protocols.com/pbook/VoIPFamily.htm

There are numerous sites that offer information on these protocols. Some of the important ones include http://www.packetizer.com , Henning Schulzrinne's site http://www.cs.columbia.edu/~hgs , http://www.voip-info.org, http://www.voiponline.com, http://www.voip-jobs.com,

SIP specific sites (Base RFC 3261):
http://www.sipknowledge.com
http://www.sipcenter.com
http://www.tech-invite.com (A very good graphical representation of SIP call flows)
http://www.sipsak.org (SIP Swiss Army Knife -useful tool)
http://sipp.sourceforge.net (Open source test tool/traffic generator)

H.323 (It is a family of protocols which includes protocols like H.225, H.245, T.38, etc):
http://www.packetizer.com/ipmc/h323 (Excellent resource for all things H.323)
http://www.openh323.org/standards.html (Open H.323 is an open-source implementation of H.323 protocol suite and is used widely)

MGCP (Base RFCs - RFC 2705, RFC 3435):
http://www.packetizer.com/ipmc/mgcp

Scoring at VoIP Interviews - I

Now that you have a list of companies working in VoIP domain, the next step is how to score at one of these companies. To do good at interviews, you need to be good at programming languages like C, C++, data structures and algorithms, operating system concepts and database fundamentals in some instances. You may have to take written examinations in some cases as well.
I will list some websites here that I found very interesting over the last couple of years. Kindly keep adding more websites that would help in interviewing tips.
  1. http://www.careercup.com/ (Gayle Laakman of Google)
  2. http://www.devbistro.com/

There are host of other websites catering to the needs of interviewing folks but the above two stand out according to me.

VoIP Companies in Hyderabad

Here is a small attempt to compile a list of companies working in/on VoIP and related technologies.

1. www. azingo.com
2. www. avaya.com
3. www. broadcom.com
4. www. conexant.com
5. www. hellosoft.com
6. www. hcl.in
7. www. ibm.com
8. www. mars-india.com
9. www. motorola.com
10. www. oneconvergence.com
11. www. primesoft.com
12. www. polycom.com
13. www. qualcomm.com
14. www. sipera.com
15. www. tcs.com
16. www. tanlasolutions.com
17. www. verizon.com
18. www. wipro.com

If you want to know about the companies working on the latest technologies (mostly VOIP) around the world, don't forget to check out Jeff Pulver's "Pulver 100" at http://www.pulver.com/pulver100.