Replacement blog “very nice” says person


I got sick of WordPress a while ago and made a new blog which you can find at

The content is a little more focussed around the prototypes I make and solving technical problems. But I post really frequently! At least once a month and usually once a week or more. Check out my thoughts on the AGENT smartwatch kickstarter, and my latest Windows Phone app, Emoji Studio

There’s a lot more on there, just check out the Upblog front page for a full list of posts.

Thanks for reading :) Bye!

Microwave Leakage

I spent 7 months working in a warehouse where we tested, among other things, the radiation leakage of microwave ovens. Microwave energy is non-ionising, so it does not cause cancer, but it is still dangerous since it is mostly used for cooking things.

We used handheld digital sensors which go on alarm when the emitted radiation is greater than or equal to 5 mW/cm^2. Briefly: 1 watt (W) is the transfer of 1 joule of energy every second (energy applied over time is known as “power”). 1W could power a Raspberry Pi computer or a 4 inch screen. 5mW is 200 times less than that (not very much).

1cm^2 is the area of the very end of your index finger if you point it at your face. The radiation limit means that, each second, a leaking microwave should not be able to apply more than 5 millijoules of energy to each square centimetre of your body which is close enough to be affected. If you lay on top of a leaking microwave, it would be applying that energy to every exposed square centimetre, every second.

Many brand new microwave ovens leak more than the recommended dose of radiation by the time they hit the shop.

This problem was so endemic that our employer eventually asked us to stop testing microwaves because they negatively affected testing statistics. Instead they would dump the whole stock in bulk. The sensors alert at 5 mw/cm^2 but only go up to 10; after that they just say “OL” for OverLoad. At least 1 in 20 of those I tested were OL. I have tested domestic ovens less than a year old which fail with readings of 7 or 8.


This level of radiation is not worth replacing your oven for. Anyway, new ovens are still likely to leak.

The safest ovens are small, simple models with analogue dials. I don’t know why. The highest risk are larger capacity models, which tend to be modern and digital, though this is probably a coincidence with their size.

The worst areas for leakage are the top of the door, and the left vent. Don’t rest your head near these areas ;)

Take 1 step away from the oven when it is on. This is enough to cut the power per area to less than 1 unit! (This is basically the main preventative step).

Look inside your unit. There is a sparkly piece of card on the right side – this is a filter. If it is burnt or missing, you should replace or return your oven.

While only anecdotal evidence, I hope this article has helped to inform about the metrics involved in microwave leakage.

Inkscape Logo

Inkscape Logo

Does the trend for simple design mean that Inkscape will go back to their first logo? I personally think that the 2009 refresh is the ugliest by far.

So you want an MtG API

What’s an API?

An API is a service that a computer can talk to, in order to get information about a certain topic, or to operate another program remotely.

Why would you need an API for Magic: The Gathering?

If you wanted to write a mobile app which displays information about MtG cards, you either need to load all of that data (about 10MB) into your app and update it every 3 months, or use some service to provide it all, ad-hoc. There is an official site called Gatherer, which displays information about any card you want, but computers can’t read it — it’s meant for people.

What are the options?

I’ve been working on my own card API for a little while now, but today I’ve discovered quite a few other interesting services. Since I’m in the market of filling an unfilled role, I don’t have any special competitive spirit for my own product, so here’s a rundown of what you can use:


This is my product. I just released the v1.1 beta [view the super cool and funny* release notes]. It’s open source, so anyone can use, modify, and host their own. It lets you search for a card by name, and returns data structured in JSON. The returned data is in a simpler structure than the other services here. (*Lie)

Update: I now host a pretty version of magic-api called Scry (

Example query: Hopeful Eidolon on magic-api

Search the City

StC has a pretty website! It queries instead of Gatherer and allows you to search by property instead of just individual card names. The return data is just right. It’s really quite good!

Example query: Hopeful Eidolon on Search the City

Also, it supposedly shares a JSON format with the MTG JSON project…


This isn’t actually an API; it’s an up-to-date database of all cards, in JSON. Could be a useful fallback if you need your application to work offline.


This is another standard API that does what it says on the tin. It returns JSON but doesn’t set the content-type header (at time of writing), which is annoying.

Example query: Hopeful Eidolon on mtgapi

Hope you have fun developing or learning!


Announcing Open Source MTG API

Announcing Open Source MTG API

Hey, this weekend I built an API and DB solution for Magic: The Gathering cards. It’s now open source on github (where you can read the documentation), and you can use it by sending a query string like this:

OK, have a great day!

PHP Conditional Markup

It can be hard to find the right result when you search for “PHP conditional markup”, so I’m helping myself (and maybe others) by posting this up here!

You can make document content conditional by enclosing it in a regular PHP if{}

<?php if ( $errorMsg ){  ?>
<div id="message">
<?php echo $errorMsg; ?>
<?php } ?>

But, for the sake of readability, the alternative syntax is often used, where the opening brace changes to a colon (:) and the closing brace changes to the keyword ‘endif;’

<?php if ( $errorMsg ):  ?>
<div id="message">
<?php echo $errorMsg; ?>
<?php endif; ?>

For more information, see the PHP documentation for Alternative syntax for control structures.

Hope that’s helpful! :)

Two Thousand and Twelve

At the start of 2012, apart from a little seasonal software work, I was employed at the “kettle warehouse”. It was very cold and dirty but I was fond of the camaraderie. I had not been accepted into Manchester University, and didn’t really know what was going to happen next.

IN 2012, I started my Open University degree and completed a quarter of it, with a 1st!

I transitioned from student to kind-of-a-teacher in worship ministry.

I fell in love.

I finished reading the entire Bible for the first time.

I got a steady software development job in Liverpool.

I fell out of love.

And I went on an adventure.

I’m not sure we change continuously… I’m not buying into moment-to-moment developments of character. I’m seeing quanta here; I’m seeing chapters. I think I just graduated the third one!

At the start of 2013, I don’t know what’s going to happen next.

Great, now that’s over with I can blog about PHP and stuff again.

Quickpressin’ some Linux thoughts

The Linux news scene is currently littered with glimmering objects, and for a magpie such as myself (to continue that allegory) this represents far too much, far too bewildering, stimuli.GNOME Logo

I took a look at Fedora 15 recently, and my experience with GNOME 3 was embittered by the whole furore surrounding Ubuntu and GNOME’s somewhat inamicable divorce. The dissonance in GNU/Linux as a is unsettling. So are the boastful major version increments evident in both GNOME and KDE.

Also, I’m sat there using it, and while the user experience was really quite good, the whole time I’m thinking “Is this bloatware? Is it really lighter than Windows 7?”

As the required system specs for Linux approach those of their proprietary rivals, they have to do more and more with the interface to make it worth using; that’s how it seems. The idea that Linux should not be considered a second-rate free alternative has led to Linux being as fat as everything else to accommodate an easy-to-use experience.

Contrastingly, Tiny Core Linux 3.6 is really great. I’ve tried out a lot of lightweight distros on my aged laptop, but TCL is the keeper. It’s an inspired paradigm, very slick, and keeps strictly to good old UNIX design values: each element should do one thing, and do it well.

So there it is. TCL on the laptop, and for now, my main machine keeps Windows. It’s not quite risk-free enough to switch wholeheartedly to Linux, but hopefully soon that will be completely viable.


I went to see Tron: Legacy 3D yesterday! It really was a huge experience. I didn’t know particularly what to expect, but Tom and I had rumbled anticipatively for weeks beforehand; It lived up to expectation, and really – for a modern sequel – it didn’t make any of the mistakes you’d expect. In my opinion, it was exquisite.

I’ve been a fan for a while of Olivia Wilde of Remy ’13’ Hadley fame in House. She played and looked the part of Quorra to a tee. In fact, the mark of professional acting was apparent amongst the entirety of the cast: that I instantly believed in all the characters they played. Immersing.

Soundtrack is phenomenal. Since doing some synthesis for an upcoming worship set, I was listening harder than usual. Simple timbres with some mind blowing programming, and that’s what divides people like me from bands like Daft Punk.

One flaw strikes me, and only after 12 hours of pondering. The way CLU’s goals were portrayed gave you too little information to imply it for yourself early on, and stated it outright later. They didn’t really give the viewer a chance to figure it out before being told, and I would have written that differently.

If you can brave the huge snow, go and see Tron. I think you’ll love it, and I don’t see why you wouldn’t.