Unknown:
What other people think of you is none of your business.
There was a problem in earlier version of Sublines which caused problems in other types of subtitles. This problem has been fixed and latest code is uploaded. You can download the latest client from sublines site.
I have started an open source project called "Sublines" which allows the users to download subtitles on Mac OS X. Project is hosted on Google code site. Feel free to download and use if you need it.
Project Site: http://code.google.com/p/sublines/
As a programmer myself, I used to think that I do my job very carefully. I used to think that I am the person who really thinks about possibly everything before I actually write code and ship it.
I was wrong! I currently have an opportunity to work with a person who taught me what it means to put your heart and soul to software you are writing. He taught me what really unit testing means. He taught me the real meaning of "leaving no stone unturned".
And whats more surprising is the delight you get when all the hard work is done. You hear the validation engineer saying "I am already confident with this software, we have almost no issues". When you ask the market facing people about their demo setup, they say "all is going well". Writing a quality code takes efforts first time but makes us free from support trouble for a long time after that.
Yesterday we spent a lot of time of analysing the effects of backlog parameter on a server performance. It seems to affect the new connection acceptance rate. But what should be the right value for a high performance server?
It turns out that a right balance must be maintained when deciding the right value of backlog parameter. Selecting a too low value will result in new connections being refused in case of a connection burst and selecting a too high value will make your server vulnerable to syn attacks (taking food in the plate more than you can eat is always going to create problems).
So the backlog parameter must be decided based on following 2 criteria:
For example, if you are designing your server for maximum 100 connections per second and your server is so busy that it might not server new connection request for 500 msecs then your backlog should be 50!
But there are more interesting things. Various operating systems exhibit different behaviour with different backlog values.
Windows XP and Windows 7 both have a hard limit of 200. So any value of more than 200 will not have any effect and real backlog will be of 200 only. Though it does make sense considering these are desktop operating systems and aren’t supposed be hosting real world high performance server applications.
Windows Server 2003 (Standard edition) is very polite (may I say too polite) because it assumes an infinite value for backlog if given any value beyond 64.
To summarise:
| Given Value | Effective Value |
|---|---|
| 10 | 10 |
| 100 | 100 |
| 200 | 200 |
| 500 | 500 |
| Given Value | Effective Value |
|---|---|
| 10 | 10 |
| 50 | 50 |
| 63 | 63 |
| 64 | Infinite |
| 100 | Infinite |
Last surprise what that when experimented with Windows Server 2008 (standard edition), it showed the same behaviour as Windows XP and Windows 7! Well that was strange. I think the server must have some configurable parameter to control this behaviour. But I couldn’t experiment with it since it was too late in the office yesterday and my wife was yelling at me…
I have just finished experimenting with UDP using C# and .NET 3.5 and thought it would be nice to throw the findings on the blog to stop myself loosing track of them.
First of all, when you are listening for packets, it doesn’t matter whether that packet was only intended for you or it was a broadcast. Suppose you are member of an email group in your organisation. You receive emails sent to that group but you also receive emails that are sent only to you. The way you receive and read your emails is unaffected by the fact that whether it was sent to the whole group or just to you.
Similarly, when listening for UDP packets, you just get one when you should. So when we are listening for packets, life is simple and we just listen on given port:
socket.LocalEndPoint = new IPEndPoint (IPAddress.Any, n);
//Remote end point can be defined in following 2 ways:
socket.RemoteEndPoint = new IPEndPoint (IPAddress.Any, 0);
//or
socket.RemoteEndPoint = new IPEndPoint (IPAddress.Broadcast, 0);
If you wish to broadcast some packet to a given port, specifying local end point is not mandatory. If none is provided, a free port will be automatically picked. But we do need to specify remote end point:
//socket.LocalEndPoint = Not mandatory;
socket.RemoteEndPoint = new IPEndPoint (IPAddress.Broadcast, n);
If you wish to send an UDP packet to one computer specifically, you just need to define that IP address when setting remote end point. Local end point still remains optional:
//socket.LocalEndPoint = Not mandatory;
socket.RemoteEndPoint = new IPEndPoint (IPAddress.Parse("w.x.y.z"), n);
Chetan Bhagat brings the same witty sense of humour that we all have learnt to love. Still you can’t say you didn’t find anything new in book.
This book is about a punjabi boy Krish who falls in love with a madrasi, o’oh Tamilian Iyer Brahmin girl named Ananya during the course of his MBA from IIM, Ahemedabad. But don’t think the book is about how they fall in love. That’s just first 25 pages after which you find them in love (and sex off-course). The book is about what happens after that. The book is about how the boy starts his difficult journey to his marriage. Which means both his and her family has to love each other. Which becomes a herculean task considering both comes from very different states, culture and expectations!
Krish’s mother is very talkative and she gives all the reasons to Ananya’s family to hate the boy but he doesn’t give up. He wins the heart of girl’s family one by one. Once that mission is accomplished, its now girls turn to impress boy’s family. Just when you think everything is going well, some ugly incidents take them back to square one.
The thing that stands out in the novel is the flow of events that happen in Chennai which brings the boy in the good book of Ananya’s family. Nothing seems unnatural or unbelievable when slowly but surely boy does his magic. The non-stop of supply of quick-humours makes it a splendid reading. But the incident which makes the Krish’s mother to accept the girl looks a slight bookish and even though my heart wants to believe it, brain refuses to do so. Apart from that one incident, other things fit well and even though the story of their marriage comes back on track almost by a miracle, it easily becomes understandable.
I don’t know if it is only me but at one point you think that boy is doing so much to make that marriage work and he loves the girl a lot but somehow you don’t feel the same way about the girl. She doesn’t seem to do enough to commit herself to marriage. At some places, you even find her arrogant and too harsh on the boy. You feel bad for him!
I have always been confused about how much of the novels that Chetan wrote, is actually true. Various novels seem to have a link with Chetan’s life and with each other. Off course, all of the stuff is not true because it takes more than just a single life to make so many interesting novels. But I can sure conclude following points which I believe are true incidents:
Things I liked about the book:
My recommendation? Just read it. It will be a fun ride!
In Mostly Harmless by Douglas Adams:
A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.