Wednesday, March 26, 2008
First Birthday Tips
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
Polycom Skype USB communicator
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
LEAK LIST EXAMPLE:
The program will store the file name and line numbers of all the
***************************************************************/
#include "stdio.h"
struct leaklist{
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
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
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.
- http://www.careercup.com/ (Gayle Laakman of Google)
- 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
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.