Working late? Probably you are incompetent, or someone is!

I have a colleague at my work place, he is a quite experienced guy and working on some complex algorithmic stuff in a complex team and I could throw in more complex shit but you got the point. He made a statement the other day, “I think people who work late are incompetent”.

At first glance, it sounded ridiculous to me, as I do work late sometimes! I do not consider myself incompetent, others might, but that is another story. I did quite a bit of thinking on this seemingly heavy statement of his, and you know what I partially agree to it. I want to tweak that statement a little bit, “I think people who work late are incompetent, or someone above them in the food chain is incompetent”. Just ignore the time when you were working late with pizza in one hand, when you had that zeal to finish a product which was cool and all. That was for you, I am talking about working late because someone asked you too. Either you did not plan your day well to finish that task in the 8 hours or, someone above you, got the estimation wrong, may be your manager spend a little too long smoking and lost the track of the timeline or whatever.

You see someone was surely incompetent due to which you are staying back late and completing your work.

Is your Background Intelligent Transfer Service (BITS) download slow ???

Well, I have been searching for an answer for this question for some time and ended up mostly on BITS articles explaining how BITS worked. I did spend some time with BITS for a recent project so I know few things around it. Here is my question from StackOverflow with 0 answers

Anyways, I decided to do some experiments around downloading files with BITS on a Windows XP SP3 machine with a LAN connection of 100Mbps. I guess it is a typical office connection. There are several network related services running on my machine, like VNC, Microsoft Office Communicator, Microsoft Outlook, Symantec Antivirus, and 1 other custom service. For testing, I have about 20 files, total size of around 8.5 Mb, and 1 zip file of almost same size.

Below are my observations for time taken in different conditions.

BITS job Priority 20 Files (8.5Mb) 1 zip file (8.56Mb)
Normal 35 min 16 min
Foreground 7.3 msec 2.5 msec

I know there is a startling difference between Normal and Foreground priority jobs, but it really depends on how much network throttling is done by BITS. But the point I want to make here is see the difference between the time taken for downloading 20 files and time taken to get 1 file or same size. BITS uses Round Robin algorithm within a queue of jobs of same priority. Thus having just 1 file improves the situation for BITS.

If you are responsible for building a tool which uses BITS to download stuff from a server on client machines, and you do not have control over the network policies and all that, at least try to zip all the files into 1 and download it. It surely improves the speed. If you are allowed to change the priorities of jobs, give an option to the user saying something like “Download Now”, which would change the Job priority to Foreground and things would come blazingly fast on the machine (hopefully!)

Happy Programming!