New icon for Ballet Index
Pretty happy with the new icon design for Ballet Index (and Ballet Lite). Thanks to Lindz.AD and 99Designs.
Permalink - Comments - Tags: Development,iPhone,Ballet Index
How accurate is the iPhone GPS?
I have written in the past about the inaccuracy of location data provided with "Significant Change" background location updates. The solution to this problem is simply to use Significant Change as a trigger (ignoring the data it gives you), then use CLLocationManager startUpdatingLocation to get the quality location data.
So how accurate are the updates that you get from this approach?
At goCatch we track the locations of thousands of Taxis driving all over the world. The data gives us some useful insight about how to measure the proximity of passengers and drivers, hopefully you will find it useful too.
For the 650,704 location updates I used in my tests, I found the average accuracy radius was 246m. 85.1% of updates had an accuracy of less than 100m. Indeed if you eliminate the wildly inaccurate values (>1km) the average accuracy radius is only 91m.
In this last chart you can see the spread of accuracy updates over the first km. I am guessing the outlying (>1km) values are for phones with no GPS and no nearby Wifi that are relying on the cell tower triangulation (same as Significant change) to get a location.
N.B. When I say "GPS" in the title I am actually talking about all the sources of location data that the iPhone passes to the app (GPS, Wifi and Cell proximity).
Permalink - Comments - Tags: Development,iPhone
Photoshop hex RGB to a UIColor
Adam (the awesome goCatch designer) and I got sick of converting from hex RGB colors to decimal UIColor initialisation params, so I wrote this script.
import sys
if (len(sys.argv) != 2):
print ("convert.py <hex color>")
sys.exit ()
color = sys.argv[1]
if (len (color) != 8):
print ("convert.py <8 char hex color>")
sys.exit ()
# get the two character chunks
red = color[:2]
green = color[2:4]
blue = color[4:6]
alpha = color[6:8]
decRed = int (red,16) / 255.0
decGreen = int (green,16) / 255.0
decBlue = int (blue,16) / 255.0
decAlpha = int (alpha,16) / 255.0
#iOS code
print ("[UIColor colorWithRed:%.4f green:%.4f blue:%.4f alpha:%.4f];" % (decRed, decGreen, decBlue, decAlpha))
#Android code
print ("private static final int COLOR = 0x"+alpha+red+green+blue);
Yep it also does an Android static final int. We love Android too ;)
Permalink - Comments - Tags: Development,Android,iPhone
Thanks for the fish
At the end of a nine years at Cognethos. Today, nine years at any company is a ridiculously long time. Though the company expanded and contracted over time, the core group of employees stayed the same. We worked through boom times, global financial crisis, uncertainty, wild speculation and fundamental disagreement, and somehow managed to treat each other with respect. I am proud of the work we produced and grateful for everything I learnt.
I don't need to wish this very talented group of people luck, as clearly they won't need it.
Permalink - Comments - Tags: Development,Misc
How I got more pages from my sitemap into the Google index
N.B. Disclaimer: For SEO types this might all seem very obvious, but I thought someone might find it interesting.
Wow! In July this year I tweeted that I was working on improving the number of URLs I had in the index:
Working on getting more urls in my sitemap into the index. Currently at 308 of 1804 links. Hoping todays changes will improve that ratio.
Just checked my Webmaster tools and discovered of the 1885 pages on my site today, 1790 are in the index. So what did I do?
You have to be careful with Monetization
I have an Amazon affiliate account and when I was building my World War Two timeline project it seemed like a good idea, in addition to linking to Wikipedia articles, to link to Amazon search results for the title of each data point (using my affiliate link of course).
For something like my entry on D-Day, this kinda worked. You got a link that looked something like this:
This makes sense right? I have to monetize this thing somehow and maybe people want to buy a book about this topic they have clicked on? It turns out very few people actually did that and in the end it was just adding a distracting link to my content.
The cartoon caricature of the Googlebot in my head saw those pages of affiliate links and frowned, so I removed them (This is the reason that in my head the Googlebot is an enthusiastic labrador puppy).
Since then I have built iPhone and Android apps to provide new ways of getting to my content and found that is a much more effective way of monetizing my work.
Spammy user profiles
Every now and then a medical supplies peddler or enthusiastic pornographer will find their way to my user signup page. Their profile descriptions are often entertaining, but perhaps something of a red flag for the G-rated Googlebot. To prevent their potentially nasty content from affecting my page rank, I use robots.txt to hide those pages until I have time to nuke them.
Disallow: /user.php
Titles, Titles, Titles
Thanks to the HTML suggestions section in the Webmaster tools I noticed that I had lots of duplicate titles for my content. Each historical data point page was using the generic "World War Two Timeline Project" title instead of a title that summarised the information on the page. It was a very simple change to update these pages to render a more appropriate title and suddenly the number of duplicates for my site dropped dramatically.
Static pages for map popups
This one is actually still a work in progress.
I have lots (1128) of Info Windows on my Patrick O'Brian Mapping Project containing content that should be searchable by Google but currently aren't.
My first attempt at solving this problem was to create a whole pile of static pages that were chained together (with next and previous links) in a giant linked list. I think the Googlebot started down my list of pages and decided it was getting mired in some pathological labyrinth and maybe it would come back another day.
I think that this is something that the Googlebot could probably figure out on its own (indexing the data from the Javascript map), so I am hoping that by the time I get around to revisting the issue, they will have worked it out. I am looking at you Chris Broadfoot ;)
Conclusions
So pretty simple and hopefully intuitive changes and it looks like they worked. I found a good way of getting into the mindset for this type of thing is to watch some of Matt Cutts' Webmaster Q&A videos. I found his even tempered, sensible explanations for the various things that Google does to improve search were enough to get me thinking about this stuff the right way.
Permalink - Comments - Tags: Development,Google
[First Page] [Prev] Showing page 6 of 24 pages [Next] [Last Page]