Tiscali is shit (oh, and monitor your web page load times with Ruby)
February 5th, 2008
UPDATE: apparently the inconsiderate bastard claiming ownership of my ADSL pipe is, in fact, quite entitled to do so - it's my ISP, Tiscali. Their bandwidth throttling is apparently a bit over-zealous. The Reg has more details on it - it's unusual of me to not follow their RSS feed but work has kept me busy lately. Suffice to say I won't be with Tiscali much longer.
Previous article follows...
It's become apparent that some inconsiderate bastard* in my neighbourhood has decided that the entire ADSL pipe for our area belongs to him. Every evening after about 5 or 6pm, our network grinds to a halt. At first it's just slow to load pages, but later it starts to take several minutes to access anything. Then, suddenly, late in the evening, everything returns to normal.
The ISP support guy (Tiscali, was Pipex) told me today that the second line support is in India, and they have no hesitation in passing the slightest ambiguity back to the UK. He wouldn't even believe me that it couldn't be a DNS issue with their old servers because I don't use their DNS servers (I use OpenDNS).
As part of the diagnostics, I was left collecting speed checks. Unfortunately, these turn out fine, as it's establishing the connection that is affected. So I wrote a Ruby script to load Google every 5 minutes for 24 hours.
* Now I've said that it will probably turn out to be an intermittent technical fault
Code follows, for anyone that may find it useful...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
require 'open-uri' def time start = Time.now begin yield rescue Timeout::Error => e return -(Time.now - start) end Time.now - start end start_time = load_time = nil File.open("connection_test.out", "w") do |f| f.sync = true (12*31).times do start_time = Time.now time_result = time do open("http://www.google.co.uk/") end load_time, timeout = if time_result < 0 [-time_result, true] else [time_result, false] end output = "#{start_time}:" + "#{timeout ? "Timeout in" : "Loaded in"} " + "#{load_time}" puts output f.puts output sleep 5*60 - load_time end end |
It's running now, and it due to finish about 6am Thursday morning...

February 6th, 2008 at 07:48 PM
Hi Ashley...
I've sent you an e-mail regarding this problem, along with details of what exactly is happening.
Thanks...
Matt