Monday, 31 August 2015

Asset and People tracking using BLE Mesh

Suggestion I sent to Ubudu .. hope they are some other Mesh Beacon provider takes notice

A suggestion for asset / people tracking:
1) Each mesh beacon can be given 1 or more UUIDs to look out for.
2) When an iBeacon with matching UUI is 'seen' your mesh beacon calls a URI via your USB gateway with parameters: Mesh Beacon's ID/major/minor, detected beaccon UUID/major/minor, time and  any txPower values.
3) The receiving server of the URI (like: could log these values then be interrogate any time.
Any programmer could interrogate logs like these for asset/people tracking.

If this was available right now we have an airport and large hospital who'd be interested in a POC set up, with more enquiries coming in all the time.

Hope this all makes sense.



Saturday, 6 June 2015

Snootiness & Program Optimisation

For Programmers

I was a member of stackOverflow for a while. It's a great resource appearing in many Google search results for my programming queries.

I stopped posting questions due to the pedants and insufferable bores who preferred to mock a question rather than keep quiet because they didn't know the answer.

In my book: there are no stupid questions and mocking a person's lack of knowledge devalues their own knowledge.

Recently I heard this (and I paraphrase and name-change)

Adam: what is ASCII 65?
Eve: You mean you don't know? (Turning to a colleague and rolling her eyes) He doesn't know what ASCII 65 is?! Ha! What a numpty.

Eve's mocking of Adam for not knowing ASCII 65 is an upper case 'A' devalued her knowledge of it. It lowered the value of her knowledge to the level of 'everyone on the planet should know that not just me with my IT qualifications'.
Silly Eve.

Anyway, while traversing stackOverflow I came across this as a solution:

byte Patch(byte delta, byte lo)
    int resultPixel = (2 * (delta - 127)) + lo;

    if (resultPixel > 255)
       resultPixel = 255;

    if (resultPixel < 0)
       resultPixel = 0;

    return (byte)resultPixel;

Missing out an 'else' will make force the system to perform the second test even though the first test is true. As this Patch() was to be called many thousands of times, this simple over-site will result in a considerable loss in performance.
It should have read:

byte Patch(byte delta, byte lo)
    int resultPixel = (2 * (delta - 127)) + lo;

    if (resultPixel > 255)
       resultPixel = 255;
   else if (resultPixel < 0)
       resultPixel = 0;

    return (byte)resultPixel;

Showing that there is a time and place for pedanticismistophiles.

Wednesday, 11 March 2015

Android Studio Deprecated API's

For Android App Developers

Like many, I've had to migrate from Eclipse to Android studio.

I had a problem using Android Studio: I was being told I was using deprecated API calls, but it didn't tell me how or where.

I had no joy searching t'internet and questions I posted were either being ignored - showing no one knew the answer - or edited to pose the same question in a different way but still with no answer - also showing no one knew the answer.

Eventually I found the solution and have been moved to post it here due to my frustration with the so-called developer sites.

I'm using Android Studio on the Mac which I believe is almost Identical to the Windows version.

Under menu:
    Analyze->Inspect code ...

A dialog box pops up.
    Select Whole project and Ok

You'll see an Inspection Window populated with, in may case anyway, lots of 'issues'. Under the General heading, you'll find Deprecated API usage. Open those up, click on them then click on the 'is deprecated (at line ??)' to go directly to the deprecated usage.

Here's a screen shot:

Android studio deprecated API usage screen shot
Android studio deprecated API usage screen shot

I hope this is useful.

Tuesday, 27 January 2015

skignz geo-located augmented reality viewer explained

skignz logo

Brief glossary

The name, skignz, it's pronounced sky-nz and is supposed to represent 'sky signs'.

Geo-located: the skignz, objects and signs, are set in position on the planet using longitude and latitude co-ordinates.

Augmented reality: in this case, it's the combining of real images, as seen through the camera on a smart phone, along with computer generated images overlaid on top of the live image.

A short description

The skignz system is divided into two parts:
  •  a web based part which you use from a large screen format such as an iPad, good sized tablet, laptop or desktop computer. It's here where you upload images and set objects on the map. More on that later.
  • a smartphone part which is the viewer. This is in the form of an app available on iOS and Android, The app uses your GPS, camera and the tilt sensors to figure out where you are and what you should be looking at and calculates which computer generated images are in range and should be displayed over the live camera image.
Combining geo-located and Augmented reality means that you'll only see the computer generated images when your camera is pointing to them and is in range.

Some examples

Here are some iPhone screen shots which I hope will give you an idea of what's seen via the camera:
The base of  a massive 3D 60 metre turbine + some skignz on Teesside campus

skignz screen shot
Looking up at a 60 metre virtual wind turbine

skignz screen shot
Random skignz I placed outside my house

skignz really can bee anything! I made and uploaded this huge bee and placed it in my room.

What can it be used for

The list is endless and only limited by your imagination but here are a few suggestions:

  • The general public
    • place a skign over your car so you can find it again.
    • geocaching enthusiasts can place a skign over caches
    • place a skign only your friends can see marking that private party
    • place a congratulatory skign over a friend's house eg 'Happy Birthday'
    • mark a route for others to follow
    • leave a secret message for a pal
    • place a skign over yourself which will follow you, which only your friends can see
    • place fun skignz around you just for amusement
    • mark places of historical importance in your town
    • etc ...
  • Event organisers
    • mark the exits
    • show where the toilets are
    • place skignz over refreshment areas
    • use interactive skignz to say what events are coming up next
    • encourage corporate sponsors to use the skignz as a new source of revenue
    • etc ..
  • Corporate sponsors
    • get brand exposure at events and around places of interest
    • brand exposure is unobtrusive and relavent
    • link skignz to your product pages
    • etc ..
  • Companies & organisations
    • lay virtual markers along buried pipelines or cables
    • tag those wind turbines
    • see what a wind turbine farm would look like in the environment
    • see the impact of a full size building. Walk inside and look out of the ground floor windows!
    • mark places of scientific or archaeological importance with zero environmental impact
    • put virtual signs, skignz, around your headquarters
    • show the buildings on a university campus
    • mark the bus stops, stations or tubes.
    • etc ..

Briefly describe how to do stuff

Using the viewer:
  • install the skignz app
  • launch it and look around - unless you're at a venue that uses skignz, chances are there's nothing around you to see. Middlesbrough high street has lots of them as does Teesside uni campus.
  • If you want to place skignz around - you have an event or just want to play - you'll need a skignz account.
  • An account can be set up from the iPhone but it's MUCH easier to upload new images and / or place them on the map using a large format screen like a laptop via the web site at
The web site:
  • signing up for an account is self-explanatory
  • let's place one of the library skignz where ever you are:
    • Log in
    • select 'place skign using map'
    • in the search box type your address and locate yourself on the map. I find turning the satellite option on helps
    • click the blue plus (+) symbol to add a skign
    • it should appear - you can click on it to select:
      • skignz & objects: to select a template design or object
      • text: some skignz have text fields which you can fill in
      • size: go for medium - the equivalent of a 4 metre square sign
      • level: where in the eye-line it should be - low, high etc
      • On touch: is what to do when someone presses on the skign via the viewer.
        • you can have it pop up a message, dial a number, go to a web URL etc
      • Expire in: how many days you want it to stay there.
      • save and you're done - open your skignz app and see where it is.
        • move it around on the map if it's too close / far away.
  • Uploading your own designs is done via the 'Manage skignz templates' option.
    • create a png
    • upload it
    • add any text fields
    • done.
    • you can decide who is allowed to place it on the map, anyone, just you, friends or members of a group you're a member of.
    • this skign will appear on the list when you go back to place a skign on the map.
  • Have a click round the other options and if you need more help let me know in the comments and I'll do some more.
Have fun :)

skignz developer update

skignz logo

skignz: geo-located augmented reality viewer update

A new skignz update has prompted this update. The next version on iPhone (1.53) will include a URL scheme for app integration.
Here's an extract from the skignz developer section.

iOS app developers

From Vers. 1.53 the skignz app registers a URL scheme.
Check the iOS app version via 'Help'->'About' or see 'You can test the URL scheme on your iPhone/iPad' below.
The skignz URL scheme is: skignz://

You can test the URL scheme on your iPhone/iPad

  • Select Safari
  • Type: skignz:// into the address bar
  • All being well (skignz 1.53 or higher is installed) the skignz app will be run
  • If there's a problem:
    1. skignz is not installed,
    2. the skignz app hasn't been updated to 1.53 or above, or
    3. there was a typo
This simple interface allows any app to launch the skignz app.

Objective-C example

  Use at your own risk. No guarantees and supplied 'as is'.
- (void)buttonPressed:(UIButton *)button
  NSString *skignzURL = @"skignz://";
  NSString *itunesURL = @"itmss://";

  if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:skignzURL]])
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:skignzURL]];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:itunesURL]];

For more advanced integration

For example: skignz to display a 'Done' button which, when pressed, causes skignz to relaunch your app
Please contact the email address below with your contact & app details.
If you have any comments, questions or special considerations please contact

By 'more advanced integration' they mean that, if your app is considered suitable (no adult content) they'll give you a user code, which you embed in the URL scheme. Pass that and your own app URL scheme and the skignz app will provide a 'Done' button, which, when pressed, will launch your app again.
It works well.

More integration options are in the pipeline and they're busy 'running catch-up' with the Android version to get it in line with the iPhone version.

No decision has been made about the Windows version but skignz have signed up as a Microsoft developer.

I have lots (4) emails asking what skignz is exactly. I'll publish this update then compose another blog entry shortly to explain.

Oh, and, Happy New Year! :)

Friday, 12 September 2014

skignz Augmented Reality Update

For those of you interested in Augmented Reality:

The skignz KickStarter campaign started about 6 days ago and lots of questions where raised: what are skignz?, what is KickStarter? etc..

Si, in charge of marketing at skignz, has done a blog post here: skignz blog post to update folk.

A new video has been posted here: skignz KickStarter

KickStarter is an example of a Crowd-funding site where you pledge a small amount of money towards what you consider to be worthy projects. Your money is not taken until the full, target amount is reached. So if the target's not reached you pay nothing. But it is important to pledge quickly to help gain impetus and hopefully attract more funders,

We hope to make skignz a free Augmented Reality platform that can be used all over the world.

The big dream is that people will start putting up skignz around their towns which visitors can then look at to interact with and find out more about the area, places of interest, businesses and so on.

The money will fund the further development of skignz to include social networking - twitter and facebook - feeds into skignz placed above people's heads.

We'd also like to start a team of people 'skignzing' up places like London, The Great Wall of China, The Pyramids and so on.

It's a fascinating and worthy project that could add a new dimension to all our lives with zero environmental impact and no charge.

Thanks for reading this far.
The skignz web site is here: skignz web site
Links to the app downloads are here: app download links

Saturday, 6 September 2014

skignz Augmented Reality

If you're at all interested in augmented reality:

skignz the planet!
What's life without a few
modest ambitions?
skignz - at - is a free to use augmented reality system which I started writing about two and half years ago.

It wasn't called skignz back then. I called it .. Yes. Well. Moving on ...

About 2 years ago, while trying to rescue a very dull SEO company, I invited an old colleague over to get his thoughts on raising funds for said SEO Co.

We both came to the conclusion it was a dead duck and we ended up talking about my ideas for this AR system. I showed him my little test app on my dodgy old Galaxy Android which showed a couple of objects floating in mid air to the North.
Basically you turned the camera on and saw the objects projected into the real world. A table top, a crate and a pyramid. It was pretty basic but demonstrated the idea quite effectively.

I talked about building a system that was free to use and the content would be provided by anyone. The ultimate goal in the far future being a parallel world around us where, using your smartphone or tablet, you'd see an alternate reality, people's avatars, alternate building design and so on.

Si, for that is his name, got pretty excited about it and started chucking in thoughts of his own. It turned out he'd done a whole load of work on Virtual Reality stuff in the past.

After some animated discussions and exchange of ideas we came to the conclusion that this was far more interesting than what we were doing at that moment and devised a plan.
This is the mess I've made outside my
home with lots of test skignz

The possibilities are infinite and we knew we'd have to focus on one thing at a time.

So we decided to make the signs, signs in the sky, the priority. Virtual signage that could be placed anywhere on the planet, viewed via a smartphone or tablet's screen and touched to do something like call a web page or dial a phone number.

skignz were born. And so was skignz Limited. skignz, by the way, is pronounced sky-nz to rhyme with designs.

With me as the technical dude and Si as the marketing dude we've survived off small projects - most notably skignzing up Teesside University Campus - while developing skignz further. It now even supports fully textured Wavefront OBJ files so you can tell what that wind farm full of 60 metre wind turbines will look like on your front lawn, or how that new proposed building will look on that brownfield site.

But the dream of letting people upload their own designs is still strong within us. We want to hold up out iPhones and Androids and see skignz over Machu Picchu, the Washington Monument, Stonehenge or even following people round. And it's mostly all there. All possible.

We want to see skignz full of info, full of art, enabling commerce, telling jokes, useful and fun. All completely free.

But we need support.

So we started a KickStarter campaign. is where you'll find us.

We'd really appreciate some help so if you know of anyone who'd support us it would be great if you could pass this on.
And if you look through the skignz
 app and see this you'll know I'm
close by as this skign is permanently over my head.

Wednesday, 19 February 2014

Me and lots of famous people.

I may suffer from SHFAITPOFP. That's Spontaneous High Functioning Autism In The Presence Of Famous People.

It might have its roots with an incident with Mick Jagger when I was 11 years old. I was on my bicycle about to cross a road. A white Jag was coming towards me but I thought that if I was quick I'd get across Okay. I pressed down hard on the pedal, the chain snapped and I crashed down onto the crossbar. The Jag slowed and swerved to avoid me, Mick Jagger's head poked out of the window telling me to, "Get off the f**king road!" I couldn't respond, perhaps due to my testicles being pressed up against my diaphragm.

Years later, I was a volunteer helping out at the highly esteemed Questors Theatre in Ealing. (I'm beginning to wonder if it was actually unconscious aversion therapy.) Anyway, I crossed paths with many quite famous actors while carrying props to and fro. On one occasion I had to stand aside and let the gorgeous Judi Dench pass by. I bowed! Yes, bowed. I actually fricking bowed!

Also at Questors, I happened to glance up and come into eye contact with Simon MacCorkindale. I found myself doing a simultaneous eyebrow-bob-reverse-head-nod while one side of my mouth tried a cool smile and the other side went for nonchalance. I swear the poor guy started looking round for security personnel for protection.

A while  ago I lived in West Hampstead and many times found myself fleeing from a friendly nod from the likes of Emma Thomson and the bald bloke from the Bronski Beat. One day I happened to find myself trapped in a small patisserie with Gordon Jackson who was ordering croissants as if he was projecting his enormous voice across Wembley Stadium. I commented, "Your voice doesn't curdle the cream so much as hurdle it, ha ha." To his credit, Mr Jackson seemed to recognise my SHFAITPOFP by doing the best possible thing in the circumstances and ignored me.

In the early 2000's, the then Prime Minister Tony Blair visited my company, turned to me and said, "So you're the brains behind all of this?" My response was, "Umm ferr pfeeble crufhh cucckle pfaah .. yes" so overwhelmed was I by his fame.

The exception was Simon Ward. Probably best known for Young Winston Churchill and All Creatures Great And Small.  Around the mid 80's I think, he was sat opposite me on a tube. Some children further along the carriage were whispering and pointing at him saying, "It's the Winston Churchill bloke .. James Herriot .." Simon looked at me, smiled and rolled his eyes in a self-deprecating 'kids, what are they like?' kind of way. I smiled back like a normal person and carried on reading my Evening Standard. Weird that.

When I heard of Simon's death in 2012 I was deeply moved.

The only other celebrity whose death I was so moved by was Robert Shaw. He was my childhood hero in The Buccaneers, a TV show about pirates. His voice as he buckled his swash stays with me still. A man filled with so much life. How could that ever go away?

What brought on this post was a Tweet I just sent to Hugh Laurie. I was trying to agree with his observation that some English commentators speak in idioms when talking to none English speakers. I'd just been watching the Winter Olympics and had thought the exact same thing.

His example had been, "Mario, are you whistling in the dark? Or slaying dragons by giving a green light to the shot in the arm on the front foot?"

This is my tweet trying to register my agreement: "@hughlaurie IKR? A spontaneous and almost completely unsycophantic LOL (I'm shite with famous folk)"

What in heaven's name was I thinking?!

Of course, we unfamous-ones can never really know the famous ones. And being famous must be so incredibly difficult when it comes to new acquaintances. How do you separate the genuine from the sycophants? My tweet must have been very helpful. *sigh* I can only pray the dude never reads it.

If you're famous and reading this, "Hiya :) LOL I like real ale but not keen on beetroot."

*facepalm* Oh, Lord …

Monday, 23 September 2013

Proof of a finite universe (ish)

I've been down this road a few years ago but a conversation with a graphic designer displaying work for his Masters made me think, rinse and repeat:

  • My computer screen has 1366 x 768 pixel.
    • That's 1,049,088 pixels
  • Each pixel can display 32,000 colours.
  • So, the number of unique pictures my computer screen is capable of displaying is 32,0001,049,088
    • That's 32,000 to the power 1,049,088 - which is a HUGE number of images.

That huge number of images would include all text already written and to be written, all galaxies, all people's faces past, present and future. Any image of any action, every molecule or animal .. anything.

But however huge that number is, it's finite.

The number of possible images in our universe would appear to be finite.

Unless you increase the resolution of your computer that is ...

Just a thought.