This blog is no longer actively maintained. :-)

Learn about what I’m up to now here:

But you can follow me on Twitter:

Or LinkedIn:

Perhaps read me on Medium?

Or browse some things I’ve recently worked on here:

Cheers! :D

Written on November 2nd, 2019 , All

Recently I’ve found myself working with iOS 8 extensions, building Today widgets for Notification Centre using Swift. More specifically, I was attempting to build a widget in Swift for an app built in Objective-C. All was good until I went to run on device, when I received the following error message on the console:

dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib

What I hadn’t noticed was a build setting titled ‘Embedded Content Contains Swift Code’ which by default is set to NO. Flipping this solved the problem, though it’s interesting to note that for projects built in Swift, you can add Swift extensions, leave this setting at NO and run your extensions just fine on device.

Written on October 17th, 2014 , All, Dev & Test, Mobile, Tech

A recent feature request stipulated that the user’s location be visible in the various different maps that appear within the app. This is a common enough request and very easy to implement, but what does this mean for battery life of the device? The GPS radio on any iOS device is the most battery-intensive onboard radio and so having GPS running frequently is a bad idea. Time to profile the GPS radio usage!

Given that MKMapView is pretty mature having been around since iOS 3.0, I suspected that it would be intelligent enough to only use the GPS when necessary to determine the user’s location, such as first using wifi, the device’s IP address or some other less battery-intensive operation to determine if the user’s location is actually within the bounds of the displayed map before getting a more accurate reading to display on the map view.

It appears, however, that this is not the case. Rather surprisingly, as soon as showsUserLocation is set to YES until the time it is set to NO or the MKMapView is deallocated, the GPS will run hot, sucking up your juice. Not only will it do this when the user’s location is nowhere near the bounds of the map view, but also when the map view is not even visible to the user, so it turns out that it’s pretty important to manage this property carefully if you don’t want to drain your users’ batteries.

Written on June 6th, 2014 , All, Dev & Test, Mobile, Tech

The recent fiasco around The Atlantic’s sponsored article in support of Scientology has highlighted something rather important: disclosing a conflict of interest does not exonerate a news source from poor quality control. A “sponsored content” label basically amounts to disclosure that the source was paid to post an advert in the guise of actual copy, and so this example provides ample evidence of why we as content consumers should not so readily accept the disclosure argument as a means of preserving journalistic integrity.

This all raises another important point. A disturbing trend has emerged in recent years whereby the tech media are posting conflicted content and taking on clearly biased writers while using the disclosure argument as a sort of back door out of accepting responsibility for such shoddy journalism. Let’s be clear– just because conflicts of interest are disclosed, does not mean that a publisher is somehow absolved from this sin.

It is very true that conflict of interest cannot be avoided altogether, but providing a platform for people like MG Siegler and Michael Arrington to make paid regular comment on issues of interest to them seriously compromises the journalistic integrity of TechCrunch. The involvement of both of these authors in the CrunchFund venture capital firm means they largely cannot write without bias on topics relevant to the tech industry. Disclosure does not mitigate this– it simply makes it apparent. They should be free to write whatever they want on their own personal blogs but being paid to write articles for a widely-consumed blog professing to have some degree of journalistic integrity? We should not so readily accept this.

I don’t mean to single out TechCrunch. Many other tech blogs are littered with embedded disclosure statements, post “sponsored content” or even include “disclosed” affiliate links in their posts, such as this example from The Next Web. Again, the disclosure of this fact doesn’t somehow elevate TNN out of the depths of journalistic depravity; it simply makes its lack of journalistic integrity more apparent. Of course, if it were to hide this fact this would be a greater sin still, but this doesn’t detract from the fact that TNN is getting paid to write articles about certain topics, and being paid specifically by those that stand to benefit most from the entailing publicity.

And now with this latest The Atlantic fiasco, it should be even more painfully apparent why we cannot simply accept content peppered with disclosures and assume that all is bona fide. Instead we should seek out news sources that genuinely provide a wide, fair and balanced spectrum of information, ones where disclosures of this sort are completely unnecessary.

Written on January 23rd, 2013 , All, Ruminations, Tech

Jack Dorsey recently blogged about how they are abandoning the term “user” in favour of “customer” at B2B mobile payments provider Square. This was a shock for me, because in all my years of being a “customer” nothing has irked me more than being considered simply and only that by the businesses behind the products and services I use.

Being a customer implies that you are nothing more than a unit of economic value to the business, a target to be fleeced of cash, a necessary inconvenience that brings little more to the table than dollars and cents. When I use products and services I generally engage with them far more than what the term “customer” implies. Not only am I a customer, for that product I am a reviewer, a quality gate, a contributor, a value creator, a proponent, a promoter, and sometimes even an evangelist. I am not just a customer. Being called a user may be vague, but at least it doesn’t obscure all this and reduce me to a mere financial incentive for the business. Now that really drives me bonkers.

Written on October 18th, 2012 , All, Mobile, Ruminations, Tech

There’s not much I can say to sum up what was a totally spectacular show, involving amazing pyrotechnics, incredible lighting, and soundbites from the Prodigy, Orbital, Sex Pistols, Dizee Rascal and more. Awesome.

Written on July 24th, 2012 , All, Random, Ruminations

I’ve been on a mission of sorts this past week– to eat every lunch at the much-vaunted Hawksmoor restaurant here in London. This is definitely the best place in town to eat meat and I usually have one lunch a week at the Seven Dials restaurant, however what started with a simple Hawksmoor burger for one on Monday subsequently erupted into an orgy of meaty over-indulgence throughout the rest of the week. Here I chronicle the experience.

Monday – Hawksmoor Burger, English Lettuce & Herb Salad

What more is there to say about the Hawksmoor burger that hasn’t been said? I think it’s the best burger in town, even showing up the quality burgers at MeatLiquor, Lucky Chip and Burger & Lobster. I take my Hawksmoor burger pink and smothered in stilton. As usual, it was incredibly moist, juicy and utterly delicious. The radiant sheen of the semi-glazed bun makes its a wonder to marvel at. The English lettuce & herb salad provided the perfect light accompaniment, and a good way to balance the heaviness of the burger. I washed all this down with the ever-tasty apple & mint swizzle.

Tuesday – Lobster Roll, Devilled Broccoli, Macaroni Cheese

My friend Steph joined me on Tuesday and we sat in the main restaurant, where we guzzled some of Hawksmoor’s quality cocktails before well and truly gorging ourselves. I was drinking a Shipwreck Sour, frothing with egg white. As soon as it arrived, I inhaled the lobster roll, which was truly outstanding. It consists of an entire lobster served in a brioche bun with hazelnut butter. YUM. The chilli in the broccoli provides a welcome bite, and the macaroni cheese, served in the metal container it was cooked in, was just the right kind of comfort food, if a little heavy for lunch.

Wednesday – Meatballs and Grits, Spring Greens and Goats curd

I thought I’d try a couple starters on Wednesday. The meatballs were tender and morish, really impressive. The grits were a bit too fine for my liking and had the consistency of mashed potato. Slightly disappointing. I must admit that the spring greens didn’t do much for me either, and the salad was pretty heavy considering it included carrots and potatoes. But I suppose Hawksmoor was never known for salads!

I took a few people from work who ordered both the triple cooked chips and beef dripping chips, providing a welcome opportunity to compare them side by side. The beef dripping chips are shorter and fatter than the triple cooked variety and the beef flavour is pronounced, but the lovely texture of the triple cooked chips mean that they win it for me.

All this I washed down with another apple and mint swizzle.

Thursday – Chili Cheese Dog, Sweet Potato, Devilled Broccoli

By now word had got out that I was on some sort mad, meaty escapade, and so Barry got in touch to see if I was available for lunch that day. Back to Hawksmoor? It would have been rude not to! And so on Thursday I returned to an old favourite, the chili cheese dog. It’s one seriously delicious, own-made wiener smothered in quality chili and Ogleshield cheese. What a sight to behold. We also tried the Sweet potato for the first time, which was velvety smooth and extremely toothsome. I knocked back this awesome lunch with a Meantime lager.

Friday – Doddington Caesar Salad, Rib-eye Steak, Triple Cooked Chips

I wasn’t able to get into the Spitalfields restaurant for lunch, and so I starved myself and returned at 5PM as soon as they opened for dinner. I thought it only fitting to go out with a bang, and so a proper steak it was. I started with the Doddington Caesar, which was simple and delicious. The Doddington cheese made a refreshing change from the more common parmesan, and the occasional salty bite of anchovy made a good contrast against the other flavours of the salad. Afterwards it was on to the steak! This is what Hawksmoor truly excels at, cooking their meat in a fashion and at temperatures simply not achievable in my lowly kitchen at home. It came servered medium-rare, and every mouthful was truly a pleasure. It seemed almost rude to add the occassional dab of mustard to my fork! This quality of meat needs no further seasoning.. lovely!

And so thus concluded my meaty marathon of over-indulgence. It was a very tasty week, but I think I’ll be laying off the heavy food for a while.

Written on May 19th, 2012 , All, Food

One thing that most consumer software of value does today is to integrate in some way with the major social networking incumbents, Facebook and Twitter. zeebox, naturally, is no different, and we’ve worked fairly closely with Facebook to get our Open Graph implementation right while also ensuring that we make best use of their platform.

There’s been a few bumps along the way. In past, Facebook have gently chided us for pre-filling the message field when posting to people’s walls from the app, which runs afoul of Facebook’s platform policy. Basically, any app that posts to your wall should have an empty field that allows you to express your thoughts about the subject matter you are posting.

But the truth is, there are loads of apps out there that flout this policy.

Draw Something:

Amazon Kindle:

And even some of zeebox’s competitors..

In all these cases, Facebook’s platform policy is being violated because there is pre-filled content in the field rather than it being blank. In the case of, you can’t even edit the text and, worse still, incomplete text is being displayed to the user.

It’s a little frustrating to see that FB’s platform policy isn’t quite enforced with an even hand, though I suppose the benefits of having a good relationship with Facebook outweigh this.

Written on April 23rd, 2012 , All, Dev & Test, Social Software, Tech

Facebook does many things very well, but most would agree that they are not particularly adept at managing their users’ privacy or security.

A recent example hit me the other day while browsing the Facebook iOS SDK integration docs. Facebook suggest that SDK developers store the Facebook access token that grants a client (e.g. an iPhone app) access to the Facebook platform in the iOS user defaults. This is not secure and could result in someone else masquerading as the user on Facebook or hijacked the user’s identity.

What is a Facebook access token?

A Facebook access token allows a 3rd party app to interact with Facebook on behalf of a particular user. Depending on what permissions the user granted to the app, the holder of the Facebook access token can do anything from posting to a friend’s wall, to accessing all the user’s personal information. It is important, therefore, that this access token is only ever accessible by the app in question.

What are iOS user defaults?

As any iOS developer knows, this is where an app can store a user’s preferences and any other information that might help the app to understand a user better across app sessions. These defaults might store things like a user’s ID, a preferred colour scheme, or the user’s first name, among other things.

User defaults, however, are not secure. Data stored in the defaults is stored in plain text, and while iOS apps cannot access the defaults of another app, anyone who had access to your phone, or a backup of your phone, could easily extract the Facebook access token and use it to masquerade as you. Not a good scenario.

Facebook makes the suggestion in the “Implementing SSO” section of their iOS tutorial. The offending bits:

The right place to store secure data on iOS devices is in the keychain.

Written on February 27th, 2012 , All, Dev & Test, Mobile, Social Software, Tech

Lovebox is definitely one of London’s best festivals, and one I look forward to fondly every season. But in December it seems such a long way off… so good thing Skate is on at Somerset House with Lovebox DJs! This time it was Horse Meat Disco and while the music is a little more commercial than what you might hear from them at the festival, it was still brilliant good fun. Recommendation for even more fun– allow alcohol onto the ice!

Written on December 9th, 2011 , Random is proudly powered by WordPress and the Theme Adventure by Eric Schwarz
Entries (RSS) and Comments (RSS).