Menu 1

Archive | running lean

Streetview with Synchronized iPhones

Can you make Google Streetview-like images quickly and cheaply? That’s an R&D question I worked on while at Telenav after putting together the original OpenStreetView pitch.

Producing street view images isn’t trivial. Typically these are captured with dedicated hardware on dedicated vehicles driven around by paid employees. 

I remember years ago talking to people building things like this. You couldn’t use standard DSLRs because the shutters were only rated for something like 100,000 exposures. This is fine for your typical prosumer but street view vehicles would be burning through a camera every week or something. Then, the car needs a bucket-load of data storage and you put a lot of miles on the vehicle very quickly. It gets expensive quick!

OpenStreetView’s solution, and Mapillary’s, is to put a phone on the dashboard pointing forward. This gets a lot of useful information but nowhere near the 360-degree view we’re used to in street view. But, the hardware is readily available (everyone has a phone) and the people using it are working for free. So it’s a great tradeoff, really.

How to get from there to 360-degree views?

At the time, dedicated spherical hardware cameras were expensive and hard to use. Think $500+ and you couldn’t talk to them. Most had a built-in SD card and could do a few preset recording modes without GPS (because, why would you need GPS?) For a half-decent camera the costs were more like $1k+

These prices were too high for even pro volunteers to spend. How could we drop the cost so that anybody could start taking  360-degree photos?

The obvious place to start is phones since they contain everything you need: cameras, compass, processing and a variety of radios. So, of course, I took an old iPhone and taped it to the roof of my truck, with a panoramic lens on it:

Old iPhone 4 devices can be found in bulk for ~$10 each which pulls the cost down. Taking photos as you drive or walk around resulted in images like this:

Notice that most of the image space is unused. If you unroll the donut you get a 360 strip, like this:

One of the few advantages of this approach is that “real” street view needs to blur things like faces and license plates. Since this strip is so low resolution, it comes pre-blurred!

You could in theory drive a car around like this and the phone could take photos and GPS points, unroll the image and upload it all in one. But… the images are pretty low resolution.

The answer is to use more than one phone:

We can use many phones in a mount. If they all take a photo at the same time then we can stitch them together and build a panorama. There turns out to be quite a lot of subtlety in the timing, capture, upload and stitching. The fundamental limit is the lens geometry of the camera. iPhones, like other devices, vary around 40ish degrees field of view. Since you need lots of overlap for a good panorama, you start to need something like 9 phones.

You can get to less phones by using wide angle lenses and changing the geometry a little:

Because of the CCD layout you get more pixels and a wider PoV in landscape.

The mounts were built with OpenSCAD. You write snippets of code (on the left) which outputs 3D shapes on the right. Here, we make some boxes and then subtract out another box to make a phone holder. Then we rotate and build many copies of them. To hold it together, there’s a thin cylinder (in blue) at the bottom. This will output a 3D file for printing.

Actually printing this in to a piece of plastic turns out to be surprisingly painful. Simplify3D helps a lot. The 3D model needs to be turned in to a set of commands for the printer to execute (move here, print a little bit of plastic, move over here…). Every printer is different. It takes a long time. We’re a long way from “just print this file” as we’re used to with printing on paper.

Measurements in the 3D model don’t quite come out in real life, either. The plastic oozes and has a set of material properties, so that it doesn’t print exactly what you send it but may be a few millimeters off. If you print walls that are too thin they will snap. You need to print a “raft” which is a layer of plastic on the print bed to print on top of, that you later snap off.

The cycle time is pretty long. Printing something can take 5-10 hours. Then you fix something, wait another 5-10 hours and so on.

The whole process is entertaining and educational, and reminds me yet again that manufacturing physical things is hard.

The resulting panoramas aren’t too bad, as you can see above. Each phone gets different lighting conditions and the photos are projected on the inside of a sphere. What you see above is just 5 phones, or about half a pano.

The software does some magic to try and sync timing. Initially I’d hoped that since the phones are (probably, hopefully) running ntpd they’d have pretty synchronous clocks. Wrong! Instead, a server (laptop) running a thin client is running the wifi network all the phones are connected to. Each phone runs an app which wakes up and connects. The server says something like “lets take a photo in 4 seconds” and the cameras all sync to this and take a photo at the same time.

They then connect again and upload their picture and a GPS point. This is nice as you get, say, 9 GPS readings per pano. Then they start again to take another set of photos.

The server software would then (and this is where it’s incomplete) take all these photos, build a pano and upload it somewhere. The panos I built were using autopano SIFT to find overlaps in the images but we could have taken compass readings too and used those alone or in conjunction to build the panoramas.

The finished image doesn’t look bad, as you can see. But it’s long and thin and has to crop the top and bottom off the images. The full pano would be much longer and thinner.

As the project progressed, two things happened.

  1. We started getting further from our goal (cheap, simple panos) not closer. Long thin pano image strips aren’t 360 views; you can’t look up and down. The cost and complexity kept going up with 3D printing, (old iOS version since it’s an iPhone 4) software to hang everything together, car mounts, charging 9 phones at once…
  2. Readily available commercial solutions came down in price and complexity. Moto and Essential phones now have cheap panorama attachments, for example. They tend to use two fisheye lenses back-to-back in a small consumer package.

So, while this was an interesting R&D experiment and a lot was learned it ultimately didn’t work out. You can find all the code for the server, iOS client and 3D files here.


The algorithm and the failing kickstarter

I launched a kickstarter yesterday and it’s not doing well.

Here’s my basic algorithm:

  1. Try random things at zero cost
  2. Find the ones that work
  3. Scale those

We really can’t predict what will work or not which is why speed is so important – the more things you try the better since you’ll hopefully find something that will work. Boyd talks about this in his OODA loop. You observe your situation, orient yourself, decide what to do and then act upon it. Then go back to the start. He posits that if you can do this quicker than your opponent then you’ll win.

So let’s observe the situation.  This kickstarter raised about $600 in day one, with a fairly huge amount of publicity amongst map people.

Let’s orient given prior knowledge. The last two kickstarters did $1,600 in day one. They raised just under $15k and $10k total. It’s not super likely this one will reach $5k given the curve and what little we’ve had today (day two).

So it’s decision and action time. I’m pretty sure that:

  1. The prices on the kickstarter are too high
  2. The print images aren’t compelling enough

The prices are easy to drop and simplify. I’m thinking of just having one print at $40 or so since that’s the median price for this kickstarter and the last poster one.

As for the images, I’m working on continent-wide instead of city images. I’ve fixed some of the drawing issues. The thickness of the lines drops as log10() and I’ve changed that to log() which is nicer. I’m also working on aliasing and changing the color from “just black” amongst other things. Here’s an image of all the roads going to london:


There’s a bunch of work to be done here, but it gets the point across. My guess is that continent images like this will be more compelling.

The interesting question is how to get feedback. Asking the existing backers makes partial sense since they committed money but on the other hand, we need to figure out why people who didn’t back it didn’t back it. Feedback welcome of course.

Part of the reason for this whole thing is that the printer I bought for the last project is dead and needs to be replaced. This isn’t compelling in and of itself. Remember the “try random things” part of the algorithm? Well in a sense, yes, random things need to be tried since we can’t predict very well the chance of success. But, there are a couple of things to consider.

If we have two ideas A and B we may as well go for the bigger one. The reason for that is that it has more ways to succeed. A bigger idea may contain some element of a successful idea. A smaller idea has a lower chance of success and a lower overall level of dollars to attract. The cost remains the same: zero. This is because that’s what I’m going to spend since zero means the maximum number of ideas to be tried. Anything above zero restricts the number of ideas.

Second is opportunity cost. Picking the smaller idea costs the potential gain of a bigger idea. Doing a $5k kickstarter is the same as doing a $50k kickstarter with a 10% chance of success. But the $50k idea has a higher potential payoff and the same cost (zero) with a higher number of sub ideas that might spark some following.

There’s also just less competition. Doing anything commercial with OSM right now is hard because there are irrationally funded startups doing everything for free and owning the whole space. Competing with free is hard. At the other end of the spectrum I really love Thing Explainer simply because out of the billion books published this past year, it’s so unique. It’s not another tween vampire romance. Doing unique and big things is the way to go.

Is the cost really zero to do a kickstarter? No. It costs my time and so on, but it’s about as low as you can go.

Back to failure. The typical valley thing is to embrace and love failure. But that’s really just a way of avoiding it the same as treating failure as bad. The secret is to know failure sucks and push through it as a process, not to pretend it’s good or bad. It just is.

I tested a bunch of ideas last year and most of them failed. Nobody remembers any of them. Anyone remember Fake Mayor? That wasn’t even a failure, that sold for actual money. Anyway. I have a bunch of data on the ideas that succeeded and really I should have done one of those as my next kickstarter, or one of the other really big ideas I have laying around. Next time. (And, next time might mean next week at this rate).

(As an aside, I want to do a book about how to test and build ideas for super cheap using the internet, I think it’d be interesting).

So. The plan is to either pivot this kickstarter, kill it or restart it with simplified rewards in the next 24 or 48 hours. What do you think?

(It should be noted that some semi-pivoting by putting the above image on the kickstarter and so on is simple and free so I’ll do that in any case, but it’s not really a full pivot).

Glass Business Cards


I had this idea a while ago – why not take the incredibly strong glass we use on phones and make business cards out of them?

After some iterations on the process, I now have some! I can get them down to just 2 millimeters thin and mass laser etch them. They look incredible, you’re going to want to lick them:


I have a website mockup and name (Clarity Cards):


Sound interesting? The website is over here. Sign up for the mailing list to keep in the loop, it will be a kickstarter project soon:

Open Company

Here’s a crazy idea: It would be interesting to build a kind of “open” company.

Most companies are closed in the sense that you have limited contact with them and little insight in to their internals. It would be interesting to create something where there was some high degree of openness both within and without, a flat structure and deep feedback loops.

Valve doesn’t have managers (flat structure) and people just work on whatever they want to, with peer pressures as a check. Amazon has a lot of the same customer and feedback goals but more traditional management. A blend of these would be interesting.

The problem is capital. Valve has a big office in Bellevue and people. Amazon have bigger offices in Seattle and lots more people.

But what if we flip that? 37signals has some large number of remote employees and that appears to work just as well. Why not make all your employees remote? No more office-related costs.

People are, generally, expensive. Well, they are in Bellevue, WA. What if we don’t mind if you work in Timbuktu? What if they don’t work full-time? Suddenly employee costs drop off a cliff. For not much cash, you could hire 5 or 10 people on upwork to get started.

It’s never been cheaper to go do this. We could make the company handbook v 1.0 just be Valve’s handbook.

Amazon started with books, Valve with Half-Life. What if you start with nothing at all but people interested in the experiment, and employees own ideas of what to work on?

Could you make the company an entertainment in itself? People love following along kickstarter projects and watching Dragons Den / Shark Tank. People are already therefore paying dollars and time to be part of the experience in creating something.

An Open Company could put you right there with the people making things happen. You can follow along and influence who gets hired and what people work on. It would be like The Sims, only more entertaining because it’s real. You could help choose the company logo, be an “associate CEO”, vote on product wireframes… or not be involved at all and just watch (in your “OpenCompany” t-shirt).

Worst case, it would be an entertaining art project. Best case, it would be fun and create something of value.

Sound fun? Sign up for more at or here:

Cardboard economics


Google shipped an interesting product and pretty website for cardboard. Basically a cheap way to turn your cheap cellphone in to a AR display unit a-la Oculus Rift. Only very crappy with low resolution and high latency; good enough to prototype & play with which is great. You put a phone in it and it pretends to be a VR display.

Someone on Hacker News posited that “Somebody should do a Kickstarter to make and ship copies of this kit for $5 or $10.” So I dug in to it a little. Here’s what my rough bill of materials looks like:

  • cardboard 1.59
  • lenses 9.00
  • ring magnet 3.98
  • disk magnet 1.98
  • velcro 2.98
  • rubber band 0.01
  • nfc tag 1.50
  • postage 5.00
  • sub total 26.04
  • labor 5
  • margin 5
  • unit cost 36.04

So let’s call it $35. This is roughly half the cost of a Dive unit. And the dive unit actually ships, is made out of plastic and you don’t have to think about building it.

A laser cutter big enough to cut the cardboard is about $11k and at $5 margin per unit you’re looking at needing to ship $80k of these cardboard units to recoup the cost, which I’m assuming would be a reasonable goal. I don’t think anyone will raise $80k of cardboard kits but as ever I could be wrong.

dodocase are flying a kite to sell a unit for $20 which is clearly too cheap without massive volume, unless you can somehow turn it in to a loss leader for something else.

So, in sum, cardboard VR headset cases are kind of irrelevant. The cost isn’t the cardboard vs. plastic housing material: It looks like it’s everything else like the lens units, the postage, the risk, the labor and so on. The PR value is of course very high. There’s clearly tens/hundreds of millions of dollars of PR value out of cardboard for roughly half that in fully loaded headcount and other costs – it all depends how you account for it. The narrative that “Google did something cool” (e.g. cardboard) out of the I/O event is worth a significant sum of money and they deserve all the credit for executing on that.

How to Build a Billion Dollar Software Business

Over the years I’ve used a variety of devices and come to the conclusion that you can approximate how successful they are in the market with two of their features. That’s it, just two. Device manufacturers spend a lot of time copying each other but it really comes down to:

  1. Does it turn on?
  2. Does email work?

If you can do these two things, you’ll make a billion dollars.

It might sound like most computers, phones and tablets are capable of this. But no, they aren’t. Most devices die pretty quickly and even today most aren’t capable of talking to an Exchange server or have a unified inbox.

Let’s start with the most disappointing.


The latest Ubuntu 13.10 wouldn’t even install on the ASUS laptop I have (which is a year or two old). After half an hour playing with BIOS settings I gave up and downloaded 14.04 pre-release. That installed, but something called “compiz” sat using 100% CPU and draining the battery. Using a decade’s worth of experience, I fixed that. Neither Thunderbird or Evolution email clients will talk to Exchange out of the box, but there is a variety of contradictory documentation on the web about how you might one day get that to work. When you send an email in Thunderbird it sits there with a server communication dialog rather than getting out of the way and sending in the background. Upon closing the laptop and reopening it, it crashes and sends a bug report to Canonical (the makers of Ubuntu).

Does it turn on? No. Does email work? No.

Surface & Laptop Windows 8.1

Same laptop as above, installs fine. Updates itself. Can turn on and off and even hold battery charge when closed. Modern email client looks great but for some bizarre reason doesn’t have a unified inbox. Surface dies within days of sitting on a table top.

Does it turn on? Sort of. Does email work? Close, but, no.

Nexus 7 with Android Rainbow Sandwich (or, whatever)

The battery dies within a few days of leaving it idle on a table. No unified inbox I could figure out, pushes gmail on you.

Does it turn on? No. Does email work? No.

Kindle Fire HDX

Battery life is better than the Nexus 7 but still dies quickly. Unified inbox! Exchange works out of the box! But, for some reason, the email client keeps switching away from unified and in to each individual inbox when you tap on email. Maddeningly, you have to keep going back to the unified inbox to see all mail. Amazon have done a great job with this, but it’s just not quite there.

Does it turn on? Almost! Does email work? Almost!


You can leave the iPad for weeks and it will still have some charge. Unified inbox works smoothly and Exchange works great. If you have 10 email accounts and you’re offline the thing will spam you with (at least) 10 dialog boxes saying it can’t connect to your email servers. My Powerbook is just as good.

Does it turn on? Yes. Does email work? Yes.


The worth of computers and tablets really comes down to their ability to help you communicate. To be able to do that, it has to be able to turn on. Email is the primary way we communicate today and it has to work flawlessly. Few people are down to one email account and Exchange is the best-selling (and only, really) email server you can buy. If it can’t do unified inbox and Exchange, it doesn’t work.

Amazon and Microsoft come very close to getting there. Amazon’s customer focus shines through on the HDX and is a hair away from having a device which works. Modern Mail on Win8 is similarly close but probably self-restricted to make sure it doesn’t compete with some feature or other in Outlook.

Why am I willing to pay two or three times as much as those devices for an iPad or a MacBook? It’s not for Pages. Office is great, OpenOffice is acceptable. It’s not because it’s shiny; there are shiny Ultrabook PCs now. It’s not because the iPad is a great piece of hardware; the Dell Venue 8 is a very comparable tablet.

It’s because they turn on, and because email works. All the UI stuff, the APIs, the app stores, the marketing budgets… All that stuff it secondary or tertiary and I’m back to my MacBook and iOS devices.

BDNT Event Review

I went to a tech meetup, BDNT, last night in Boulder. I used to go often when I lived in Denver a couple of years ago. Six or so startup-alikes get five minutes to pitch then five minutes for questions. These are the three that I remember:



AmbientBox pitched an analytics platform for restaurants, bars and shops. You buy a magical box ($250) and plug it in. It records various things like noise level, CO2 (to detect how many people are in the room), lighting levels and so on. It uploads this and then you use an app to figure out when the ambiance is “good.” A pretty ipad app or website will theoretically let you use this data to figure out how to improve your space, get more customers and so on. You pay $100/month or something. Sort of Nest for restaurants, maybe.

My thoughts:

  • Basic idea is kind of interesting.
  • A magical box sounds painful. Why can’t this just be an smart phone app to start? It has a camera and microphone on it minimum.
  • CO2 sensor sounds interesting, but I’m willing to bet it correlates with noise level and is irrelevant.
  • Low end restaurants won’t give a crap about this. High end restaurants will pay someone. The middle ground sounds like a smaller market?
  • The great part about this is that it gives your restauranteur the feeling of being in control and making progress. Even if it’s bullshit, there are lots of people who’re happy to pay for pretty graphs and to pay for the feeling of control. Another way of putting it; it’s enough data to hang yourself with.
  • Visualizations were pretty.



ChatLingual is magical IM chat on the web with seamless translation between languages. So, we each chat in our language and it’s translated on the fly. Monetization is a little unclear, pay per chat, tokens or something. Secret plan is to build the best translation engine possible.


  • Super pretty and clean UI.
  • If I’m cheap, I’ll go use Google translate or something. If I have money and I have some nuanced conversation with reserved Japanese executives, then I need a professional translator?
  • The data collection secret plan is good, but super long range. Sounds like free basic usage plus additional services (e.g. freemium) would work well. Computer translation for free, real bilingual people for $20/hour or whatever.
  • Would be a useful feature for odesk / elance so I can communicate better with freelancers
  • The flip side, is that it might just be a feature. Don’t IM clients do this already?



FitTrip is (will be) an iPad app which makes working out more fun. You connect a heart rate monitor and your iPad magically shows you a video of you, say, running the grand canyon. If your heart rate speeds up then the video speeds up, like you’re really there. Content is paid for; so you get one free virtual run then you pay to run other places. There are competitors out there for this idea.


  • The guys asked the audience if they’d pay $5 for a trip. This is an awful way to ask about pricing. You need to ask “what is a cheap price”, “what is an expensive price” and so on.
  • Most of the audience, 100+ people, put their hands up to the $5 question. This is wacky. What they should have asked is how many people have iPads, heart rate monitors, a running machine and work out. And want to pay for this app content. It’ll be a much smaller percentage.
  • If I’m going to pay for an iPad, a heart rate monitor and the app, and a gym membership or running machine, couldn’t I just fly to the grand canyon for less money and run for real? (Answer is yes, you can).
  • The guys mentioned 60% of gym memberships are paid for but unused. That is, people don’t show up to the gym. They said this like it’s a bad thing. Gyms love that, it’s free cash flow. The last thing in the world a gym wants is customers to show up, the same way a bank doesn’t want us all showing up to withdraw money at the same time.
  • All that said, the app was very pretty.
  • It’s a large, irrational market, just look at that 60% of gym members who don’t show up, but still pay. So even crazy stupid ideas can work.


SortPeople: Save time hiring

I’ve built something called SortPeople.

When you hire someone, typically you have to look through a lot of resumes. SortPeople invites applicants to review each other. Then, you get a list of applicants ordered by their score. Peer reviewed, crowd sourcing of who’s the best for the job.

This should save you a lot of time when hiring.

What do you think?

What I learnt trading coffee for feedback

Coffee for Opinions

Coffee for Opinions

So you have a Thing and you want to get feedback from Real People. Buy them a coffee in exchange for a little time, right?

First, don’t expect busy cafe owner guy to agree. Or care. The first one didn’t. It turns out that offering free coffee sends all kinds of mixed signals for a cafe even if they’re still making money. The question is, are they making additional revenue? In other words, they’ll sell the coffee anyway so why add the complication of putting you in the middle?

Don’t pick a busy coffee shop. They don’t have time to deal with your stupid feedback idea. Find a coffee shop where they have enough time to listen to your stupid feedback idea, but also have customers occasionally so you can actually, you know, get feedback.

Don’t go to a coffee shop with 20-something hipsters. The wifi will be saturated and you want a more representative sample of the population.

Get a sign. Mine was simple; “ask me for free coffee”. I printed it on a piece of paper. The plastic stand, you won’t believe. Staples sells them for $11. $11. And that’s the low end model. There are all types of deluxe super platinum crystal edition stands.

I evolved my idea in to just paying the barista. I kicked it off with a flat $25 tip and $25 behind the counter to buy coffee. About half the customers agreed to free coffee, the other half were too busy. The flat tip gets the barista on your side. To the point of evangelism since it would otherwise take 25 sales to get the same tip. It also vastly simplifies the whole “money changing hands” thing. No awkward cash for every other coffee getting in the way of that valuable feedback time.

Now throw away the sign since barista person is doing the PR for you.

You’re showing them the Thing on a laptop, phone or a tablet right? Make sure you don’t mind crumbs and coffee being spilt all over it. Make sure it doesn’t have all your secret passwords on it. Make sure you don’t mind if it gets dropped or stolen. Basically, buy a cheap android thing.

Show the barista how the Thing works. Now, they’re the ones showing customers and asking for the feedback. Yay! Division of labor!

Next, prepare for feedback.

Whatever you thought you were going to get feedback on, it will be on something else that you actually hear. Getting out of the building and talking to Real People is extremely valuable. Things you thought were obvious will be incredibly complicated for Joe User. Complicated things will be simple.

Write everything down. Everything. I avoided audio or video recording since it would complicate things and might be creepy.

A few hours later, richer for conversations and feedback, poorer $50, you have your data to go iterate on.

Oh and the barista is your new best friend.

Powered by WordPress. Designed by WooThemes