<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programmer Joe &#187; Augmented Reality</title>
	<atom:link href="http://programmerjoe.com/category/augmented-reality/feed/" rel="self" type="application/rss+xml" />
	<link>http://programmerjoe.com</link>
	<description>Joe Ludwig's blog</description>
	<lastBuildDate>Sun, 01 Jan 2012 22:43:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>How did I do with my 2011 predictions?</title>
		<link>http://programmerjoe.com/2012/01/01/how-did-i-do-with-my-2011-predictions/</link>
		<comments>http://programmerjoe.com/2012/01/01/how-did-i-do-with-my-2011-predictions/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 19:08:37 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Future of Computing]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=283</guid>
		<description><![CDATA[A year ago I posted a list of predictions for 2011. Let&#8217;s see how I did: Wrong. Netflix did pick up more content. They are doing some interesting things with Arrested Development, for instance. However, I don&#8217;t think people will look back on all the pricing changes, Qwikster, and the general user annoyance as a [...]]]></description>
			<content:encoded><![CDATA[<p>A year ago I <a href="http://programmerjoe.com/2011/01/02/2011/">posted a list of predictions</a> for 2011. Let&#8217;s see how I did:</p>
<ol>
<li>Wrong. Netflix did pick up more content. They are doing some interesting things with <a href="http://www.nytimes.com/2011/11/21/arts/television/netflix-to-back-arrested-development.html">Arrested Development</a>, for instance. However, I don&#8217;t think people will look back on all the pricing changes, Qwikster, and the general user annoyance as a year when Netflix &#8220;kicked ass&#8221;. </li>
<li>Correct. 50 Mbit FiOS! Woot!  We moved from Seattle to Kirkland into a house where the previous owners bullied Verizon into running the fiber. It&#8217;s completely awesome.</li>
<li>Sort-of Correct. It&#8217;s not 60%, but Android is up to <a href="http://www.bgr.com/2011/12/30/android-and-ios-u-s-market-share-continues-to-grow-at-blackberrys-expense/">43% market share</a>. &#8220;Dizzying array&#8221; is the only way to describe the number of Android devices out there, though that&#8217;s not entirely a positive thing. </li>
<li>Correct. Google and some of their partners <a href="http://www.theverge.com/2011/05/10/google-promises-android-devices-updates-18-months/">announced</a> a plan to improve the update situation. Hopefully that will work out.</li>
<li>Correct. What new glasses? The <a href="http://www.vuzix.com/ar/products_star1200.html">Vuzix Star 1200s</a> look cool, but $5k is a bit out of the consumer price range.</li>
<li>Correct. This one was sort of a gimme since there&#8217;s no way to tell if this is really the start of anything. I&#8217;ve seem a bunch of Nissan Leafs around my neighborhood though.</li>
<li>Wrong. I certainly haven&#8217;t heard of any such advance. Did I miss one?</li>
</ol>
<p>4.5 out of 7 isn&#8217;t so bad. Some of my predictions were pretty soft-ball though, so I kind of cheated. <img src='http://programmerjoe.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I think I&#8217;m going to skip writing my own 2012 predictions post this year. I would love to hear what you think is going to happen this year. Post them in the comments!  (I&#8217;ll probably pick the best of them and put up a new post collecting them.)</p>
<p>Edit: @JZig points out that math is hard. 7 &#8211; 2.5 = 4.5</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2012/01/01/how-did-i-do-with-my-2011-predictions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Figuring out a common time base</title>
		<link>http://programmerjoe.com/2011/06/26/figuring-out-a-common-time-base/</link>
		<comments>http://programmerjoe.com/2011/06/26/figuring-out-a-common-time-base/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 17:28:37 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=269</guid>
		<description><![CDATA[Using the locator beacon network from the simulator for an indoor navigation system that follows my own requirements means that a receiver must be able to use the network without sending out signals to each node. The receiver must be able to determine its distance from multiple nodes without actually sending anything to those nodes. [...]]]></description>
			<content:encoded><![CDATA[<p>Using the locator beacon network from <a href="http://programmerjoe.com/2011/02/20/simulating-locator-beacons/">the simulator</a> for an indoor navigation system that follows my own <a href="http://programmerjoe.com/2011/01/09/7-requirements-for-an-ar-positioning-system/">requirements</a> means that a receiver must be able to use the network without sending out signals to each node. The receiver must be able to determine its distance from multiple nodes without actually sending anything to those nodes. This is accomplished in the GPS network by synchronizing all the satellites on a very precise clock. Once the transmitter and the receiver have a clock in common the receiver can easily compute its distance to the transmitter:</p>
<ol>
<li>Transmitter sends a signal at time X saying &#8220;It&#8217;s time X!&#8221;</li>
<li>Receiver receives that signal at time Y</li>
<li>Distance = ( Y &#8211; X ) / speed_of_light</li>
</ol>
<p>So how do you build a common time base on a ad-hoc network of locator nodes run by a random assortment of people? The short answer is that you don&#8217;t. Assuming a few things about all the hardware involved you can get by coming up with an ad-hoc time base that still lets you compute distance without requiring any kind of central authority.</p>
<p>This assumes a few things about beacons and receivers in the network:</p>
<ul>
<li>Each node (beacon or receiver) has a fixed (and known) amount of receiver lag. This is the time between when a signal hits the antenna and when it&#8217;s pushed to whatever internal system can tag it with the internal clock of the node. This is <em>Send(N)</em> for node N.</li>
<li>Each node has a fixed (and known) amount of transmitter lag. This is the time between when a message is sent and timestamped, and when it actually leaves the transmitter&#8217;s antenna. This is <em>Recv(N)</em> for node N.</li>
<li>None of the nodes are lying.</li>
</ul>
<p>With these assumptions, the system is relatively straightforward. Any node can compute the translation from its own time base <em>Time(n, t)</em> to some other node&#8217;s time base <em>Time(m, t)</em> by pinging that node:</p>
<ol>
<li>Node N generates a random number <em>ping_key</em></li>
<li>Node N broadcasts a message containing <em>ping_key</em> and records <em>ping_time = Time(N, t)</em>.</li>
<li>Node M receives that broadcast message and records <em>receipt_time = Time(M, t)</em>.</li>
<li>Node M sends out a broadcast of its own with: <em>NodeID(M), ping_key, Send(M), Recv(M), receipt_time, Time(M, reply)</em></li>
<li>Node N receives the response and notices that <em>ping_key</em> matches its own <em>ping_key</em>.</li>
<li>Node N computes its relative time base with M as follows:
<ul>
<li><em>Total_time = Time(N, reply_receipt) &#8211; Time(N, transmission) &#8211; ( receipt_time &#8211; Time(M, reply))</em></li>
<li><em>distance_time = (Total_time &#8211; Send(N) &#8211; Recv(N) &#8211; Send(M) &#8211; Recv(M) )/2</em></li>
<li><em>distance = distance_time/speed_of_light</em></li>
<li><em>time_base_difference = Time(M, t) &#8211; Time(N, t) = Time(M, receipt) &#8211; Time(N, transmission) &#8211; (distance_time + Send(N) + Recv(M))</em></li>
<li><em>time_base_difference2 = (Time(M, reply) + distance_time + Send(M) + Recv(N) ) &#8211; Time(N, reply_receipt)</em></li>
</ul>
</li>
<li>Node N stores <em>NodeID(M), time_base_difference, distance</em> in its table of nearby beacons. (time_base_difference and time_base_difference2 should be equal assuming that all the lag numbers are right and the distance hasn&#8217;t changed. If they drift apart something is wrong.)</li>
</ol>
<p>This mechanism enables each beacon to keep a constantly updated time base for every node in range via the same packets it is using to determine distance to those beacons. Beacons can then send out everything they know:</p>
<ul>
<li>Their own location (estimated from GPS and refined via the algorithm in the simulator)</li>
<li>Time(beacon, broadcast)</li>
<li>For each beacon N in range:
<ul>
<li>Node ID of N</li>
<li><em>Time(N, broadcast)</em></li>
</ul>
</ul>
<p>Here comes the unfortunate part: In order to figure out its own time base relative to a beacon each receiver must ping at least one beacon. Once it has that beacon&#8217;s time base it can figure out every other beacon in range of that beacon and work out from there. Because clocks on nodes will drift apart over time this ping will need to be repeated every X minutes. Because the last pinged beacon will eventually be out of range, it should also be repeated whenever the receiver moves more than Y distance. This ping need not contain any identifying information about the receiver, so it shouldn&#8217;t have privacy implications, but it will reduce the scalability of the system from <em>receiver_count = infinite</em> to <em>receiver_count = bandwidth / (ping_size * ping_frequency)</em>. As long as the pings are relatively small and infrequent that should not be an issue.  Multiple receivers attached to the same clock (i.e. multiple receivers carried by the same person) could also share time base information and would not need separate pings.</p>
<p>What do you think?  Will it work? Are predictable transmit and receive lag even realistic?</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2011/06/26/figuring-out-a-common-time-base/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simulating Locator Beacons</title>
		<link>http://programmerjoe.com/2011/02/20/simulating-locator-beacons/</link>
		<comments>http://programmerjoe.com/2011/02/20/simulating-locator-beacons/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 18:46:30 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=249</guid>
		<description><![CDATA[Recently I&#8217;ve been thinking a lot about how a locator system that satisfies my own requirements could be put together. My current approach is a system of beacons in fixed positions that communicate with each other and broadcast to receivers via radio. This is basically the same system described in Rainbow&#8217;s End Both receivers and [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been thinking a lot about how a locator system that satisfies <a href="http://programmerjoe.com/2011/01/09/7-requirements-for-an-ar-positioning-system/">my own requirements</a> could be put together. My current approach is a system of beacons in fixed positions that communicate with each other and broadcast to receivers via radio. This is basically the same system described in Rainbow&#8217;s End</p>
<p>Both receivers and beacons use transmit time to compute distance. Beacons use those distances (and the knowledge that they are all actually in fixed positions) to build an accurate mesh of their relative positions to each other. Those relative positions are fixed to absolute positions by including beacons with very precise known positions in the network.</p>
<p>I wanted to see if I could figure out how to actually find beacon positions relatively and then absolutely based on those few known beacons, so I built a simulator. The beacons use a mass and spring system to push and pull each other around into usually the right positions. This has the advantage of working without any central authority computing beacon positions. If its neighbors are trustworthy, each beacon can &#8220;move&#8221; itself around until it finds a stable location. This simulation is in 2D, but there&#8217;s nothing preventing it from working just as well in 3D.</p>
<p>The simulator is in Javascript, so I&#8217;ve just embedded it below. You can find some instructions on how to use it if you scroll down. Comments appreciated!</p>
<p><iframe src="http://programmerjoe.com/projects/beacons/animated.html" width="640" height="760"></iframe></p>
<p>Select a beacon type from the UI and click anywhere in the frame to add a beacon at that location. Or click Random to add a new beacon.</p>
<p>Units are in pixels, except for the mass and spring weight values which are in Foozles and Smurfs respectively.</p>
<p>You can also use these key equivalents:<br />
k: select Known<br />
u: select Unknown<br />
g: select GPS<br />
r: place a beacon of the selected type at a random location</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2011/02/20/simulating-locator-beacons/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>7 Requirements for an Augmented Reality Positioning System</title>
		<link>http://programmerjoe.com/2011/01/09/7-requirements-for-an-ar-positioning-system/</link>
		<comments>http://programmerjoe.com/2011/01/09/7-requirements-for-an-ar-positioning-system/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 19:23:21 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Future of Computing]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=241</guid>
		<description><![CDATA[For me, a positioning system has a few requirements to be appropriate for widespread use in Rainbow&#8217;s End-style augmented reality: The system should scale to any number of mobile devices. The system should work indoors and outdoors. It should also work underground in places like subway stations. No one should be able to track the position of [...]]]></description>
			<content:encoded><![CDATA[<p>For me, a positioning system has a few requirements to be appropriate for widespread use in Rainbow&#8217;s End-style augmented reality:</p>
<ol>
<li>The system should scale to any number of mobile devices.</li>
<li>The system should work indoors and outdoors. It should also work underground in places like subway stations.</li>
<li>No one should be able to track the position of devices in the system.</li>
<li>A mobile device should require minimal warm-up time of less than ten seconds</li>
<li>A mobile device should be able to determine its position on an ongoing basis with a frequency of at least 30Hz.</li>
<li>A mobile device should be able to pinpoint its position down to 1cm or less.</li>
<li>A mobile device should be able to operate with its positioning system activate at all times and still maintain a reasonable battery life.</li>
</ol>
<p>The closest current contender is GPS. Let&#8217;s see how it does on each of those front:</p>
<ol>
<li>So far so good. The GPS satellites don&#8217;t care how many receivers there are. GPS has weathered an explosion in the number of receivers over the past ten years and come through just fine.</li>
<li>GPS fails this one. It works outdoors most of the time but indoors only if you are near an equator-facing window. It never works underground.</li>
<li>Since GPS receivers only listen, this is generally true.  The 911-driven remote activation requirements allow some GPS devices to be trackable, but the tracking happens through the phone&#8217;s network connection not through the positioning system itself.</li>
<li>GPS manufacturers claim warm-start times under ten seconds. According <a href="http://www.pocketgpsworld.com/ttffcomparisons.php">TTFF measurements for many models</a> from 2003 some models can warm-start in under ten seconds. Things have significantly improved since then.</li>
<li>GPS receivers typically send an NMEA position sentence once per second (or 1Hz). SparkFun <a href="http://www.sparkfun.com/categories/4">lists a few GPS components</a> in the 5-10Hz range. It&#8217;s not clear if this is a limitation of the system or if GPS has an inherent update frequency limitation, so we&#8217;ll assume that improved chipsets will get the frequency up to 30Hz.</li>
<li>GPS completely fails this one. Under ideal circumstances and non-real-time post-processing GPS will <a href="http://earthmeasurement.com/GPS_accuracy.html">get you down</a> to about 2cm. Under normal circumstances the accuracy is more like 10-50m. GPS will tell you what street you&#8217;re on (if you assume you&#8217;re on a street) or what house you&#8217;re in, but it can&#8217;t tell you what room you&#8217;re in.</li>
<li>Current GPS receivers still draw too much power to leave them on all the time, but Moore&#8217;s Law is changing that. They should be always-on in a few more years.</li>
</ol>
<p>GPS fails in two very important requirements: where you can use it and how accurate it is.  Satellite-based replacements for GPS are likely to have the same failure indoors and underground. If it ever launches, Galileo is supposed to have a commercial encrypted system that provides accuracy down to 1cm, but it still won&#8217;t work indoors or underground. Relying on satellite-based positioning is a dead-end for augmented reality.</p>
<p>The other way that AR researchers are tracking position is with a camera-based system. No one has yet built such a system that operates out in the wild, but it would be theoretically possible. A visual tracking system would operate by comparing the stream of images from the camera against a database of images that is stored in the cloud. The exact form of that comparison is a matter of much research. Whether the comparison happens in the cloud or on the mobile device is also an open question. The general form of the system (large database in the cloud and a stream of images from the camera on the mobile device) is pretty stable though. One key assumption here is that the image database for a city-sized area is far too large to download to the mobile device. Let&#8217;s see how that does on our requirements:</p>
<ol>
<li>Because of the requirement that we either stream the camera images to the cloud or the local portion of the database from the cloud to the mobile device, each additional user puts incremental load on the system. The number of users in a local area will be limited by the mobile network bandwidth available to those users. The number of total users of the system will also be limited by the server capacity of the system&#8217;s provider, but that end of things can scale out more easily.</li>
<li>This system would work anywhere the database covered. Indoor and underground environments would be fine. Areas where the camera could only see other people (i.e. crowds) would be a problem because the database wouldn&#8217;t have anything static to compare against.  If the camera depends on environmental light this system would perform poorly in dark areas (or at night.)</li>
<li>If the camera&#8217;s images are streamed to the cloud the system&#8217;s provider would know exactly where each device was at all times. If the portion of the database related to a small area is streamed down to the device then the service provider will only be able to locate the device to within that small area. Either way, the provider will know where the user is to within a few hundred feet.</li>
<li>If the camera images are streamed to the cloud, start-up times should be more or less instant. If the database is streamed down to the device it may take a few seconds to get things started, which is well within our tolerance.</li>
<li>Current visual tracking systems have trouble reaching 30Hz, but Moore&#8217;s Law should take care of that eventually. For a system that streams the video to the cloud bandwidth can also affect update frequency. Once the link starts filling up with streams from other devices the update frequency goes down for every device.</li>
<li>Visual tracking systems are quite accurate. Finding hard numbers is difficult, but there&#8217;s no reason to believe that a visual tracking system would be less accurate than 1cm.</li>
<li>Visual tracking systems are power-hungry at the moment. They require fast cameras, fast network connections, fast CPUs on the mobile devices, and lots of memory. Because so much of the system is unknown, it&#8217;s hard to pin down numbers, but I would estimate that we need 100x power reduction before leaving this system on all the time is realistic. That will take Moore&#8217;s Law about ten years to accomplish.</li>
</ol>
<p>If we can solve the low-light and power issues, a visual tracking system would certainly work for a small number of users. Solving the bandwidth constraint for a system that much of the population is using is a more daunting issue. All that bandwidth also makes the system expensive to operate, which will be passed on to end users as either usage fees or advertising. Building a workable generally available visual tracking system not an impossible problem, but it&#8217;s certainly a difficult one.</p>
<p>Personally, I&#8217;m not satisfied with either of these systems. I have thoughts on how to build a better one, but I&#8217;ll save those for a future post. What do you think? Am I missing any major requirements? Are any of mine unnecessary? Am I representing GPS or the imagined visual tracking system unfairly? Let me know in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2011/01/09/7-requirements-for-an-ar-positioning-system/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>2011</title>
		<link>http://programmerjoe.com/2011/01/02/2011/</link>
		<comments>http://programmerjoe.com/2011/01/02/2011/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 19:27:01 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Future of Computing]]></category>
		<category><![CDATA[Game Industry]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=235</guid>
		<description><![CDATA[In the interest of seeing just how wrong I can be twelve months from now, here is a list of things I think will happen in 2011. This is possibly the worst day of the year to write such a post, what with CES starting on Thursday, but that&#8217;s never stopped me before. Netflix will [...]]]></description>
			<content:encoded><![CDATA[<p>In the interest of seeing just how wrong I can be twelve months from now, here is a list of things I think will happen in 2011. This is possibly the worst day of the year to write such a post, what with CES starting on Thursday, but that&#8217;s never stopped me before.</p>
<ol>
<li>Netflix will continue to kick ass. Their selection of streaming movies and TV shows will explode in 2011, though they will have to <a href="http://gigaom.com/video/the-real-cost-of-netflix-streaming-is-the-movie-not-the-bandwidth/">pay more</a> for all that content.</li>
<li>My internet connection will improve. Self-fulfilling prophecy? I hope so! I&#8217;ve had 1.5Mb/768kb DSL for ten years. It&#8217;s well past time to upgrade. In theory Qwest will be putting 20Mb service into my neighborhood soon, so maybe that&#8217;s in my future.</li>
<li>Android will continue to kick ass and take names. 2011 will see &gt;60% smartphone market share, a dizzying array of tablets and phones, and probably even some netbooks by fall. More and more apps will start to ship on both Android and iOS at the same time.</li>
<li>Android 3.0 will include improvements for the annoying OS upgrade delays on that platform. Google will come up with some way to apply pressure on handset manufacturers and carriers to deliver the latest version of Android to uses in a more timely fashion.</li>
<li>Still no consumer-level visual pass-through AR glasses. I said it last year, and I&#8217;ll keep saying it every year until I&#8217;m wrong. <img src='http://programmerjoe.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>This will be the year the electric car revolution began. The Nissan Leaf and Chevy Volt will both sell well and set the stage for the electric cars of 2012 (including the Tesla Model S) to blow the doors off.</li>
<li>This year will feature one &#8220;unthinkable ten years ago&#8221; level medical advance. Will it be a cure for cancer? Regrowing limbs from your own stem cells? Repair of severed spinal cords? Pain medication with no side effects? Who knows, but something big is going to happen this year.</li>
</ol>
<p>And that&#8217;s it!  If it&#8217;s not on this list it&#8217;s not going to happen in 2011!</p>
<p>(Think maybe something might happen in 2011 that wasn&#8217;t on this list? Please add your own prediction in the comments and we&#8217;ll see how you do!)</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2011/01/02/2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How did I do with my 2010 predictions</title>
		<link>http://programmerjoe.com/2011/01/02/how-did-i-do-with-my-2010-predictions/</link>
		<comments>http://programmerjoe.com/2011/01/02/how-did-i-do-with-my-2010-predictions/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 18:39:04 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Game Industry]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=233</guid>
		<description><![CDATA[I realize these &#8220;predictions at new years&#8221; posts are a little cheesy and that you see them everywhere. I enjoy writing them, so I&#8217;m going to do it anyway. This is my look back at my predictions of one year ago to see how I did. Correct. It is arguably fair to call STO the [...]]]></description>
			<content:encoded><![CDATA[<p>I realize these &#8220;predictions at new years&#8221; posts are a little cheesy and that you see them everywhere. I enjoy writing them, so I&#8217;m going to do it anyway. This is my look back at <a href="http://programmerjoe.com/2009/12/31/2010/">my predictions of one year ago</a> to see how I did.</p>
<ol>
<li>Correct. It is arguably fair to call STO the only significant MMO launch of 2010. APB sort of fizzled, after all. I haven&#8217;t heard much about STO since its launch though&#8230; not sure how it&#8217;s actually doing.</li>
<li>Sort of Correct. I could only come up with two cancellations from my list:
<ul>
<li>APB was actually cancelled after it came out. That&#8217;s the wrong way around.</li>
<li>The Agency is rumored to be more or less shut down at this point. Nothings been announced here and probably never will be.</li>
</ul>
</li>
<li>Correct. <a href="http://voices.washingtonpost.com/fasterforward/2010/12/playstation_move_vs_kinect_sal.html">Reports</a> are that they&#8217;ve both sold millions of units.  Natal (now named Kinect) has also incited thousands a cool Kinect Hack YouTube videos. Dance Central is pretty cool, so at least one great Kinect game is already out.</li>
<li>Correct. According to <a href="http://www.google.com/publicdata?ds=usunemployment&amp;met=unemployment_rate&amp;tdim=true&amp;dl=en&amp;hl=en&amp;q=unemployment+rate">this chart</a> the unemployment rate in the US peaked at 10.6% in January 2010.</li>
<li>Wrong. I&#8217;ve seen no evidence that Junaio, Layar, or Wikitude are ready to stray from their AR roots yet. In fact they seem to be doubling down by making the set of things they can position at a GPS location <a href="http://www.junaio.com/publisher/examples">much more complete</a>.</li>
<li>Correct. There haven&#8217;t been any interesting new products in the area of wearable displays. Lots of talk at ARE2010 and elsewhere, but nothing concrete yet.</li>
<li>Correct. Google Goggles came to the iPhone, but other than that neither company has done anything on the AR front.</li>
<li>Wrong. There&#8217;s no indication that the marketing world (or consumers) are tired of simple AR campaigns. If anything the campaigns are continuing to grow in popularity and complexity.</li>
<li>Correct. The iPad and iPhone 4 came out. Good thing I didn&#8217;t predict how well the iPad would do&#8230; I would have massively underestimated it.</li>
<li>Correct. App store <a href="http://reviews.cnet.com/8301-13727_7-10433305-263.html">approval times</a> are reported to be under a week these days. They also <a href="http://appadvice.com/appnn/2010/09/apple-revises-app-stores-approval-process-releases-official-guidelines/">published the review guidelines</a>, which is a big step up from 2009.</li>
<li>Sort of wrong. Technically <a href="http://www.stockbriefings.com/google-inc-nasdaqgoog-android-has-200000-apps-2/3179516">200,000</a> is more than 50,000, but I completely underestimated the meteoric rise of Android during 2010. I thought that Android phones would only outsell iPhones until iPhone 4 came out, but they <a href="http://www.zahipoint.com/2010/05/11/android-exceeds-apple-os-for-iphone-in-us-market/">topped the iPhone</a> in May (in the US) and never looked back.</li>
<li>Correct. Nobody figured out what to do with it so Google <a href="http://wave.google.com/about.html">mothballed the project</a>.</li>
<li>Wrong. Wave doesn&#8217;t inter-operate with anything. That&#8217;s a bit part of why it failed in my opinion.</li>
</ol>
<p>My score was 9 correct and 4 wrong. Better numbers than last year, but I think I made more safe bets for 2010 too. 2010 went pretty much how I expected it would (with the notable exception of Android going gangbusters.)</p>
<p>How was your year? Did anything surprising happen?</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2011/01/02/how-did-i-do-with-my-2010-predictions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SeAR July 2010: Augmented Reality the Next Next Big Thing</title>
		<link>http://programmerjoe.com/2010/07/17/sear-july-2010-augmented-reality-the-next-next-big-thing/</link>
		<comments>http://programmerjoe.com/2010/07/17/sear-july-2010-augmented-reality-the-next-next-big-thing/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 22:55:56 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=222</guid>
		<description><![CDATA[SeAR July 2010: Augmented Reality the Next Next Big Thing from Joe Ludwig on Vimeo. This is my talk from last Wednesday&#8217;s Seattle Augmented Reality Meetup. I will upload the discussion that followed as a separate video later today. Comments and feedback are welcome&#8230; just comment below or over on Vimeo.]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=13420029&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=13420029&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/13420029">SeAR July 2010: Augmented Reality the Next Next Big Thing</a> from <a href="http://vimeo.com/user4290465">Joe Ludwig</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>This is my talk from last Wednesday&#8217;s Seattle Augmented Reality Meetup. I will upload the discussion that followed as a separate video later today. Comments and feedback are welcome&#8230; just comment below or over on Vimeo.</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2010/07/17/sear-july-2010-augmented-reality-the-next-next-big-thing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Obvious Idea #2: Passive Facial Recognizer</title>
		<link>http://programmerjoe.com/2010/03/18/obvious-idea-2-passive-facial-recognizer/</link>
		<comments>http://programmerjoe.com/2010/03/18/obvious-idea-2-passive-facial-recognizer/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 05:11:56 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Obvious Ideas]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=208</guid>
		<description><![CDATA[The Problem I am bad with faces. I mean really bad with faces. My brain just doesn&#8217;t seem to be very good at mapping what someone looks like with their name.  This often makes things difficult for me at networking events and conferences. The Solution A passive mobile application that scans the environment around the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>The Problem</strong></p>
<p>I am bad with faces. I mean really bad with faces. My brain just doesn&#8217;t seem to be very good at mapping what someone looks like with their name.  This often makes things difficult for me at networking events and conferences.</p>
<p><strong>The Solution</strong></p>
<p>A passive mobile application that scans the environment around the user for faces. When it detects a face that it recognizes the application speaks the person&#8217;s name to the user via their bluetooth earpiece. Ideally this solution would also involve a discrete camera that could operate without being obvious to the people it is operating on. The point is to serve as a passive aid to memory while not changing the behavior of the people you are interacting with.</p>
<p><strong>The Competition</strong></p>
<p>There are a couple concept applications out there along this line including <a href="http://www.readwriteweb.com/archives/recognizr_facial_recognition_coming_to_android_phones.php">Recognizr</a> and <a href="http://blog.face.com/2010/02/16/augmented-reality-gets-a-major-face-com-lift/">Comverse Social AR</a>. Both of these applications have the same problem, which is that you have to hold up your phone to take a photo of the person you want to identify, then wait for the result to come back.  That is intrusive enough that a simple &#8220;I&#8217;m sorry, remind me what your name is&#8230;&#8221; would be a better option.</p>
<p><strong>The Pieces</strong></p>
<ol>
<li>Facial recognition. There are many providers of facial detection and recognition APIs, so it should be possible to license this piece. Unfortunately most of the providers don&#8217;t seem to be very good at licensing their SDK to people. I get the idea that these are all very small companies that spun out of someone&#8217;s PhD research.
<ol>
<li><a href="http://www.pittpatt.com/products/">PittPatt</a> never replied to my email.</li>
<li><a href="http://luxand.com/facesdk/">Luxand</a> put me on their marketing email list, but never sent me an evaluation key.</li>
<li><a href="http://betaface.com/Technology.aspx">Betaface</a> actually gave me a chance to evaluate their SDK. It works quite well. I wasn&#8217;t a fan of their licensing terms, but you might have different needs than I did.</li>
<li><a href="http://ayonix.com/en/products/ayofa/35-software/94-face-recognition-sdk.html">Ayonix</a> got back to me right away but never provided the promised evaluation link.</li>
<li>I don&#8217;t remember if I contacted <a href="http://www.seeingmachines.com/product/faceapi/licensing/">Seeing Machines</a> or not.</li>
</ol>
</li>
<li>Bluetooth camera &#8211; I bought an <a href="http://www.genie-gadgets.com/oppoblca.html">OptiEye</a>. It works pretty well. If you ask them nicely they will send you the protocol documentation. The specs claim a four hour battery life, which is plenty for most networking events.</li>
<li>Text to speech &#8211; I haven&#8217;t done any research here.  Many applications do it, though, so I would imagine SDKs are available.  If nothing else the user could record the names and the software could just play back the recordings.</li>
<li>Mobile computer &#8211; Both Android and iPhone allow communication over <a href="http://www.bluetooth.com/English/Technology/Works/Pages/RFCOMM_1.aspx">RFCOMM</a>, which is what the OptiEye uses. Existing devices are also too weak in the CPU department to do much visual processing on the phone, but they could stream video or individual frames up to a server for further processing.</li>
</ol>
<p>What do you think?  Dream product?  Interesting project? Terrible idea?</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2010/03/18/obvious-idea-2-passive-facial-recognizer/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Obvious Idea #1: OpenStreetMap for AR Tracking Images</title>
		<link>http://programmerjoe.com/2010/03/13/obvious-idea-1-openstreetmap-for-images/</link>
		<comments>http://programmerjoe.com/2010/03/13/obvious-idea-1-openstreetmap-for-images/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 18:51:10 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Obvious Ideas]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=203</guid>
		<description><![CDATA[At TED 2010 Blaise Aguera y Arcas from Microsoft demoed live integration of video into the existing structure-from-motion dataset in Photosynth. Though his demo showed a video feed moving around a scene the same data could just as easily be turned around to find the precise position of the camera in real-time. That capability is a key [...]]]></description>
			<content:encoded><![CDATA[<p>At TED 2010 Blaise Aguera y Arcas from Microsoft <a href="http://www.ted.com/talks/blaise_aguera.html">demoed live integration of video</a> into the existing structure-from-motion dataset in Photosynth. Though his demo showed a video feed moving around a scene the same data could just as easily be turned around to find the precise position of the camera in real-time. That capability is a key part of building a head-mounted augmented reality system.</p>
<p>Two weeks later Google announced that they are incorporating <a href="http://google-latlong.blogspot.com/2009/02/explore-more-with-user-photos-in-street.html">user photos</a> into Google Street View. This requires essentially the same data as Photosynth. Google has the added advantage that they can combine it with the Street View <a href="http://www.educatingsilicon.com/2008/04/18/google-street-view-soon-in-3d/">images and LIDAR</a> data they are already collecting. Though they haven&#8217;t demonstrated real-time capability with this data they certainly have all the pieces they need to make this happen.</p>
<p>Access to the data required to perform pose recognition with cameras is a novelty at the moment, but if mobile augmented reality takes off in a big way it will become a key component of that system.  In my opinion this component is too important to be left in the hands of one company. A much more desirable situation would be to have an OpenStreetMap-type project to accumulate and curate a freely available dataset to provide structure from motion and pose recognition for use in mobile augmented reality and whatever other uses someone can dream up.</p>
<p>OpenStreetMap is a project that sprung up to provide access to data that was free from the <a href="http://wiki.openstreetmap.org/wiki/FAQ#Why_are_you_making_OpenStreetMap.3F">costs and restrictions</a> that come with commercial data. It uses a Creative Commons license to make the data free for use by anyone for <a href="http://creativecommons.org/licenses/by-sa/2.0/">most any purpose</a>. Although OpenStreetMap came about in response to the restrictions on commercial data sources, the same approach could be taken for 3D structure and image data even though commercial sources for that data do not yet exist. If OpenStreetMap had existed when car navigation systems became feasible in the late nineties it is likely that many commercial products could have been developed on open data at far lower cost and in much more variety.</p>
<p>All such a project needs is a small number of dedicated people to get it started. Download a copy of <a href="http://phototour.cs.washington.edu/bundler/">Bundler</a> (an open source structure from motion library based on the same research that spawned Photosynth) and seek out publicly available photograph libraries. Then talk a cloud computing provider into sponsoring the project by hosting the data and build things up from there. The project won&#8217;t have many users for a few years, but as the accuracy and coverage of the dataset grows the set of applications based on this open data will grow too. Somebody just has to get the ball rolling.</p>
<hr /><em>I have a bunch of ideas like this one rattling around in my head. Some of them could be products or businesses, and some are just cool projects. I have looked into them all to some degree but probably never start real work on them. I&#8217;m going to post them here in an attempt to spawn a discussion and encourage you to share your thoughts in the comments. Feel free to do whatever you like with these ideas.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2010/03/13/obvious-idea-1-openstreetmap-for-images/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>2010</title>
		<link>http://programmerjoe.com/2009/12/31/2010/</link>
		<comments>http://programmerjoe.com/2009/12/31/2010/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 01:24:45 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[Game Industry]]></category>

		<guid isPermaLink="false">http://programmerjoe.com/?p=197</guid>
		<description><![CDATA[This rounds out my trilogy of year end posts. Here is what I think will happen in the coming year. I would love to hear your thoughts on these predictions: Star Trek Online will be the only significant MMO launch in 2010. It will do well enough to make Atari and Cryptic plenty of money, [...]]]></description>
			<content:encoded><![CDATA[<p>This rounds out my trilogy of year end posts. Here is what I think will happen in the coming year. I would love to hear your thoughts on these predictions:</p>
<ol>
<li>Star Trek Online will be the only significant MMO launch in 2010. It will do well enough to make Atari and Cryptic plenty of money, but will not do nearly as well as World of Warcraft, so many people will consider it a failure. (Those people are dumb.)</li>
<li>At least three of the major unreleased MMO projects will be cancelled. I have a guess about which two are most likely, but I&#8217;ll keep that to myself.  Qualifying projects include:
<ul>
<li>Guild Wars 2</li>
<li>Whatever Carbine is working on</li>
<li>That console MMO Turbine hasn&#8217;t said much about</li>
<li>Whatever Trion is working on</li>
<li>The Sci-Fi channel tie-in MMO that Trion has <strong>said</strong> they&#8217;re working on</li>
<li>Whatever Zenimax is working on that may or may not be Fallout</li>
<li>Whatever 38 Studios is working on</li>
<li>The Agency</li>
<li>Whatever Gazillion&#8217;s Gargantuan studio is working on</li>
<li>Star Wars: The Old Republic</li>
<li>The second MMO that CCP is working on down in Atlanta where all those White Wolf people are.  Hmm. What could it be?</li>
<li>Whatever Red 5 is working on</li>
<li>DC Online</li>
<li>That other MMO I know NCSoft is working on that is completely under the radar</li>
<li>Whatever Slipgate Ironworks is working on</li>
<li>The second MMO Blizzard has in the works</li>
<li>APB</li>
<li>Jumpgate: Evolution</li>
</ul>
</li>
<li>Project Natal and the Playstation Motion Controller will both come out.  Natal will do fairly well. Both controllers will allow some new kinds of games, but we won&#8217;t see any compelling examples of those games until 2011.</li>
<li>Unemployment will peak and then start to fall.</li>
<li>The compass+GPS augmented reality products will begin to shift to general location-awareness and away from their Augmented Reality roots. They will de-emphasize magic lens and start to emphasize aggregation of nearby content.</li>
<li>No consumer-level see-through displays will come out in 2010. Significant progress toward them will be made, but nothing will be released.</li>
<li>Neither Google nor Apple will release any kind of AR-focused hardware</li>
<li>The use of &#8220;wave it in front of your webcam&#8221; type AR in advertising will peak with an AR-enhanced ad in the Superbowl.  The backlash will begin. By the end of the year the advertising world will have moved on.</li>
<li>Apple will release its tablet and a new iPhone (faster and more storage) but won&#8217;t release anything that is specifically an AR product.</li>
<li>Apple will address the pain caused by its app-store approval process, at least in part. I have no idea what their specific solution will be, but they aren&#8217;t going to let their developer community grow to hate them.</li>
<li>Android will continue to pick up steam. By the end of the year Android will boast 50,000 applications.</li>
<li>People will spend the entire year trying to find something really useful to do with Google Wave. They won&#8217;t succeed in 2010.</li>
<li>Google will make Wave interoperate with email. This will make it useful as an email client if nothing else.</li>
</ol>
<p>Ok, that&#8217;s the last of this kind of post for at least a year.  If only I could get back to posting regular stuff again. <img src='http://programmerjoe.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://programmerjoe.com/2009/12/31/2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

