Wednesday, February 15, 2017

My Game of Pokemon GO - Stage IV.1: No More Trackers

Three candies were earned when a Pokemon was caught, one extra candy for transferring it, so four candies can be obtained per Grimer caught in wild.  To get a Muk, I would need to catch ten more Grimers, which was nearly mission impossible.  I was so close to complete the Pokedex at this point, I was determined.  Hope came when Niantic introduced the "buddy" feature into the game. I could then choose Grimer as my buddy, one candy earned per 3km walk.  Forty candies would take 120km!  Tough but at least it was a path forward.  By the time I walked about 80km and earn 27 candies, Niantic launched the Halloween event trying to attract players back to the game.  During that special week, walking distance was reduced to one Grimer candy per 0.75km, a sweet deal and the remaining candies were piece of cake.  My Grimer was finally ready to morph into a Muk!
Walking my Grimer buddy for over 81.8km. 


I was still missing the last three: Porygon, Snorlax and Lapras.  Tools had sharpened by that time, Twitter accounts started to report rare Pokemons.  We would just needed to be sitting at the beautiful beach of Coronado Island.  When Twitter feeds reported the precise location of Lapras, drove to it.  However, with only maximum 15min for a given spawn, I figured it was not very productive to do the hunting on my own, as I would barely have enough time after I drove across the island and after managed to win a parking spot from other hunters.  My friend and I decided to visit the island in two weeks, which would be mid-October, as we both had family business before that.  This decision turned out to be a huge mistake, one that I had to pay nearly $200 for.

A pleasant surprise came on a Sunday morning.  I happened to open up FastPokeMap and pure luck stroke me.  I saw a Snorlax one block away from my house with 4min left.  Still could not believe what I saw on the screen, I hurried out in my pajamas!  One down!  Porygon and Lapras, here I come – in just two weeks!  But things turned south quickly.

FastPokeMap got millions of usage per day.  Its database grew to the scale that requires NoSQL database to handle, the web traffic also required the latest Big Data Cloud infrastructure to support.  Spawn rules had been discovered through data mining, biomes patterns were explored.  The FastPokeMap movement certainly caught Niantic’ attention.  Bad news came in the morning of October 8th, 2016.  Niantic introduced more stringent encryption mechanism, where all existing programming interface became useless.  FastPokeMap was shutdown, all Twitter feeds sitting on top of these databases or relying on old interface were dysfunct and were never recovered.  Our plan for the final battle at Coronado Island was complete scraped, as it was pointless to roam on the island without Twitter feeds.  This was the start for a Pokemon dark age.

I wrote the following in that dark morning (hint: my friends were working on drug discovery, so I used related jargons):

"Pokemon hunting is like lead hunting.  In the early days, we could only use "nearby" feature to explore our neighborhood, which was like we shaked test tubes to read out the activities of each individual compounds.  Later Go Radar app provided us a 96-well little gadget, then came FaskPokeMap, which was a modern 1536-well ultra-high-throughput (uHTS) screening system, the rule of PoGo game was reshaped forever.  Several refinements occured afterwards, such as the use of Focus library.  Hunting Bulbasaur at the Hour Glass park was just like finding Gleevec from a Kinase library.  Use libraries of Known Drugs with high hit rates was like visiting hot spots, such as Del Mar, La Jolla and Coronado Island.  Not to mention Twitter feed, that was basically monitoring top journals such as Nature, Science and Cell.  Once a target was published in these journals, we race to win!  Now uHTS has gone, Nature Science Cell has been off the shelf, where is our next innovation?  Beginner players may still rely on Focus Libraries or Known-Drug Libraries, pleasant surprises could still occur once in a once.  However, for our advanced venture capitalists, where is our next Blockbuster opportunity?  Our technical department (hackers) is still fighting hard to crack the code and repair the tools we used to have, but this also presents a opportunity for brand-new ideas.  One possibility is to embrace open science and rely on crowd sourcing, such as use a human-driven GO Radar system.  Let us imagine a few thousands of us standing on the Coronado Island forming an array at 100-meter interval.  Each person is in charge of monitoring his 40-meter sightings radius.  Once a rare Pokemon is discovered, we tweet and disseminate the information immediately.  Forming a coalition is the key to the success of this open science model.  Since we have tasted the power of those modern technologies, we can no longer go back to pick up test tubes and hope to find a Lapras, a Porygon, or a Snorlax that way, nor should we unrealistically dream about obtaining a magic egg, which then hatches into what we desprately need.  These are not real options.  Let us take a break, rejuvenent, wait for the next technology revolution, maybe we will meet again in a total different PoGo battle field."

The original text was sent to my dear Pokemon friends in Chinese and I intended to keep that copy here:

"Pokémon hunting就如lead hunting。我们最早只有在neighborhood用nearby,有如手动地晃动试管读取每一个compound的信息。后来Go Radar给了我们96-well的小机器,FastPokeMap则是1536-well的uHTS,从此改写了游戏的规则。然后又出现了几种技术革新,比如用Focus library。去Hour Glass抓Bulbasaur就是在Kinase Library里找Gleevec。用Known-Drug Set犹如去德拉梅,拉赫亚,科岛这些Hit Rate极高的Library。当然还有follow Twitter feed,那就是跟踪Nature,Science,Cell,一旦别人有了发现,就比谁跑的快!现在HTS当了,NCS杂志下架了,下一个技术革命在哪呢?小盆友们当然还可以用Focus Library,Known-Drug Set,还可以找到惊喜,我们这些只看中Blockbuster的风投该何去何从?技术部门绞尽脑汁也许能修复那些曾有的工具。但这也是给新技术诞生提供了摇篮。一种猜想是embrace open science,用Crowd Sourcing,比如协同合作人肉狗雷达。想象在科岛,几千个我们站成间距100米的阵列,每人负责监视和第一时间Tweet半径内的发现。联盟是open science成功的关键。由奢入简,重新拾起试管去筛找Lapras, Porygon, Snorlax,或者幻想捡到一个magic power egg都不是选项。只有养精蓄锐,拭目以待,迎接下一个场革命,说不准我们会在一个新的战场上。"

My Game of Pokemon GO - Stage III: Nest Hunting

Although the program PokeVision was gone, developers realized Pokemon’s API could be used to create new generation Pokemon maps.  Among all the map programs, the best of the best is called FastPokeMap [see previous blog]. FastPokeMap allows one to click on a map and pretend to be anywhere, this way I could mouse click and mapped out all Pokemons even in places, where no player was physically on ground zero.  I started monitoring two shopping malls and other neighborhood hot spots within 8-min driving distance and my desktop was my "Map Room".  As Pokemon spawns only lasted 15 min at that time, I needed to response to spawns just like fireman would respond to 911 calls.

At this stage my play was extremely purposeful, as I had already hunted most not so rare ones in beach locations.  My only remaining goal was to complete the North American Pokedex, nothing else.  So I did not battle gyms, I did not hatch eggs, I only caught enough Pokemon to gain level twenty in order to get Ultra balls, then pretty much only caught the Pokemons I needed, i.e., either it had to be a new species, or the ones I could exchange for evolution candies to eventually gain new species.  This was why my trainer level is still far behind my friends till this day, as I was not actively gaining XP points (I finally reached level 30 before my seven-month mark onFeb 12, 2017, still behind my friends) .

As my only goal was to collect new Pokemons, I did not battle for the first four months. My first Gym standing was only till Nov 25, 2016 at Costco.

There were certainly pleasant surprises during this period.  I hatched a Tengela from a 5km egg the moment I got home one afternoon.  I discovered three hot spots within 100 meters away from home that spawned rare Pokemons at exactly the same minute every hour, which was how I got my second Grimer.  One night I saw a humongous silhouette in the sightings, while driving back from Del Mar beach.  I pulled up to the side and used FastPokeMap to locate my first Dragonite!
Dragonite (center) encountered by super good luck on Sep 16, 2016.


Rare but evolvable Pokemons can be secured through hard work, such as Gyarados could be evolved from the common Magikarps.  Even though it requires hunting 100 Magikarps, very time consuming but nevertheless manageable!  However, Venusaur, Charizard, Vileplume, Victreebel, Gengar and Muk were the toughest, as their ancestor forms were already rare.  At that time I already started following Silph Road on Reddit and some local Pokemon Facebook groups.  Through crowd sourcing, I learnt there were something called "nests", where rare Pokemons spawned at the rate of one per 10-20 minutes or so, much higher than background occurrence.  Nest hunting was probably one of the most memorable game period.  I visited many small parks, places I would never visit otherwise.  Gastly were harvested at the Del Mar Fairground Parking lot at night; Bulbasaur at Eucalyptus Park in Chula Vista; Bellsprout at Hilltop Community Park in Rancho Penasquitos; Charmander at Martin Luther King Jr Memorial Park in Oceanside, and Oddish at the beautiful Liberty Station NTC Park.

Screenshots taken at the peak of spawn in nests.  Each hunt lasted about two hours.

I got three Grimers with ten candies, I still needed fifty candies to produce a Muk.  Grimers were super rare and nearly only sporadically spawned in Coronado Island.  That was a problem.

Bonus Material

Nests migrate, i.e., every few weeks, a Jynx nest may turn into Jigglypuff nest, then into a Nidorino nest, etc.  The trainer community start their crowd source efforts and maintain a Nest Atlas [1]. However, the atlas is not well maintained, probably because beginners do not know about nests and advanced trainers do not care about nests.  Really rares do not have a nest.

Reference
  1. https://thesilphroad.com/atlas


My Game of Pokemon GO - Stage II: Location, Location, Location

One day my colleague at work mentioned how La Jolla Cove was full of PokeStops raining Sakura petals at night, I realized we did not have to go to Canada to get a Horsea after all.  How hard could it be to access beach, which was only three miles away?!  Fun started at Del Mar Powerhouse Park near 14th street - Seel, Magnemite, Slowpoke, Poliwag, Shellder, Voltorb, even rarer ones such as Gastly, Cloyster and Haunter surprised me from time to time.  Some after-dinner trips to La Jolla Cove added Seaking, Onix, Tentacruel and Aerodactyl.

Then I read Niantic shut down a tracker program called PokeVision.  Holly cow! I did not know there had been a tracker, until its death toll made the headline.  PokeVision was a real-time Pokemon map, which offered its users a “Pokemon GPS”!  Too late for the PokeVision party, lesson learned, I started monitor Pokemon online communities.  Homework is unavoidable if you want to excel in this game.

My research soon pointed to an iPhone app called GO Radar.  Players using rooted Android devices were collecting sightings from their Pokemon GO apps and sharing the data on the GO Radar server.  GO Radar app allowed me to see precisely where nearby Pokemons were, how much time was left for the catch, furthermore, it allowed me to see where rare Pokemons were clustered in San Diego – sweetest spots in San Diego include downtown, Coronado Island and Oceanside Pier.  I could clearly see what later known as nests, e.g., Seaport Village was a Drowzee nest, and Coronado Ferry Landing was a Voltorb and Magnemite nest at the time.

I finally took my family to Coronado Island, a sacred pogo playground known as “the quad”, where maybe a hundred players camped on the lawn in the center of the Orange Avenue surrounded by four Pokestops lighted with lures all night long [1].  I remember that night as the night I hunted our first Grimer, however, history remembers that night as August 20, 2016, the night Chinese Women’s Volleyball team won its hard-earned gold medal in Rio de Janeiro.  In another lucky Sunday morning, I got a Blastoise, a Hypno and several Jynx (a nest) under the Coronado Bridge within an hour.  My Pokedex exploded in the second month.  Location, Location, Location!  This is what this game is mostly about!

The "quad" at Coronado (August 20, 2016)

This is why it is known as the "quad".

With GO Radar, I caught my first Grimer that night.

What was the most exciting moments in the game? Whenever I saw a silhouette pop up in the sightings, indicating a new species was nearby.  My adrenaline shot to the roof, when that happened. This screen shot was taken in the lucky Sunday morning under the Coronado bridge.  The Blastoise, embossed in red, was then located by FastPokeMap.

Technical Excursion – Early Days of Pokemon Tracker

Google map divides the surface of the earth into cells using a library called S2 [2].  Cells have 30 levels, where the most granular level 30 represents an area as small as 0.75 cm2!  Pokemon GO uses level 15 cells, which corresponds to a parallelogram of roughly 200 meters in dimension.  The parallelogram ABCD in the screenshot below, taken during my Gastly hunt at the Del Mar Fairground Parking lot, shows what an example level-15 cell looks like.  The reason the cell shape is not a square is because the spherical earth surface is projected onto six squares of a cube surface, which caused skewness for locations other than equator.  Parallelograms are tiled all over the map, ABCD is just one example.

Now imagine a player stands at the pin O, all Pokemons spawned within 40 meters (blue circle) can be spotted on the app screen and are catchable.  Pokemons within 120 meters (red shaded circle) showed up as nearby (see the bar at the very top of the screenshot with the first Gastly circled in purple) without knowing their exact locations.  The player is now supposed to move around and hunt for the first Gastly within the red circle, i.e., you drag the blue circle using your body to uncover a hidden target.  As a nearby Pokemon could be anywhere within the red circle and each Pokemon spawn only lasted 15min, the success rate of locating a nearby Pokemon was not impressive.

Early versions of trackers took advantage of the Cell identifier associated with a nearby Pokemon (Cell ID data was provided via programming interface) and let us know within which parallelogram Cell we should be hunting, this significantly reduced the guess work, as we now know the monster is within the purple embossed area (common area between ABCD and the red circle)!  Although several click-to-scan operations were still required within this region to move the blue circles until the target was located, it was already a giant step forward.  Later versions of trackers scanned a number of blue circles simultaneously on behalf of the player, therefore was able to expose every single Pokemon within the red circle under one click!  This led to the enormously popular site call FastPokeMap.  Before FastPokeMap, some players had to use GPS-spoofing devices to fake their locations into Pokemon-dense regions, such as the Central Park at New York City, some even virtually travel to other continents to catch regional-exclusive rare ones.  Ninatic gradually tightened up the holes and banned such accounts.  During that campaign, Niantic once made a mistake and ban a whole country from playing Pokemon GO for one full day [3].

FastPokeMap was revolutionary as it created more than a million bot trainer accounts and used them to scan on behalf of players at its server side, therefore, it was 100% safe for players to use FastPokeMap with no association to their real accounts.  FastPokeMap was also a crowd-sourcing service, its scan results triggered by one user were cached on the server for all users to view.  Popular spots that had many players naturally had denser Pokemon Map and therefore attracted even more players.  The FastPokeMap screenshot below shows how insanely busy Manhattan was.  By late September, FastPokeMap has reached 10 million daily page views and 3 million unique users per day [4], thanking to all the big data and cloud infrastructure used to support such a massive operation.
Manhattan under FastPokeMap!


Reference
  1. http://www.sandiegoreader.com/news/2016/aug/25/stringers-pokemon-goes-coronado-and-stays-there/#
  2. http://blog.christianperone.com/2015/08/googles-s2-geometry-on-the-sphere-cells-and-hilbert-curve/
  3. http://www.geek.com/tech/one-pokemon-go-player-got-all-of-belgium-banned-1667630/
  4. https://pokemongohub.net/fastpokemap-reaches-10-million-daily-views


Sunday, February 12, 2017

My Game of Pokemon GO - Stage I: Beginner

Pokemon GO was unquestionable THE game of the year 2016.  My trainer membership started on July 15, 2016 – the day two local players fell off the cliff while playing the game [1].  As a computer scientist, I was curious to understand this monumental moment; it was the first time a viable business model was found for augmented reality technology.  Under the surface of this seemingly childish feast, something must had gone terribly right!  Over the course of the next few months, I witnessed how mobile network, big data infrastructure, crowd sourcing and social media worked together creating a totally new life-changing experience.

My journal can be summarized into six stages in the schematic drawing below.  The Y-axis is the approximate number of entries in my Pokedex (i.e., the number of unique Pokemon species I caught, not to the scale) and the X-axis is the approximate months into the game.  This blog series is dedicated to my own memory of the game, roughly one blog per stage.



Stage One: Beginner - Opening the Box of Chocolate

The box was opened with my first catch of a Squirtle after work, which was called a “starter” in the game. The first month was definitely a honeymoon, as new Pokemons were caught nearly every day.  One day I drove my daughter home along the Torrey Pines Beach, she spot and caught eight new Pokemons in that single trip!  We had no idea about the vast size of the Pokedex universe, every Pokemon caught was tattooed with novelty, be it a Venonat or a Psyduck.   To stock Poke balls, we mapped out a walking loop to a nearby shopping mall that covered six PokeStops, we felt so lucky to live in a neighborhood full of Pidgey and Rattata.  We were gaining levels quickly and got a taste of gym training at level five, then went on to level eight to secure razz berries.  Life had been peaceful, until I realized I was seriously behind other trainers.  A friend showed off a Horsea caught in her trip to Banff, while I had never spot a Horsea anywhere.  Other colleagues had Bellsprout, Ponyta, some even had Rapidash and Ninetales!  It was obvious there were Poke Galaxies beyond my planet.  Time for an expedition.

Bonus Materials

Three fun facts/theories about Pokemon
  • Why fans believe the cartoons of Venomoth and Butterfree were mistakenly swapped? Because Butterfree really look like Venonat [2]!  See for yourself [image from source]:
  • Do you know where the names Ekans and Arbok come from? Spell backward.
  • Do you know Meowth and Pickachu are enemies just like Cat (Tom) and Mouse (Jerry)?  Their indices in Pokedex are also opposite to each other, 52 vs 25!
  • How do I know these?  Because I watched “107 Pokemon Facts YOU Should Know!” [3]

How do I throw a Poke ball?

I only throw “straight” (not “curve”) and only aim for “great” (not “excellent”) hits.  Curve ball has a much lower chance of success, but only gives a 10-point bonus, therefore I shoot straight to maximize the hit rate.  An excellent hit does offer a 100-point bonus, but is much harder than a great hit (offers a 50-point bonus).  I have a trick to shot the ball really straight, not to the left or to the right, so I only need to control the distance the ball travels (see illustration below).  There are mostly two types of distances that one can build muscle memories upon for frequent encounters, a close one (requires a very very light throw) for things like Pidgey and Ratatta; a median throw for most others such as Ekans, Paras, Mankey, etc.  With some practice, you should able to achieve great hits maybe 70% of the time.

With your ring finger pressed against the right edge of the phone (red arrow), slide up-and-down the whole hand as a rigid body.
This make sure the index finger travels up-and-down in an absolute straight line.  With this techinque, you can shoot difficult targets such as Ponyta.

References
  1. http://www.cnn.com/2016/07/15/health/pokemon-go-players-fall-down-cliff/
  2. http://pokeconspiracy.wikia.com/wiki/Caterpie-Metapod-Venomoth%3F
  3. https://www.youtube.com/watch?v=YtnILw7IFas

Sunday, December 1, 2013

A Math Problem

Problem: use ten digits 0, 1, 2, ..., 9 to form a summation expression abc+def=xghi, where each letter represents one digit (an example solution is 876 + 429 = 1305). It is straightforward to figure out x=1, but the rest is still hard for adults. As a problem for third graders, it should really had some digits prefilled.

The following is a strategy for adults:

Let us consider the simplest case without carry:
(1) c+f=i,
(2) b+e=h,
(3) a+d=10+g.
Sum the three equations and obtain:
(4) a+b+c+d+e+f=10+g+h+i.
With a+b+c+d+e+f+g+h+i=0+2+3+4+5+6+7+8+9=44, we obtain
(5) g+h+i = 17.
Zero cannot be a or d (the first digit of a number cannot be zero); zero cannot be c, otherwise f=i ; similarly zero cannot be f, b or e. Zero cannot be i or h (no carry), therefore g=0. The only possible case for the set {g, h} is {8, 9} due the requirement in (5). At this point, it is not hard to find a solution, e.g., 752+346=1098.

Follow the similar strategy, one may consider another scenario with carry:
(6) c+f=10+i,
(7) b+e+1=10+h,
(8) a+d+1=10+g.
By summing them, we obtain
(9) g+h+i=8.
There are only two possibilities for the set {g, h, i}, i.e., either {0, 2, 6} or {0, 3, 5}. It is not hard to find a solution from here. There are 48 solutions in total (ignoring the trivial solutions by swapping abc and def). The following is a piece of Python code for all solutions:

#!/usr/bin/env python
def perm(n, i):
    if i == len(n) - 1:
        yield list(n)
    else:
        for j in range(i, len(n)):
            n[i], n[j] = n[j], n[i]
            for x in perm(n, i + 1):
                yield list(n)
            n[i], n[j] = n[j], n[i] # swap back, for the next loop

for x in perm([9,8,7,6,5,4,3,2,0], 0):
    if x[0]<5 or x[0]==0 or x[3]==0 or x[0]<x[3]:
        continue
    if x[0]*100+x[1]*10+x[2]+x[3]*100+x[4]*10+x[5]==1000+x[6]*100+x[7]*10+x[8]:
        print "%d + %d = %d" % (x[0]*100+x[1]*10+x[2], x[3]*100+x[4]*10+x[5], 1000+x[6]*100+x[7]*10+x[8])

Friday, July 20, 2012

Google Map Exploration

台湾的一位好友爱好于Google Map上探险,功夫不负有心人,他某日在(39o49'32.56"N, 97o32'37.10"E)坐标之处发现异象(好奇者可在谷歌地图上查找“39 49 32.56N 97 32 37.10E”)
首先是无数小正方形物体(红色框)排列在一条条直线上,似乎是城墙或营地。还有一些梅花状的(橙色框),似乎是帐篷的基座。地面上有很多间距约为2.8米的车轮碾痕。正方形阵列的规模极大,貌似外星人的手笔。此处虽是戈壁沙漠,附近则有历史上顶顶大名的玉门关。据称玉门关是西汉通往西域的交通门户之一,亦是汉长城最重要的关隘。“丝绸之路”的南路和北路皆必经此关。于是朋友和我都认定这是古建筑的遗址。玉门的大小网站对此地皆无描述,如此规模的古迹竟不为世人所知岂不冤枉? 我们于是恨不得有双飞翼,去那一圆儿时的考古梦想。

在好奇心的折磨之下,我搜索到一位活跃在一个玉门贴吧的版主。版主是个年仅二十的大学生,玉门土生土长,当前在外地上大学。百度短信后QQ联络,发送卫星图片,询问能否帮忙去实地探险拍照。版主想必暑期还在外地,次日告知此处地貌远非卫星上看到的那样一马平川。有山有河阻挡在探险之路上,并发来许多照片为证。于此同时我发现在“古迹”东面是中国石油的地盘,版主其实是油田的子弟(他网上简介中提到自己上的是油田的中学)。

在以后的交流中版主并不苟同那会是古迹,反而认为“玉门的海拔很高,在战略上没有必要攻取或者防守这么一个地方,利用价值太少。”“ 我想到的是既然这个地方离我们石油河很近,应当是我们前辈们当年为了挖石油而修的营地,所以才能看的这么清楚。”仔细想想,我也认同他的解释。那些车轮印若说是古代的战车留下的痕迹的确是绝无可能的。既然是现代车辆的压痕,有些车痕还穿过“梅花营地”,说明“古迹”的高度很低,而且驾车者对这些“古迹”应当是司空见惯。方型的物体我猜想可能是仅是探油的油塔的基座。于是这次网络探险也就在此不了了之。

今晚又百度了一些玉门的网站才知道这原来是铁人王进喜的故乡(还以为王是大庆油田的,惭愧)。玉门油田辉煌时有十三万人口,那么几百口排列整齐的油井基座就不足为奇了。可如今石油资源枯竭, 九万居民弃城外迁,城中弃楼遍地、几成空城[1]。看到版主的照片时我也注意到一些崖底的山洞,却没有想到那些洞穴会是石油工人最早居住的地方,许多工人的儿女都是在洞里出生!现代人们对资源的无度开采后无奈的背井离乡比古迹在岁月消磨下的消失更让人唏嘘不已。

[1] http://news.cn.yahoo.com/newspic/news/9154/

Sunday, February 5, 2012

Some thoughts on smart phone GPS

I had a car accident two weeks ago. My car was hit from behind and the driver later denied everything. He first claimed he was not involved in any accident on that day. I provided a few photos I took with my smart phone; including one on his car and another on his insurance card (here is a thumbnail of the driver copying my insurance information).

This motivated me to take a careful look at the meta data contained
on those photos. Besides the date and time, we got the exact location of the accident, thanks to the build-in GPS. The photo meta data contains a GPS section, which reads like (37o49’11”N, 122o28’43”W). By converting this into a decimal format, we get a coordinate “37.8197,-122.4786”, where longitude need to be changed into negative to reflect the western hemisphere. Google Map understands “37.8197,-122.4786” as a valid search string. Since the phone automatically saved a copy of the photos onto the cloud, there is a third-party source that validates the photos.

The episode did not end here, as the driver later claimed there was no trace of impact on his car, implying the damages on my car were prior to the accident. This certainly has been a quite frustrating experience, as the claim processor was not willing to apply her common sense and the burden of proof fell onto my own shoulder. I then found a plate mark left on my bumper. Applying some Photoshop contrast and edge enhancement tools, I can tell these are letter marks left from the top of his license plate frame. Although it is too hard to read the letters, the contour should provide enough traces to be mapped onto his plate. The claim now moves forward.

This raises a hypothetical question - how can one actually prove a photo was indeed taken at that location and on that date? That is how to prove the meta data has not been manually altered? This leads to an idea that the mobile cloud provider might consider a timestamping service as described on this Wikipedia entry [1]. Presumably when the cloud storage receives a document, it calculates a short hash key (a fingerprint string). Then it sends the hash to a timestamping
authority (TSA) and obtains a string of “signed timestamp and hash” to be stored together with the photo. Now the photo can be trusted by court. The court verification process goes like this: it first verifies the string containing both hash and timestamp was indeed generated by the TSA (by decoding it with the TSA’s public key), which means the hash existed at the said date and time. Since the hash generation algorithm works in such a way that it is nearly impossible to find another document that can be mapped to the exact hash, this proves that the original document indeed existed on the said date and time. This is basically the same process used in many digital lab notebooks systems I happen to be familiar with, and such a document with its hash-and-timestamp string will stand up in court.

There are many interesting applications of GPS on smart phones. Putting privacy aside for the sake of discussion, the GPS data produced by smart phones, if accessible by law-enforcement authorities, may well help identify the other drivers at that time and location, who might be valuable witnesses of the accident. Sure that will be more justifiable for a crime instead of this small accident. In addition, if you ever wonder how Google Map obtains traffic data for local streets, the data also comes from our smart phone GPS[2]!

[1] http://en.wikipedia.org/wiki/File:Trusted_timestamping.gif
[2] http://googleblog.blogspot.com/2009/08/bright-side-of-sitting-in-traffic.html