Categories
B4RM Computing

Better broadband for north Powys – part 2

Following my previous post about better broadband for north Powys, I tried to do some initial investigation on Facebook to see if this was something that would have enough interest to investigate further. I posted on local pages, mainly for villages in the Tanat valley, asking if people would be interested. Overall I was happy with the responses, and felt it warranted further investigation.

I have been in contact with B4RN to investigating the feasibility of working with them to connect to their existing Cheshire network, to bring high speed broadband to our local area, initially the Tanat valley and maybe the Cain valley areas, but there’s potential for the coverage area to grow.

For context B4RN now cover thousands of properties, over an area from Preston to Tebay and from Carnforth to Settle. That’s like the whole of Montgomeryshire (from several miles north west of Oswestry down past Llanidloes, and from Welshpool to Machynlleth). So that shows that not only is such a scheme possible, but that it can grow to benefit adjacent areas.


QUESTIONS

What would it cost to build and run such a network?
Initial rough estimates, based on B4RN’s experience are that the build cost of the network to each property is usually in the range of £1500 per property, though this may rise to £2500 for more complex properties
The cost of backhaul connectivity (i.e. connecting out network to the existing network in Cheshire would be around £22,000 per annum.

What would it cost to use?
B4RN’s existing prices are a £150 installation fee (waived if you invest £1500 in shares), then £30 per month.

How many people would be needed to make the scheme viable?
The initial estimate is that 250 properties would be needed for the scheme to be viable. The Tanat valley has around 1400 properties, and a 30% take up would yield 420 properties.

What financial help is available?
There are existing government voucher schemes, both from the Department of Culture, Media and Sport, and from Welsh government to assist with the costs of installing gigabit broadband. According to the Welsh government Gigabit Broadband voucher scheme web page, “for group projects in Wales up to £5,500 is available per business and up to £800 is available per residential property”. This could cover a large part of the build cost.

What areas would be covered?
Initially the Tanat valley is the area where most opinion has been canvassed. This includes: Llangynog; Hirnant; Penybontfawr; Llanrhaeadr-Ym-Mochnant; Rhos-y-Brithdir; Llangedwyn; Pen-y-Bont Llanerch Emrys.
There was also some interest expressed from the Cain valley. This includes: Llanfyllin; Llanfechain; Llansantffraid-Ym-Mechain.

What is needed next?
The next step is to try and get more people interested in the idea, see if we can get advocates, and people to sign up.

Categories
Rails

Ruby and Ruby on Rails version compatibility

I have recently been planning upgrades for an application which runs on both an old version of Ruby on Rails and an old version of Ruby.

The recommended upgrade path for rails is to upgrade through each version, rather than try and jump several versions in one go.  I.e 3.2 to 4.0 to 4.1 to 4.2 to 5.0 to 5.1 to 5.2. At each stage, a compatible version of Ruby will need to be used.

Finding which versions of Ruby are compatible with each rails version is quite hard, and while some rails release notes have recommended or minimum Ruby versions listed, there doesn’t seem to be a list of supported versions.

Googling reveals only old answers.

So I decided to see which versions of Ruby the rails project was testing against for each branch, on the basis that you wouldn’t test something if you weren’t going to try to support it. (UDPATE: Verified by David Heinemeier-Hansson)

From 9th April 2019, Buildkite was used for testing, so this information can be found in the rails.gemspec file in the rails source.

Versions of ruby specified by rails.gemspec, by -stable branch, excluding ruby-head:

Rails 6.0

  • >= 2.5.0

Rails 5.2

  • >= 2.2.2

Rails 5.1

  • >= 2.2.2

Rails 5.0

  • >= 2.2.2

Rails 4.2

  • >= 1.9.3

Rails 4.1

  • >= 1.9.3

Rails 4.0

  • >= 1.9.3

Rails 3.2

  • >= 1.8.7

Rails 3.1

  • >= 1.8.7

Rails 3.0

  • >= 1.8.7

Prior to 9th April 2019, travis-ci was used for testing, so this information can be found in the .travis.yml file in the rails source. Note that the .travis.yml file was removed from the rails source, so you’ll need to view the source prior to this commit.

Versions of ruby that were specified by .travis.yml, by -stable branch, excluding ruby-head:

Rails 3.0

  • 1.8.7
  • 1.9.2
  • 1.9.3

Rails 3.1

  • 1.8.7
  • 1.9.2
  • 1.9.3

Rails 3.2

  • 1.8.7
  • 1.9.2
  • 1.9.3
  • 2.0.0
  • 2.1.8
  • 2.2.6
  • 2.3.3

Rails 4.0

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2

Rails 4.1

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2.4
  • 2.3.0

Rails 4.2

  • 1.9.3
  • 2.0.0-p648
  • 2.1.10
  • 2.2.10
  • 2.3.8
  • 2.4.5

Rails 5.0

  • 2.2.10
  • 2.3.8
  • 2.4.5

Rails 5.1

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Rails 5.2

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Rails 6.0

  • 2.5.3
  • 2.6.0
Correct as of 3rd January 2020.
Categories
B4RM Computing

Better broadband for North Powys

I’ve lived in Powys for 10 years, and I’ve always had good broadband, as I live only 200 metres from the telephone exchange. This means that I’ve got used to being able to watch Netflix, stream music, backup devices to the cloud, FaceTime people and work from home, connecting back to work.

Many people in Powys aren’t so lucky though. Powys is the most sparsely populated county in England and Wales, and broadband provision is either difficult or impossible.

Soon, I hope to join them, as I’m moving house. The house I’m planning to move to has an estimated broadband speed of 1 Mbps. That’s poor by today’s standards.

There are options to get faster internet connectivity, such as satellite broadband, and subsidies are available (in Wales) to help with installation costs. It seems overly complicated though, it’s often not as fast as good broadband, and it can be quite pricy too.

There is an option though, for better broadband, which is quite radical, but not a pipe dream, and has been done before.

Build it yourself.

Rural Lancashire faces the same connectivity problems as Powys, and for the last 6 years B4RN have been successfully laying fibre optics to households and businesses in the area, providing fast internet connections at a very reasonable price. The best thing is that they distribute their profits to the local community.

How do they do this? In a nutshell they:

  • Set up as a community benefit society — a special type of legal entity.
  • Raise funding by issuing shares, in a manner which attracts investment from locals and makes investment advantageous for taxation purposes.
  • Choose a central point in their coverage area to connect to the internet at a very high speed.
  • Get landowners to grant wayleaves for buried cables to cross their land
  • Get local volunteers involved to lay fibre optic cables crossing country from the central point to local communities, offering shares in exchange for effort.
  • Offer fast internet connectivity to everyone in the community, at very reasonable prices.

B4RN have been doing this since 2001, and have been making a success of it.

To provide a comparison, I currently pay £39 per month for line rental and 80(ish) Mbps internet connectivity. When I move, I expect to pay £25 per month for line rental and 1(ish) Mbps internet connectivity. B4RN currently offer their customers 1000 Mbps internet connectivity for £150 installation charge, plus £30 per month.

I don’t see any reason why something similar to what B4RN are doing in Lancashire couldn’t be done in North Powys.

What’s needed is for people to express their serious interest, whether that’s interest in investing in a community benefit scheme, interest in being a potential customer, interest in helping build it, or interest in general.

So, who’s interested?

If you’re interested in translating this article in to Welsh I’d love to hear from you.

Want to see someone else’s experience of B4RN? Have a look at this article.

Finally, what areas this might benefit from this (not an exhaustive list):

  • Llanwddyn
  • Llanfyllin
  • Llangynog
  • Penybontfawr
  • Llanrhaedr-ym-mochnant
  • Llangedwyn
  • Llanfechain
  • Bwlch-y-cibau
  • Meifod
Categories
Business

VAT registration and the flat rate

Disclaimer: I’m not an accountant, this is not tax advice, this contains assumptions and simplifications. Also, apologies to the accountants I know for mangling accounting theories and terms.

When the time comes to register for VAT, there are two schemes available to register for: The standard VAT scheme, and the flat rate VAT scheme.

The purpose of VAT is for HMRC to charge tax on all the value you add in the course of your business.

The standard rate VAT scheme requires you to charge VAT on all your sales, and in return you can reclaim VAT on all your purchases. This requires you to keep track of the VAT on your expenditure. At the end of this exercise, you should have collected VAT on behalf of HMRC equivalent to your expenditure less your purchases. You then pay this difference to HMRC.

The flat rate scheme is supposed to be simpler. This requires you to charge VAT on all your sales, and you then pay a proportion of your VAT-inclusive turnover to HMRC. The proportion you pay depends upon your industry. For IT consultancy this rate is 14.5%, and for your first year there is a 1% discount on the rate you pay.

At first glance, the flat rate scheme sounds attractive. 14.5% is certainly less than 20%, so it sounds like an incentive to go on the simpler scheme. A 1% discount sounds like an additional bonus. So what are the downsides of the flat rate scheme? The biggest difference is that you aren’t able to reclaim the VAT on your expenditure (except for certain capital purchases over £2000, but let’s try and keep this simple). So which scheme should you choose? Let’s work out which is better.

First, let’s make some assumptions and definitions:

  • All our example company’s expenditure will be VAT rated at 20%
  • All our example company’s sales will be VAT rated at 20%
  • The flat rate is 14.5%
  • There is no capital expenditure on which VAT is reclaimable
  • We’ll call our gross sales figure S
  • We’ll call our gross expenditure figure E
  • We’ll call our profit P, this being the value we’re left with after selling our goods & services, paying our expenditure, and dealing with VAT. Pf is profit on the flat rate scheme, Ps is profit on the standard scheme.

On the flat rate scheme, we charge VAT on our sales (S), we pay VAT on our expenditure (E), and we get to keep 85.5% of our sales-plus-VAT.

Pf = (S * 1.2) * 0.855 – E * 1.2

On the standard scheme, we get all the VAT on our expenditure back, and while we charge VAT on our sales, we don’t get to keep it!

Ps = SE

So how do these schemes compare in two extreme scenarios: When a company has no expenditure, and when a company’s expenditure is equal to its sales?

When we have no expenditure (i.e. E = 0):
Pf = S * 1.2  * 0.855 = S * 1.026
Ps = S

So in this contrived scenario the flat rate scheme is equivalent to a 2.6% income bonus! What about when expenditure is equal to sales (i.e. E = S)?

Pf = (S * 1.2) * 0.855 – S * 1.2 = -0.174 * S
Ps = SS = 0

So in this scenario the flat rate will leave you 17.4% worse off!

A consultant will at first glance appear to be closer to the first scenario than the second, as there are no goods being resold to lose VAT on. However, it’s not like there is no expenditure, such as accountants, telephone costs, hotel costs.

So the next question for enquiring minds is at what expenditure/sales ratio are the two schemes equal? Knowing this ratio will allow us to estimate what our own future ratio might be, and therefore which scheme might be better for us.

So if the expenditure/sales ratio, E/S = x, we want to solve x where Pf = Ps.

E/S = x
E = S * x

Pf = Ps
(S * 1.2) * 0.855 – E * 1.2 = S – E
(S * 1.2) * 0.855 – S * x * 1.2 = S – S * x
1.2 * 0.855 – x * 1.2 = 1 – x
1.2 * 0.855 – 1 = x * 1.2 – x
0.026 = x * 0.2
0.13 = x

So for any expenditure/sales ratio below 0.13 we expect the flat rate scheme to be more beneficial for us, up to 2.6% better than the standard scheme.

For any expenditure/sales ratio above 0.13 we expect the flat rate scheme to be worse for us.

Hopefully this will help others decide which scheme may be better for them, and there is enough information to adjust for different flat rates for different industries and introductory discounts.

Happy VATting!

Categories
Business Computing Information Security

Starting out alone in Information Security and IT consultancy

After 10 years with my previous employer I was made redundant at the end of January.

Rather than rush straight to the job boards in a state of panic, I’m looking at this as an opportunity.

For several years I have considered Information Security and IT consultancy as a career path, but never been in a position to take the first big step. Now I have that opportunity.

So, Option 13 is now available to service the Information Security and IT needs of small and medium businesses looking for an experienced consultant.

Categories
FreeBSD

BitTorrent Magnet links for FreeBSD

Since the FreeBSD torrent tracker has been taken offline, and it appears that it won’t be coming back, you may be able to use a magnet link, so here they are. Each magnet link announces to three public trackers, to try and increase the size of the swarm.

Current FreeBSD versions

FreeBSD-7.4-RELEASE-amd64-all
FreeBSD-7.4-RELEASE-amd64-bootonly
FreeBSD-7.4-RELEASE-amd64-disc1
FreeBSD-7.4-RELEASE-amd64-disc2
FreeBSD-7.4-RELEASE-amd64-disc3
FreeBSD-7.4-RELEASE-amd64-docs
FreeBSD-7.4-RELEASE-amd64-dvd1
FreeBSD-7.4-RELEASE-amd64-livefs
FreeBSD-7.4-RELEASE-i386-all
FreeBSD-7.4-RELEASE-i386-bootonly
FreeBSD-7.4-RELEASE-i386-disc1
FreeBSD-7.4-RELEASE-i386-disc2
FreeBSD-7.4-RELEASE-i386-disc3
FreeBSD-7.4-RELEASE-i386-docs
FreeBSD-7.4-RELEASE-i386-dvd1
FreeBSD-7.4-RELEASE-i386-livefs
FreeBSD-8.3-RELEASE-amd64-all
FreeBSD-8.3-RELEASE-amd64-bootonly
FreeBSD-8.3-RELEASE-amd64-disc1
FreeBSD-8.3-RELEASE-amd64-dvd1
FreeBSD-8.3-RELEASE-amd64-livefs
FreeBSD-8.3-RELEASE-amd64-memstick
FreeBSD-8.3-RELEASE-i386-all
FreeBSD-8.3-RELEASE-i386-bootonly
FreeBSD-8.3-RELEASE-i386-disc1
FreeBSD-8.3-RELEASE-i386-dvd1
FreeBSD-8.3-RELEASE-i386-livefs
FreeBSD-8.3-RELEASE-i386-memstick
FreeBSD-9.1-RELEASE-amd64-all
FreeBSD-9.1-RELEASE-amd64-bootonly
FreeBSD-9.1-RELEASE-amd64-disc1
FreeBSD-9.1-RELEASE-amd64-dvd1
FreeBSD-9.1-RELEASE-amd64-memstick
FreeBSD-9.1-RELEASE-i386-all
FreeBSD-9.1-RELEASE-i386-bootonly
FreeBSD-9.1-RELEASE-i386-disc1
FreeBSD-9.1-RELEASE-i386-dvd1
FreeBSD-9.1-RELEASE-i386-memstick
FreeBSD-7.4-RELEASE-pc98-all
FreeBSD-7.4-RELEASE-pc98-bootonly
FreeBSD-7.4-RELEASE-pc98-disc1
FreeBSD-7.4-RELEASE-pc98-livefs
FreeBSD-7.4-RELEASE-sparc64-all
FreeBSD-7.4-RELEASE-sparc64-bootonly
FreeBSD-7.4-RELEASE-sparc64-disc1
FreeBSD-7.4-RELEASE-sparc64-disc2
FreeBSD-7.4-RELEASE-sparc64-disc3
FreeBSD-7.4-RELEASE-sparc64-docs
FreeBSD-8.3-RELEASE-pc98-all
FreeBSD-8.3-RELEASE-pc98-bootonly
FreeBSD-8.3-RELEASE-pc98-disc1
FreeBSD-8.3-RELEASE-pc98-livefs
FreeBSD-8.3-RELEASE-sparc64-all
FreeBSD-8.3-RELEASE-sparc64-bootonly
FreeBSD-8.3-RELEASE-sparc64-disc1
FreeBSD-8.3-RELEASE-sparc64-dvd1
FreeBSD-8.3-RELEASE-sparc64-livefs
FreeBSD-9.1-RELEASE-powerpc64-all
FreeBSD-9.1-RELEASE-powerpc64-bootonly
FreeBSD-9.1-RELEASE-powerpc64-memstick
FreeBSD-9.1-RELEASE-powerpc64-release
FreeBSD-9.1-RELEASE-sparc64-all
FreeBSD-9.1-RELEASE-sparc64-bootonly
FreeBSD-9.1-RELEASE-sparc64-disc1

Previous FreeBSD versions

5.5-RELEASE-alpha-all
5.5-RELEASE-alpha-bootonly
5.5-RELEASE-alpha-disc1
5.5-RELEASE-alpha-disc2
5.5-RELEASE-pc98-all
5.5-RELEASE-pc98-disc1
5.5-RELEASE-sparc64-all
5.5-RELEASE-sparc64-bootonly
5.5-RELEASE-sparc64-disc1
5.5-RELEASE-sparc64-disc2
6.1-RELEASE-alpha-all
6.1-RELEASE-alpha-bootonly
6.1-RELEASE-alpha-disc1
6.1-RELEASE-alpha-disc2
6.1-RELEASE-ia64-all
6.1-RELEASE-ia64-bootonly
6.1-RELEASE-ia64-disc1
6.1-RELEASE-ia64-disc2
6.1-RELEASE-ia64-livefs
6.1-RELEASE-pc98-all
6.1-RELEASE-pc98-disc1
6.1-RELEASE-sparc64-all
6.1-RELEASE-sparc64-bootonly
6.1-RELEASE-sparc64-disc1
6.1-RELEASE-sparc64-disc2
6.2-RELEASE-alpha-all
6.2-RELEASE-alpha-bootonly
6.2-RELEASE-alpha-disc1
6.2-RELEASE-alpha-docs
6.2-RELEASE-ia64-all
6.2-RELEASE-ia64-bootonly
6.2-RELEASE-ia64-disc1
6.2-RELEASE-ia64-disc2
6.2-RELEASE-ia64-docs
6.2-RELEASE-ia64-livefs
6.2-RELEASE-pc98-all
6.2-RELEASE-pc98-bootonly
6.2-RELEASE-pc98-disc1
6.2-RELEASE-sparc64-all
6.2-RELEASE-sparc64-bootonly
6.2-RELEASE-sparc64-disc1
6.2-RELEASE-sparc64-disc2
6.2-RELEASE-sparc64-docs
6.3-RELEASE-alpha-all
6.3-RELEASE-alpha-bootonly
6.3-RELEASE-alpha-disc1
6.3-RELEASE-alpha-disc2
6.3-RELEASE-alpha-disc3
6.3-RELEASE-alpha-docs
6.3-RELEASE-pc98-all
6.3-RELEASE-pc98-bootonly
6.3-RELEASE-pc98-disc1
6.3-RELEASE-sparc64-all
6.3-RELEASE-sparc64-bootonly
6.3-RELEASE-sparc64-disc1
6.3-RELEASE-sparc64-disc2
6.3-RELEASE-sparc64-disc3
6.3-RELEASE-sparc64-docs
6.4-RELEASE-pc98-all
6.4-RELEASE-pc98-bootonly
6.4-RELEASE-pc98-disc1
6.4-RELEASE-sparc64-all
6.4-RELEASE-sparc64-bootonly
6.4-RELEASE-sparc64-disc1
6.4-RELEASE-sparc64-docs
7.0-RELEASE-ia64-all
7.0-RELEASE-ia64-bootonly
7.0-RELEASE-ia64-disc1
7.0-RELEASE-ia64-disc2
7.0-RELEASE-ia64-disc3
7.0-RELEASE-ia64-docs
7.0-RELEASE-ia64-livefs
7.0-RELEASE-pc98-all
7.0-RELEASE-pc98-bootonly
7.0-RELEASE-pc98-disc1
7.0-RELEASE-pc98-livefs
7.0-RELEASE-powerpc-all
7.0-RELEASE-powerpc-bootonly
7.0-RELEASE-powerpc-disc1
7.0-RELEASE-powerpc-disc2
7.0-RELEASE-powerpc-disc3
7.0-RELEASE-powerpc-docs
7.1-RELEASE-ia64-all
7.1-RELEASE-ia64-bootonly
7.1-RELEASE-ia64-disc1
7.1-RELEASE-ia64-disc2
7.1-RELEASE-ia64-disc3
7.1-RELEASE-ia64-docs
7.1-RELEASE-ia64-livefs
7.1-RELEASE-pc98-all
7.1-RELEASE-pc98-bootonly
7.1-RELEASE-pc98-disc1
7.1-RELEASE-pc98-livefs
7.1-RELEASE-powerpc-all
7.1-RELEASE-powerpc-bootonly
7.1-RELEASE-powerpc-disc1
7.1-RELEASE-powerpc-disc2
7.1-RELEASE-powerpc-disc3
7.1-RELEASE-powerpc-docs
7.1-RELEASE-sparc64-all
7.1-RELEASE-sparc64-bootonly
7.1-RELEASE-sparc64-disc1
7.1-RELEASE-sparc64-disc2
7.1-RELEASE-sparc64-disc3
7.1-RELEASE-sparc64-docs
7.2-RELEASE-ia64-all
7.2-RELEASE-ia64-bootonly
7.2-RELEASE-ia64-disc1
7.2-RELEASE-ia64-docs
7.2-RELEASE-ia64-livefs
7.2-RELEASE-pc98-all
7.2-RELEASE-pc98-bootonly
7.2-RELEASE-pc98-disc1
7.2-RELEASE-pc98-livefs
7.2-RELEASE-powerpc-all
7.2-RELEASE-powerpc-bootonly
7.2-RELEASE-powerpc-disc1
7.2-RELEASE-powerpc-docs
7.2-RELEASE-sparc64-all
7.2-RELEASE-sparc64-bootonly
7.2-RELEASE-sparc64-disc1
7.2-RELEASE-sparc64-docs
8.0-RELEASE-ia64-all
8.0-RELEASE-ia64-bootonly
8.0-RELEASE-ia64-disc1
8.0-RELEASE-ia64-disc2
8.0-RELEASE-ia64-disc3
8.0-RELEASE-ia64-dvd1
8.0-RELEASE-ia64-livefs
8.0-RELEASE-pc98-all
8.0-RELEASE-pc98-bootonly
8.0-RELEASE-pc98-disc1
8.0-RELEASE-pc98-livefs
8.0-RELEASE-powerpc-all
8.0-RELEASE-powerpc-bootonly
8.0-RELEASE-powerpc-disc1
8.0-RELEASE-powerpc-disc2
8.0-RELEASE-powerpc-disc3
8.0-RELEASE-sparc64-all
8.0-RELEASE-sparc64-bootonly
8.0-RELEASE-sparc64-disc1
8.0-RELEASE-sparc64-dvd1
8.0-RELEASE-sparc64-livefs
8.1-RELEASE-ia64-all
8.1-RELEASE-pc98-all
8.1-RELEASE-powerpc-all
8.1-RELEASE-sparc64-all
FreeBSD-7.3-RELEASE-pc98-all
FreeBSD-7.3-RELEASE-pc98-bootonly
FreeBSD-7.3-RELEASE-pc98-disc1
FreeBSD-7.3-RELEASE-pc98-livefs
FreeBSD-7.3-RELEASE-sparc64-all
FreeBSD-7.3-RELEASE-sparc64-bootonly
FreeBSD-7.3-RELEASE-sparc64-disc1
FreeBSD-7.3-RELEASE-sparc64-disc2
FreeBSD-7.3-RELEASE-sparc64-disc3
FreeBSD-7.3-RELEASE-sparc64-docs
FreeBSD-8.1-RELEASE-ia64-bootonly
FreeBSD-8.1-RELEASE-ia64-disc1
FreeBSD-8.1-RELEASE-ia64-dvd1
FreeBSD-8.1-RELEASE-ia64-livefs
FreeBSD-8.1-RELEASE-pc98-bootonly
FreeBSD-8.1-RELEASE-pc98-disc1
FreeBSD-8.1-RELEASE-pc98-livefs
FreeBSD-8.1-RELEASE-powerpc-bootonly
FreeBSD-8.1-RELEASE-powerpc-disc1
FreeBSD-8.1-RELEASE-sparc64-bootonly
FreeBSD-8.1-RELEASE-sparc64-disc1
FreeBSD-8.1-RELEASE-sparc64-dvd1
FreeBSD-8.1-RELEASE-sparc64-livefs
FreeBSD-8.2-RELEASE-ia64-all
FreeBSD-8.2-RELEASE-ia64-bootonly
FreeBSD-8.2-RELEASE-ia64-disc1
FreeBSD-8.2-RELEASE-ia64-dvd1
FreeBSD-8.2-RELEASE-ia64-livefs
FreeBSD-8.2-RELEASE-pc98-all
FreeBSD-8.2-RELEASE-pc98-bootonly
FreeBSD-8.2-RELEASE-pc98-disc1
FreeBSD-8.2-RELEASE-pc98-livefs
FreeBSD-8.2-RELEASE-powerpc-all
FreeBSD-8.2-RELEASE-powerpc-bootonly
FreeBSD-8.2-RELEASE-powerpc-disc1
FreeBSD-8.2-RELEASE-powerpc-livefs
FreeBSD-8.2-RELEASE-sparc64-all
FreeBSD-8.2-RELEASE-sparc64-bootonly
FreeBSD-8.2-RELEASE-sparc64-disc1
FreeBSD-8.2-RELEASE-sparc64-dvd1
FreeBSD-8.2-RELEASE-sparc64-livefs
FreeBSD-9.0-RELEASE-ia64-all
FreeBSD-9.0-RELEASE-ia64-bootonly
FreeBSD-9.0-RELEASE-ia64-memstick
FreeBSD-9.0-RELEASE-ia64-release
FreeBSD-9.0-RELEASE-powerpc-all
FreeBSD-9.0-RELEASE-powerpc-bootonly
FreeBSD-9.0-RELEASE-powerpc-memstick
FreeBSD-9.0-RELEASE-powerpc-release
FreeBSD-9.0-RELEASE-powerpc64-all
FreeBSD-9.0-RELEASE-powerpc64-bootonly
FreeBSD-9.0-RELEASE-powerpc64-memstick
FreeBSD-9.0-RELEASE-powerpc64-release
FreeBSD-9.0-RELEASE-sparc64-all
FreeBSD-9.0-RELEASE-sparc64-bootonly
FreeBSD-9.0-RELEASE-sparc64-disc1
5.5-RELEASE-amd64-all
5.5-RELEASE-amd64-bootonly
5.5-RELEASE-amd64-disc1
5.5-RELEASE-amd64-disc2
5.5-RELEASE-i386-all
5.5-RELEASE-i386-bootonly
5.5-RELEASE-i386-disc1
5.5-RELEASE-i386-disc2
6.1-RELEASE-amd64-all
6.1-RELEASE-amd64-bootonly
6.1-RELEASE-amd64-disc1
6.1-RELEASE-amd64-disc2
6.1-RELEASE-i386-all
6.1-RELEASE-i386-bootonly
6.1-RELEASE-i386-disc1
6.1-RELEASE-i386-disc2
6.2-RELEASE-amd64-all
6.2-RELEASE-amd64-bootonly
6.2-RELEASE-amd64-disc1
6.2-RELEASE-amd64-disc2
6.2-RELEASE-amd64-docs
6.2-RELEASE-i386-all
6.2-RELEASE-i386-bootonly
6.2-RELEASE-i386-disc1
6.2-RELEASE-i386-disc2
6.2-RELEASE-i386-docs
6.3-RELEASE-amd64-all
6.3-RELEASE-amd64-bootonly
6.3-RELEASE-amd64-disc1
6.3-RELEASE-amd64-disc2
6.3-RELEASE-amd64-disc3
6.3-RELEASE-amd64-docs
6.3-RELEASE-i386-all
6.3-RELEASE-i386-bootonly
6.3-RELEASE-i386-disc1
6.3-RELEASE-i386-disc2
6.3-RELEASE-i386-disc3
6.3-RELEASE-i386-docs
6.4-RELEASE-amd64-all
6.4-RELEASE-amd64-bootonly
6.4-RELEASE-amd64-disc1
6.4-RELEASE-amd64-disc2
6.4-RELEASE-amd64-disc3
6.4-RELEASE-amd64-docs
6.4-RELEASE-i386-all
6.4-RELEASE-i386-bootonly
6.4-RELEASE-i386-disc1
6.4-RELEASE-i386-disc2
6.4-RELEASE-i386-disc3
6.4-RELEASE-i386-docs
7.0-RELEASE-amd64-all
7.0-RELEASE-amd64-bootonly
7.0-RELEASE-amd64-disc1
7.0-RELEASE-amd64-disc2
7.0-RELEASE-amd64-disc3
7.0-RELEASE-amd64-docs
7.0-RELEASE-amd64-livefs
7.0-RELEASE-i386-all
7.0-RELEASE-i386-bootonly
7.0-RELEASE-i386-disc1
7.0-RELEASE-i386-disc2
7.0-RELEASE-i386-disc3
7.0-RELEASE-i386-docs
7.0-RELEASE-i386-livefs
7.1-RELEASE-amd64-all
7.1-RELEASE-amd64-bootonly
7.1-RELEASE-amd64-disc1
7.1-RELEASE-amd64-disc2
7.1-RELEASE-amd64-disc3
7.1-RELEASE-amd64-docs
7.1-RELEASE-amd64-dvd1
7.1-RELEASE-amd64-livefs
7.1-RELEASE-i386-allv
7.1-RELEASE-i386-bootonly
7.1-RELEASE-i386-disc1
7.1-RELEASE-i386-disc2
7.1-RELEASE-i386-disc3
7.1-RELEASE-i386-docs
7.1-RELEASE-i386-dvd1
7.1-RELEASE-i386-livefs
7.2-RELEASE-amd64-all
7.2-RELEASE-amd64-bootonly
7.2-RELEASE-amd64-disc1
7.2-RELEASE-amd64-disc2
7.2-RELEASE-amd64-disc3
7.2-RELEASE-amd64-docs
7.2-RELEASE-amd64-dvd1
7.2-RELEASE-amd64-livefs
7.2-RELEASE-i386-all
7.2-RELEASE-i386-bootonly
7.2-RELEASE-i386-disc1
7.2-RELEASE-i386-disc2
7.2-RELEASE-i386-disc3
7.2-RELEASE-i386-docs
7.2-RELEASE-i386-dvd1
7.2-RELEASE-i386-livefs
8.0-RELEASE-amd64-all
8.0-RELEASE-amd64-bootonly
8.0-RELEASE-amd64-disc1
8.0-RELEASE-amd64-dvd1
8.0-RELEASE-amd64-livefs
8.0-RELEASE-amd64-memstick
8.0-RELEASE-i386-all
8.0-RELEASE-i386-bootonly
8.0-RELEASE-i386-disc1
8.0-RELEASE-i386-dvd1
8.0-RELEASE-i386-livefs
8.0-RELEASE-i386-memstick
8.1-RELEASE-amd64-all
8.1-RELEASE-i386-all
FreeBSD-7.3-RELEASE-amd64-all
FreeBSD-7.3-RELEASE-amd64-bootonly
FreeBSD-7.3-RELEASE-amd64-disc1
FreeBSD-7.3-RELEASE-amd64-disc2
FreeBSD-7.3-RELEASE-amd64-disc3
FreeBSD-7.3-RELEASE-amd64-docs
FreeBSD-7.3-RELEASE-amd64-dvd1
FreeBSD-7.3-RELEASE-amd64-livefs
FreeBSD-7.3-RELEASE-i386-all
FreeBSD-7.3-RELEASE-i386-bootonly
FreeBSD-7.3-RELEASE-i386-disc1
FreeBSD-7.3-RELEASE-i386-disc2
FreeBSD-7.3-RELEASE-i386-disc3
FreeBSD-7.3-RELEASE-i386-docs
FreeBSD-7.3-RELEASE-i386-dvd1
FreeBSD-7.3-RELEASE-i386-livefs
FreeBSD-8.1-RELEASE-amd64-bootonly
FreeBSD-8.1-RELEASE-amd64-disc1
FreeBSD-8.1-RELEASE-amd64-dvd1
FreeBSD-8.1-RELEASE-amd64-livefs
FreeBSD-8.1-RELEASE-amd64-memstick
FreeBSD-8.1-RELEASE-i386-bootonly
FreeBSD-8.1-RELEASE-i386-disc1
FreeBSD-8.1-RELEASE-i386-dvd1
FreeBSD-8.1-RELEASE-i386-livefs
FreeBSD-8.1-RELEASE-i386-memstick
FreeBSD-8.2-RELEASE-amd64-all
FreeBSD-8.2-RELEASE-amd64-bootonly
FreeBSD-8.2-RELEASE-amd64-disc1
FreeBSD-8.2-RELEASE-amd64-dvd1
FreeBSD-8.2-RELEASE-amd64-livefs
FreeBSD-8.2-RELEASE-amd64-memstick
FreeBSD-8.2-RELEASE-i386-all
FreeBSD-8.2-RELEASE-i386-bootonly
FreeBSD-8.2-RELEASE-i386-disc1
FreeBSD-8.2-RELEASE-i386-dvd1
FreeBSD-8.2-RELEASE-i386-livefs
FreeBSD-8.2-RELEASE-i386-memstick
FreeBSD-9.0-RELEASE-amd64-all
FreeBSD-9.0-RELEASE-amd64-bootonly
FreeBSD-9.0-RELEASE-amd64-disc1
FreeBSD-9.0-RELEASE-amd64-dvd1
FreeBSD-9.0-RELEASE-amd64-memstick
FreeBSD-9.0-RELEASE-i386-all
FreeBSD-9.0-RELEASE-i386-bootonly
FreeBSD-9.0-RELEASE-i386-disc1
FreeBSD-9.0-RELEASE-i386-dvd1
FreeBSD-9.0-RELEASE-i386-memstick

Categories
FreeBSD

Installing sqlite3 ruby gem on FreeBSD

If you try to install (or update) the sqlite3 ruby gem on FreeBSD, you might get the following error:

sudo gem update sqlite3
Updating installed gems
Updating sqlite3
Fetching: sqlite3-1.3.5.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.

/usr/local/bin/ruby18 extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/ruby18
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/lib
--enable-local
--disable-local

Gem files will remain installed in /usr/local/lib/ruby/gems/1.8/gems/sqlite3-1.3.5 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.8/gems/sqlite3-1.3.5/ext/sqlite3/gem_make.out
Nothing to update

The gem doesn’t include the correct locations to check for the sqlite3 headers, so we’ll have to tell it where to look ourself:

sudo CONFIGURE_ARGS="with-sqlite3-include=/usr/local/include" gem install sqlite3

Job done.

Categories
Computing

Netgear DGN1000 review

After an intermittent failure of my previous ADSL router, I thought long and hard about whether I could justify spending many hundreds of pounds on a nice Cisco 1800, I decided to go cheap and buy a bottom-of-the-range Netgear. After all, I’d had Netgear routers in the past, with few problems. So I bought the Netgear DGN1000.
The best thing about this router is that it has a power button. This is useful because you’ll be using it a lot.
The biggest problem with this router is that it randomly stops routing data between the WAN and the wireless network. Or sometimes it does route data, but at around 1Kb/s. Sometimes this failure to route data happens after several hours, sometimes it can happen within minutes. The only resolution is to reboot the router.
So apart from the constant failures, it’s fine. Except the automatic firmware update doesn’t work (it fails to recognise that there’s a newer firmware available), and WPS doesn’t appear to work at all.
This is the first piece of IT hardware I’ve ever felt like driving over in my car.
On this occasion I’ll return it as faulty instead.

Categories
Uncategorized

Daily Mail corrects incorrect facts, but not the biggest ones

The BEA released a briefing about the loss of Air France flight 447 today. The flight involved a descent of 3 minutes 30 seconds, during which the aircraft was stalled. All 228 on board lost their lives. The briefing specifically says

the engines were operating and always responded to crew commands.

Earlier in the day, the Daily Mail published an article with the headline “Terrifying final moments of doomed Air France flight revealed: Passengers endured three-minute plunge before crash”, and the sub-headlines include “…engines began to fail…” and “…engines stalled…”, so it’s downright incorrect.

Screenshot of Daily Mail story
The early version of the story (thanks to istyosty.com)

Don’t worry though, because they’ve corrected it. The headline now says “FOUR MINUTE plunge”. Rounding up is better than rounding down, after all, and the use of capitals emphasises the difference. The sub-headlines mentioning engine failure are still there though. I wonder if it will ever be corrected.

Screenshot of Daily Mail story
The updated version of the story

Categories
Uncategorized

To the Daily Mail – people in glass houses shouldn’t throw stones

The Daily Mail try to have a laugh at the expense of The Independent in this article.

The article points out that on The Independent’s site you can alter the URL as long as you retain the article number. Of course, The Independent “were embarrassed”. Ho ho, we’re The Daily Mail, other newspapers aren’t as good as us and all that…

I wonder if the journalist who wrote the article (it’s not even credited to Daily Mail Reporter) thought to try it on the Mail’s website.

http://www.dailymail.co.uk/sciencetech/article-1378504/This-paper-is-written-by-a-bunch-of-twunts.html

http://www.dailymail.co.uk/sciencetech/article-1378504/We-will-find-any-excuse-to-tag-a-story-with-kate-middleton.html

Well would you believe it?

As long as you retain the original URL up to the final “/”, and the “.html” at the end, you can put almost anything in between them (no spaces, no apostrophes) and you’ll be redirected to the original article.