NFC Ring in numbers so far

Funds spent: £74,232
Funds raised: £117,938
Backers: 4,124
Days to go: 20
Rings to make: 4,412
KS Comments: 179
KS Messages: 712
Direct Emails: 187
Edits to KS campaign: 84
TV Interviews: 1
Radio Interviews: 4
Blog / Printed Press Interviews: 3
Meetings RE Sales: 12
Iterations of product: 827
Youtube Subscribers (NFCRing): 293
Youtube Subscribers (johnyma22): 100
Youtube Views (NFCRing): 14,000
Youtube Views (johnyma22): 112,042
Videos from third parties demoing item: 3
Links in from external sources: 37
Articles / Blogs discussing NFC Ring: 181,244
NFCRing.com Unique Views: 16,429
BuySellAd impressions: 2,285,676
BuySellAd CTR: 0.03%
Flights Booked: 12
Trains Booked: 4

Major issues:
* KS Failed payments
* Prototype delays for TV Interview
* Lack of Performance from Buy Sell Ads – 0.03% Avg Click Through…
* Lack of time to write or share anything.

Notable Awesomeness:
* ROI from Reddit Ads.
* Lots of supportive tweets
* Lots of supportive press/media
* Lots of support and positive reviews from people who got demo rings.

Further Kickstarter stats so far:
Direct traffic (no referrer information) External 924 21.95% £25,938
Technology (Discover) Kickstarter 556 13.51% £15,962
nfcring.com External 396 9.48% £11,197.68
reddit.com External 284 7.29% £8,612.10
androidpolice.com External 165 4.03% £4,766.50
Search Kickstarter 167 3.89% £4,588

After a year of hard work my kickstarter is live!

ring-7mm-render-all-(0-00-00-00)

And with a £20 offer for early birds you would be insane not to buy an NFC Ring!

Many of you will have seen me with various weird looking prototypes on my finger over the last year and a lot of you probably thought I had reached the point of insanity way before my time, there were moments when I questioned this myself.. Probably the scariest moment was when I stepped down as the Managing Director of Primary Technology and invested most of my savings into a product that has never been proven and at that point I had only researched for a few months.

Why Kickstarter?

Once we started doing advertising (before kickstarter) we had 2 offers to capital fund the project.

One we had approached directly and we knew before the project started he was the guy we wanted on board so a flight over to SF, a calligrapher written letter and several dozen emails later and we had funding, more than we needed actually which gave us some additional marketing funds. Getting this funding was just the bump we needed. Anyway I basically sold 16% of the company for our funds, I’d of given a higher % probably mostly because the person involved is a good person and has the right mentality when it comes to the tech industry.

The other offer was a little less desirable and came after we secured more than enough funding, so that begs the question.. Why sacrifice 10% of the budget to kickstarter when we could have just launched directly? Kickstarter to me is more about building communities than it is raising cash, it’s also about validating products. Both of these things are key, without them the Ring is nothing, so the Kickstarter was right, VC funding is also nice and to be honest without the VC funding to help pay for prototype and testing we wouldn’t have been able to Kickstart.

Stepping into the unknown

NFC Rings aren’t like a normal product.. There is absolutely no way I can/could tell if people wanted function and form in jewelry, the only thing I could find that was a similar movement was the move from bracelets/bands to wrist watches.. There is a huge risk the NFC Ring is way ahead of it’s time and that my product might not be the one that proves to be widely adopted but I do feel that having technology embedded into a ring is the right thing to do.

Going for broke

My overall investment in this product is enough to make my eyes water so I don’t want to go too much into finances but safe to say it’s been close and only actually doable thanks to loans from schools (3d printer), investors (audrey) and the people I have worked with (Tanya, Chris B, Gareth, Don C, Filmaj, Chris & Rich, Tom, Chris (Yuan), Mark, Zero, William, Adam S).. A lot of people have put a lot of hard work into this project and most of the time on a relatively tight budget for what we have accomplished, they deserve a lot of gratitude and credit.

What happens during the campaign?

During the kickstart campaign we will be working hard trying to build up support, funding and also adding final touches such as deciding with the community on the look of the kickstarter exclusive limited edition ring.. we expect a lot of questions

So what’s next for John?

Well assuming we hit our targets we have stretch goals for up to about £300k then after that we’re into the unknown and probably into rounds of funding, I hope we don’t go that far actually because I’d like to have some breathing time for the community to speak their mind and get involved in the project.. Tanya will be leading the project as she has a real solid understanding of our goals and a good mentality to continue growth..

Buy an NFC Ring, they are frigging awesome!

getusermedia screenshot wrong size

The drawImage API is really poorly documented and has a confusing way of handling arguments. Because of this sometimes if you capture a screenshot from your webcam the capture / snapshot will be drawn with the wrong dimensions. To solve this you will need to redraw your canvas to the same size as your video input on capture and also specify the width/height on capture.

This tripped me up for a few minutes so I figured it was worth documenting..

<!DOCTYPE html>
<body style="margin:0;padding:0;font-family:Arial">
<video id="video" autoplay width=100%></video>
<img id="snapshot" src="">
<canvas id="canvas" style="display:none;"></canvas>

<script type="text/javascript">
var $ = function(id){return document.getElementById(id)}; // lazy dev is lazy
var localMediaStream = null;
var video = $('video'); // video stream
var canvas = $('canvas'); // invisible canvas
var snapshot = $('snapshot'); // output image
var ctx = canvas.getContext('2d');

// Start Video Stream
navigator.getUserMedia({video: true}, function(stream) {
  video.src = window.URL.createObjectURL(stream);
  localMediaStream = stream;
}, function(){
   alert("Enable and Allow your camera");
});

function snapshot() {
  if (localMediaStream) {
    canvas.width = video.offsetWidth; // update the canvas width and height
    canvas.height = video.offsetHeight;
    ctx.drawImage(video, 0, 0, video.offsetWidth, video.offsetHeight); // draw the captured content onto a canvas
    snapshot.src = canvas.toDataURL('image/png');
    video.style.display = "none";
  }
}
</script>
</body>
</html>

To test go to your development console and type “snapshot()”

Object measurement with webcam

Shut up and show me the demo.

I have been experimenting with using a webcam to measure an objects size, width and height.

It works by comparing the size of a user defined box to the size of a magnetic strip (which is also user defined). I tested it against a ruler and it seems accurate but obviously the larger the object the more accurate it becomes. Right now it’s setup to measure the size of a ring finger.

As this is a weekend project I published the source up on github. I haven’t decided on a license yet so for now don’t adopt it in any commercial applications but do feel free to contact me to chat about funding further development.

I use getUserMedia / Canvas to do most of the interaction between the webcam and the browser and I’m using PaperJS for drawing the boxes onto the canvas. The actual math is really simple

// Takes a scale value and tries to figure out the mm diameter of each ring
function scaleToRingSize(widthPx){
  return (85.72500 / stripWidth * widthPx).toFixed(2); // 85.72500 being the width of a magnetic strip in mm
}

The fingers.js also contains code for converting ring sizes in mm to the nearest smaller ring size. IE if your ring size is 22mm it will give you a ring size in US/EU that is 22.2mm instead of 20mm.

I’m researching using Tracking.Js with some custom OpenCV maps to do better object detection, I know this is possible but right now the algos are a bit buggy and I’d need a lot of positive images to create a good training set. If I could do some object tracking in theory I could auto detect the strip / target object size and automate / realtime the whole measurement process and in theory I could do ask a server to do real time object detection, but that’s for another day..

The measurement app might not quite fit on your page, this is because it’s 800px x 600px with absolute positioning, I guess I could make it use relative positioning but right now I’m not interested.

The tool will work in all browsers that support getUserMedia which is IE11, FF 17, Chjrome 21, Safari 7 and Opera 12, iOS Safari, BBB 10, Opera Mobile 12. For more browser support queries see getUserMedia browser support. Obviously if you are still using IE then you have probably made many other poor life decisions and you are beyond my help. Obviously because I’m using JS / CSS the app will work on a mobile and desktop webcam so you can in theory measure objects whilst on the move.

I had to worry about the overheads of the large javascript fabric.js library so I decided I didn’t want the additional overheads of jQuery. It’s entirely written in JS (with obv some CSS/HTML) throw into the mix. I could probably refactor it down to just JS without too much headache and this would give site admins the ability to do something like:

<script src="measurer.js"></script>
var measure = new Measurer();
measure.create("targetDiv"); // can do it like this because getUserMedia is limited to one instance of browser/OS.
measure.on('success', function(measurement){
  alert("Got a measurement of", measurement);
  measure.destroy();
});

You will need a card with a magnetic strip on the back, ideally a credit card as these are guaranteed to be a universal size.

Final thoughts: None of the images are saved to a server but as you know these images are being passed through the Internet which means your ISP is sending a copy of them to the NSA. I strongly recommend against using this tool to measure any part of your anatomy.