Lets Have A Competative Internet Built On National Infrastructure

The Problem

Every week, there is at least one new article describing how the internet services in "the last mile" generally "aren't working" in America for various reasons. The Verge seems to be especially good at covering this, and there was even an episode on Last Week Tonight, with John Oliver from the Daily Show. It seems to me that the issues of eroding net neutrality and the lack of bandwidth at competitive prices are due to the lack of competition with ISPs serving the "last mile" to your home. This statement is the premise of this post, and if you disagree then you might as well stop reading.

Why There Is So Little Competition

At the moment in America (and a lot of other countries), the last-mile ISPs lay down their own physical infrastructure. These are often referred to as "cable companies" and the two biggest players are Comcast and Time Warner who deliberately don't compete. Laying down physical infrastructure to homes is immensely expensive, and most companies cannot afford to lay down lines to every home whilst "capturing" only a percentage as subscribers.

What's The Solution?

Having each provider lay down their own set of cables to each and every home is just plain silly. This is similar to laying down power cables to your house for each of the different electricity companies there are, and making them pay for it. Instead, the solution is to treat these physical cables like any other infrastructure, such as roads, railways, water pipes, and power cables. The government should be responsible for building/maintaining the infrastructure, or paying competing private companies to do this for them. The lines have a set capacity which can then be divided up and leased out to private ISPs. Some ISPs may decide that they only want to lease a small amount of capacity and run a budget service for their subscribers, whilst others may decide to lease a larger amount for a "premium" service. This is similar to how mobile operators work, whereby smaller operators operate by "piggybacking" off of the infrastructure of larger operators such as T-mobile and Vodafone. These smaller operators charge a smaller fee, but only have a fraction of the capacity to operate within. The government pays for development initially through taxes, but then through the money it receives through leasing existing lines.

A Working Example

British Telecom in the UK is the closest example that I know about. There are actually two different entities that make up what most people think of as "BT". These are BT Openreach, a group that is responsible for laying down and maintaining the physical infrastructure, and BT itself as an ISP. BT operates only on the lines that BT Openreach is responsible for, but so do hundreds of other providers, such as TalkTalk and Sky. If you are with any ISP in the UK, other than Virgin Media, then you are probably using these lines. The only difference is that a private organization is laying down the lines rather than the government, however many/most of the original infrastructure was originally built when BT was a national organization run by the government rather than a private company. In the spirit of competition, the UK government created grants that private companies could bid for in order to build infrastructure, but then pretty much gave them all to BT.

How Will Competition Solve Net Neutrality?

This largely depends on market forces. If the people see net neutrality as one of their most important factors when choosing an ISP, then they may be prepared to pay slightly more for an ISP that provides this, thus growing that ISP's market share and perhaps forcing others to do the same in order to compete. This is much like how the organic food market has grown, along with free-range eggs. In my opinion, it would be better to enshrine net neutrality in law, but when I mention this to some, they tell me to "Go live in China".

How Will Competition Solve Bandwidth Issues?

As more ISPs move onto a line, or ISPs try to grab more capacity, prices per megabit on those lines will increase. The government, or private company, that maintains the lines will then have enough incentive to lay down more lines in order to increase the capacity that they can sell off. It's more profitable to lease 20 Gigabits at an average of $1 per megabit, rather than 10 Gigabits at an average of $1.9 per megabit. (These are not real-world numbers). The only risks are that if run by the government, they might not act on this demand (incompetence/bureaucracy), in which case this is a political policy that should influence your vote when electing your representatives. Alternatively, if a private company is leasing the lines as a monopoly, it may decide that it is simpler to just let the price-per-megabit increase, rather than investing capital in laying down more lines to increase revenues, which is why I prefer the government based strategy.

Setup OpenVPN On Android

There are many reasons why you might want to use a VPN, but the number one reason why you should use a VPN, is to ensure your connection at a public hotspot, such as at a hotel or airport, is much more secure.

This tutorial assumes you used one of my previous OpenVPN tutorials to create an OpenVPN server, and want to use that server for your android device's VPN. Thus you should have the following files on your local computer.

  • ca.crt
  • client.conf
  • client1.crt
  • client1.key
It does not matter if your files are named slightly differently, e.g. client.crt instead of client1.crt etc.

Configuration Steps

    Download the unofficial OpenVPN app, OpenVPN for Android, onto your device.
    Turn your client certificate and key into a single p12 file which is secured by a password.
    openssl pkcs12 \
    -export \
    -in client1.crt \
    -inkey client1.key \
    -out client1.p12 \
    -name client1
    You are going to have to type that password into the android device, so either make it easy to type, or use the wifi keyboard feature.
    Transfer the ca.crt, and the newly generated p12 file, onto your android device. For this I used the FTP server app so that I could transfer the files with Filezilla.
    Open up the App. You should see no profiles listed and will need to press the "ADD" button to create a new one. If you end up coming back later and need to continue configuring the profile, then you just need to press the other highlighted area shown below:
    Place the IP of the server in the "server address" field. Then click select next to "client certificate" and navigate to and select the pk12 file you generated earlier in this tutorial. Then for the CA certificate, select the ca.crt file you transferred across as well.
    For the IP and DNS settings, set "Pull Settings" to on, but override the DNS to use Google ( and
    You don't have to use Google's DNS, that's just what I recommend

Start The VPN

    To start the OpenVPN connection, go back to this screen and click the name of the profile, in this case "london".
    You should then see the screen below and your device will automatically connect. It does take a while and you may see some warning messages, but don't worry about this.
    You should now see the OpenVPN connection in the notification area.

Ubuntu 14.04 - TRIM Your SSD

Whilst watching htop when installing wine, I noticed a lot of disk wait time, which I thought was odd because I'm running a Samsung 830 SSD on Ubuntu 14.04. (If you're thinking about getting an SSD, I currently recommend the 840 EVO.) One of the "big features" of Ubuntu 14.04 was supposedly TRIM support, enabled by default, which should keep the SSD In fairly prime condition. It turns out that this is only "half the story".

Samsung And Intel Only

"Only Intel and Samsung SSDs will have TRIM enabled by default in Ubuntu 14.04 because some cheap SSDs can even brick themselves when running TRIM. This doesn't mean TRIM should only be used with Samsung and Intel SSDs, but to avoid running into issues, this is the only option for now." [ Source ]

Default Weekly Anacron TRIM

There is a script at

which executes the TRIM weekly with Anacron.

For those not familiar with Anacron, it's very much like the cron service, a utility that runs a task/script at a scheduled time or event (such as a reboot), except that with anacron, if the event was missed due to the computer being off at the time, anacron will trigger the script/task next time the computer is started up. The folders located at

/etc/cron.daily/, /etc/cron.weekly/
, and
Are folders that accept scripts which will be executed by the anacron service as root at the relevant time schedule (hourly, daily, weekly, monthly).

Using Anacron can be dangerous because if you miss the scheduled event several times (e.g. you just came back from a long holiday), it will cause the script/task to be triggered multiple times upon the next reboot (once for each missed scheduled occurance), so the script should handle this gracefully!

Manually Running TRIM

I wasn't prepared to wait until the weekly trigger for my SSD to be trimmed, and wanted to be sure that the SSD is getting trimmed, so I manually ran the TRIM with the following command:

sudo fstrim -v /