ISPs: raw speed vs. connectivity

I chose my current ISP on one criteria only: speed, especially upload speed. It’s Numericable fake fiber, i.e. fiber to the building. I really don’t care about the so-called “100 mega” download speed, but the upload speeds are at least 5 fives higher than standard DSL.
However, you don’t get access to the Internet. Dynamic IPv4, no IPv6, “no server allowed” (whatever that means), SMTP blocks, QoS, etc. isn’t Internet.

The logical step was to use my OVH server as a VPN, especially since it has unmetered bandwidth, IPv6, and I already pay for it. I just ran some tests and it’s actually faster going through the VPN! This is seriously broken.

44 down / 4.3 up / 49 ms
64 down / 12.3 up / 29 ms

Now, there are some bias; I get varying results depending on the test servers I’m using. Also, the ping to servers that matters to me are usually around 7 ms without the VPN, and the VPN can add another 7 ms, which is not negligible.

Moreover, using the OVH server IP space has downsides. Some websites give me different treatments. MySpace.com has the funniest behavior: it redirects any request to http://www.google.com/. Another website gave me an explicit message like “no servers allowed”. Some just block everything.

Posted in Networking, Sysadmin | Tagged , , , , , , | Leave a comment

Faster module creation for Weboob

From the start, creating a new weboob module was a pain, as you had a lot of repetitive copy-paste-alter tasks to do.
Since I can’t stand anything repetitive, I created a tool to speed up module creation, which was inspired from the now retired tools/gen_comic_reader.sh.

Now, when I see code generation, I usually think something must be wrong. In our case, what we are really doing is filling automatically some fields like author, class name, etc. A lot of web frameworks also do that kind of base code generation with success.

It’s a very simple tool, which provides “recipes”, those recipes being a set of templates. Though you can override them, it tries to guess as much details as possible, like your name and e-mail.

Here is an example session:

$ ./tools/boilerplate.py
usage: boilerplate.py [-h] [-a AUTHOR] [-e EMAIL] {base,comic,comic.test} ...
boilerplate.py: error: too few arguments
 
$ ./tools/boilerplate.py base "foo bar"
Created modules/foobar/__init__.py
Created modules/foobar/backend.py
Created modules/foobar/browser.py
Created modules/foobar/pages.py

The backend.py should look like:

# -*- coding: utf-8 -*-
 
# Copyright(C) 2013      Laurent Bachelier
#
# [...]
 
from weboob.tools.backend import BaseBackend
 
from .browser import FooBarBrowser
 
 
__all__ = ['FooBarBackend']
 
 
class FooBarBackend(BaseBackend):
    NAME = 'foobar'
    DESCRIPTION = u'foobar website'
    MAINTAINER = u'Laurent Bachelier'
    EMAIL = 'laurent@bachelier.name'
    VERSION = '0.f'
 
    BROWSER = FooBarBrowser

You can jump into the code right now!

As of now, there is only a minimal “base” recipe and the two “comic” recipes taken from the previous tool; however as boilerplate.py is intended to be highly extensible and maintainable, I hope it will support more specialized recipes soon (for example, “newspaper” or “pastebin”). You know what to do.

Posted in Python, Weboob | Leave a comment

New employer

I am now working for Budget Insight.

My work should be mostly Python, and for some part contributions to the weboob project.

Even though I’m not looking at all in that branch, I still get at least an e-mail a week for symfony-related work! I guess this is good for Symfony developers, though.

Posted in Meta, Weboob | Leave a comment