Tropical fish plants

Update: Did it work? Better check out my new post with the results.

I’ve had a big problem with Black brush/hair algae in my tropical fish tank. It appears as slimy black fur perhaps 5mm long on most surfaces: especially the (plastic) plants, bogwood and gravel, though not so much the glass. Sometimes I deep clean the tank and put all the plants and ornaments in a bucket of bleach, which leaves things fairly sparkling, but within just three weeks those items are coated again. Anti-hair algae treatment didn’t seem to work especially well and neither did a special ‘teabag’ in the water. It’s very wearing and I couldn’t go on like that, so time for more definitive understanding and action!

I took a water sample to my favourite local aquarium, to get it tested for phosphates, and sure enough it registered at the top of the scale. Algae thrive on phosphates so I was advised to tackle this with a two-pronged approach:

  • Add live plants, to consume the phosphates in the water.
  • Change the feeding regime:
    • use a lower-phosphate food, rather than the “premium” stuff we had been using
    • feed less overall, as we were probably over-feeding and the excess, high-phosphate food was lingering.

It’s early days, but the Anubias looks great tied onto the bogwood, where hopefully it will establish, and the other more vigorous plant peeping out from behind Spongebob’s pineapple house seems happy enough too. Also we seem to have won a small snail with the plants, which zooms around the glass.

Realistically, I’d be surprised if this magically solves all my problems, but it will be interesting to see if it has an effect. I’ll report back!



This site replaces my original Typepad blog which was at I will probably disable the Typepad blog entirely in the long run (possibly even the short run) but for now I figured out a way to have the Typepad pages redirect to the relevant articles on this new site.

Simply add an HTML widget to your Typepad sidebar, containing a little bit of JavaScript to modify the URL:

<script type="text/javascript">
document.location.href = document.location.href
    .replace('', '')
    .replace('/atc/', '/')
    .replace('.html', '/');

This not only modifies the domain, but also loses the /atc prefix and the .html from the end, as they’re not needed on this new site. Magic!

Ford Focus Econetic

The setup

Ordinarily I drive a mark 2 Skoda Octavia estate (07 plate, 2.0 TDI) which I rate extremely highly and may just be the perfect family car. According to Wikipedia, “Auto Express awarded to the second-generation Octavia the gold medal in their prestigious Driver Power top 100, stating that it is “the UK’s most satisfying car to own in 2007” and that it “has bettered every other car on sale in the UK”.

Of course this isn’t a review of my Skoda, but of the latest generation Ford Focus that I had for a week whilst the Skoda was in the garage for a new turbo (it’s done over 100k miles, but that’s still a bit early frankly). However the Octavia bears special mention because that’s what the Ford is up against in my affections and it’s a gold standard as far as I’m concerned. How does Ford’s finest fare?

The lovely people at St Albans Car and Van Hire gave us a silver 1.6 Focus Econetic, which is the super-eco version of the line-up. I say gave, but there were no favours here and we paid the going price. I find the technological push for frugality absolutely fascinating and I think that the car industry is going through a huge change in this decade, more so than any other in living memory, so I was fascinated to see what the Econetic version could do. I’m going to undermine my own limited review by linking to the What Car version, because it’s got the juicy details on the spec of the car, and it’s a great review regardless. The key facts however are: 1.6 litre diesel developing 104bhp with stop/start tech and only 88g/km emissions. There are various other tweaks to eek out the economy (eekonomy?) such as optimised gearing, active aero flap in the front grille etc.

Initial impressions

Credit where it’s due – it’s a sexy car. However I reserve a special distaste for silver cars and the people that buy them. Take a look in any car park these days and you’ll notice that it’s almost entirely monochrome, with silver especially popular amongst the imagination-challenged masses. Take the same look at a classic car rally and marvel at the wondrous palette! Rant over. It’s not Ford’s fault, though they do have form here – “any colour as long as it’s black”?

Ford Focus interior

Looks on the outside don’t entirely translate to the inside, which to me feels a touch cramped and surprisingly cheap to the touch. Hard plastics in the areas that you touch the most, rather than softer, more luxurious finishes. Various bits of trim were also coming away, though maybe that’s just hire cars for you. Still, the interior’s not bad and it wouldn’t especially stop me buying the car.

Eco awesome?

The engine and drivetrain is perhaps the most interesting part of this particular model. I’m the biggest fan of stop / start systems, which in this case automatically switches off the engine when at rest with the handbrake on and the clutch up. Imagine your favourite crowded city centre with centuries old road layout and traffic crawling through it. Now imagine the same but with all the engines switched off whilst the cars aren’t going anywhere. Breathe in the sweet, pure air! I rather suspect that in ten years, when perhaps the majority of cars on the road will sport this technology, the difference will be tangible and wonderful.

In the Focus it really does work seamlessly, with the engine firing up quickly when you depress the clutch,  which means that by the time you’ve got the hand brake off and are bringing the clutch back up again, everything’s ready to go. No fear of being left on the line. This is nitpicking of the highest order, but the one thing I did notice is that the diesel engine does a little Postman Pat’s van shudder as it dies and when it sparks into life. That’s physics for you, as rotating masses slow down and stop, but if they could make it disappear then the whole experience would be impressively refined.

I’m sure they can work on that slight shudder, but overall the engine is actually decidedly smoother than the agricultural 2.0 in my Skoda, which sounds like a tractor a lot of the time. That’s the one thing I’d fix if I had a magic wand. Really the Ford’s diesel is very smooth and just provides a whoosh of power without accompanying sound effects, and this for me was the biggest category-win in the battle. Don’t forget however that the Ford is 9 years newer than the Skoda model in question.

Refinement aside, the power may whoosh but it doesn’t dazzle. I found that first and second gear were great with plenty of point and squirt fun, but then performance fell off a cliff rather disappointingly. I suspect economy-oriented gearing here, not to mention the disadvantaged 104bhp vs 140 in the Skoda, though I still harbour a desire for the 170 of the vRS Octavia. That said, the lack of serious oomph wasn’t problematic and I’d have got used to it perfectly well. That 88g/km figure doesn’t come for free obviously and it does genuinely worry me that my great big usual diesel is choking the world with it’s particulate heavy exhaust. Still, no more big clouds of black smoke out of the back under acceleration with the new turbo now fitted!


It’s not an estate, but I’m still a bit surprised that Ford’s flagship everyman car doesn’t have more room and more of those nice little touches that I’ve been getting used to from Skoda, and Alfa before that. The boot is positively tiny if you ask me, but maybe I’ve been spoiled. I get the impression that with a space saver tyre you get more depth, and with no spare at all (just some plasters and a four-leaf clover) you gain quite a lot more. Ours had a full-size spare but peering underneath the car showed several inches of unused vertical space between the bottom of it’s well and the effective ‘floor’ of the car. I suppose this must be a packaging issue with the suspension, but it still seemed to me that it ought to be possible to drop that wheel space by four inches and make a massive gain and it seems like a win worth going after on the engineering front.


It’s a properly decent car and drives beautifully, with a surprisingly high-up driving position and great refinement of the power-train. Lack of urgency is mostly made up for by its eco credentials, though I didn’t have enough time to judge fuel economy. I get about 56mpg on long trips in the Skoda, which is pretty decent I reckon given the size of the engine, but the Ford claims 83mpg which would be stellar if true. If they could just amp-up the interior quality and thoughtfulness then as as long as you don’t require a large boot, this would be a hard car to fault.

I have blogged on my employer’s blog about the simple, but relatively featureful, Knockout.js page router that I whipped up recently. The core router.js file is only 61 lines but is packaged up into a nice demo app, src on GitHub, that you can just clone, then double click index.html to see it working (no server required).

I like to live life on the edge, and helping me to do that is my Mac's Calendar app with its predliction for silently discarding all alert settings for Google calendar entries. This stresses me out as I'm just waiting for the first time I embarassingly fail to turn up for something. Today, and frankly not for the first time, I set out on a serious Google hunt to find a resolution. I now have one that's just about tolerable.

It seems the basic problem is that when you modify a Google calendar entry via Calendar, it then immediately syncs back from Google and wipes out any alert that you just configured. But you didn't want to go to that meeting anyway, right?

I can't claim original credit for my solution, but I can endeavour to explain it very clearly and add a few extra tidbits. The trick/workaround is to configure Google Calendar itself, via its web UI, to have a default alert for all newly created events. Then it seems that you can modify the alert successfully from within Calendar, to a different number of minutes ahead. However you can't remove it, so you have to just live with alerts for everything. To me that's far preferable to none at all.

You can change the setting for Google Calendar as follows.

  • Sign in to your Google calendar at
  • Open the settings page by selecting "Settings" from the gear dropdown in the top right.
  • Select the "Calendars" tab at the top.
  • In the list of calendars (which probably only contains your one calendar) select "Reminders and notifications"
  • In the "Event reminders" section at the top, select "Add a reminder"
  • Select "Popup" and however many minutes you want, for the default reminder.
  • Don't forget to click the Save button at the top left.

I made a pilgrimage to BEER:shop St Albans, just on the other side of town, to get some interesting beers. Well why not, and it even had the wife's blessing because she fancied some good beer. The shop's only been open for three weeks, but it's very smart and carries a carefully curated collection. Some of it is really rather pricey, and with those prices on stickers at the back of each bottle it was a slightly frustrating experience. I'd see something interesting, pick it up, confirm that it did indeed sound like a cracker, then turn it around to find it was £15. I could have three bottles of wine for the price of that bottle of beer! But in the end I settled on eight to take home.


And now, time to sample a couple of them. First up, an extremely local number from The private brewery of BoB which is located only about a hundred metres from the shop as it happens. BoB Sherunkel is 3.7%, described as a "delightfully dark mild". And it really is, with a roasted flavour that lingers on the palette, whilst being incredibly easy drinking. Very pleasant.


Next, Bob Slayah, from the same stable, and thought it would appear to be an entirely different beer (5.2%, "premium bitter") it had overtones of the same roasty flavour, so it followed on nicely.


And finally, The Wild Beer Co's Epic Saison, 5% and as crisp, zesty and spicy as the label suggested. Using exotic American hops, it is quite fruity, almost a bit soapy to Mrs C's tastes. I wouldn't go out of my way to have another one, but it was perfectly pleasant. I also forgot to photograph it post-pouring. Whoops.



I recently got around to repainting the wooden cabin at the end of my garden and chose Cuprinol's Garden Shades in delightful Seagrass colour. I discovered something rather unexpected however, that others would be well advised to heed before they embark on a similar mission!

This paint is dead clever and develops a waxy surface in order to repel rainwater and protect your wood. Unfortunately, being a water-based paint, this means it may also repel your attempts to apply a second coat! As you can see in my picture above, it's like painting on glass and the new paint just beads up into globules as it can't stick to the previous coat.

It distressed me rather when I discovered this phenomenon and a call to Cuprinol followed as soon as I could look up their number. After a bit of a wait a very knowledgable young lady gave me the lowdown on what was going wrong. She recommended I rub the surface down with methylated spirits to break down that waxy layer and I'm glad to say that this did indeed do the trick, though it adds a whole lot of extra faff to the process.

I note that on the can it does say "allow 2-8 hours between coats" and with the benefit of hindsight and the explanation from Cuprinol, I see that this is presumably intended as a range with an upper bound. I had left it for a week, and this allowed that waxy surface to develop, so I should have recoated much sooner. However this text is decidely ambigious and can easily be read as a minimum only, stated as a range due to differing drying times according to conditions. It is especially likely that your average reader will interpret it so, as most paint cans provide just a minimum. Interestingly their website states it a bit differently: "Where a second coat is required, allow up to 8 hours in between coats." It still neglects to explain why this is, the importance of it, and what to do if you are unable to comply.

So be warned that the innocuous statement on the can is actually very important. Sadly this means you have to set aside enough time in one block to coat everything once, allow it to dry sufficiently then recoat. Otherwise you'll have to get the meths out. Either way this adds a major inconvenience and the cynic in me suspects that's why they're reluctant to explain it properly on the can. The nice lady on the phone did say that they get loads of phone calls about this exact problem and are considering how they can improve the instructions. I want to see a very clear explanation of what happens and why, in a big bold box that draws attention. It should also describe the meths workaround. To do anything less is to fail the customer.

FWIW, I'm now very pleased with the results and will use the product again. I would have been so much happier if I hadn't had to go through this saga, which involved holding on their expensive-from-a-mobile phone line for ages, and a major expedition to find somewhere with meths in stock.

Inspired by a random tweet about their added Scala support, I tried out the Codility sample test. I rather liked my solution and I think it’s a perfect example of some of the niceties of Scala, in a small way, so here it is:

def solution(a: Array[Int]): Int = {
  // Partial sums are Longs to avoid Int overflow.
  val sums = a.scanLeft(0L)(_ + _).tail
  def equilibrium(index: Int) = leftSum(index) == rightSum(index)
  def leftSum(index: Int) = if (index == 0) 0 else sums(index - 1)
  def rightSum(index: Int) = sums.last - sums(index)
  (0 until a.length) find (equilibrium(_)) getOrElse(-1)

The use of scanLeft to build up all the partial sums is particularly handy. Having done that it’s very easy to run through all the indexes until we find one that satisfies us. Note that the find method returns an Option[A] so we use getOrElse to return -1 if no solution was found (as per the requirements).