Google maps GeoJSON editor

The new maps app in iOS 6 opens up for third party applications to provide routing directions. It’s a great way to expose your travel-app to potential new (and existing) users. It will show up in the maps app even if users doesn’t already have it installed.

How does it work?

If you are looking to implement directions into your app, check out the documentation from Apple. It’s actually really simple and straight forward.

What’s interesting is how and when your app will be shown as an alternative in the maps app. This is handled by app developers providing a separate geographic coverage file (coordinate regions) that you upload to iTunes Connect when updating your app. Apple will then match the users routing request with your geographic coverage to see if you can indeed provide relevant routing directions.

Creating a geographic coverage file – GeoJSON file

The format Apple has chosen for the geographic coverage file is GeoJSON. I was surprised to find out that there are very few tools as of right now that aid on creating these files or convert KML etc to GeoJSON. I decided to create something simple based on the Google Maps API, it can load GeoJSON into editable polygons and it dumps GeoJSON when new polygons are drawn or edited. Visit the link below to try it out!

Handelsbanken API

Ok, this might be even more interesting for you guys. Handelsbanken is one of Swedens largest banks and their API is now public as well. Congratulations to them for being the second Swedish bank with a published API. Who will follow in their footsteps?

You find the documentation here.


Again, I want to make it clear that I provide information about an API that exist as of right now and that has never been publicly announced. I can not guarantee that everything is correct or that things will not changed. I have only documented what I’ve found out today and I have no affiliation or association with Handelsbanken or anyone working there.

Länsförsäkringar Bank – API hack & documentation

It’s been a year since I released the first and only swedish multi-bank app for iPhone. It’s been pretty successful with some ~45.000 downloads and it’s being downloaded at a rate of 80-100 times per day. When I built the first version I used (and still use today) scraping techniques to authenticate and fetch information from banks. My hope was that it would be more work for banks to try to keep me out by making changes than it was for me updating the app. Looking back it holds true or banks just don’t care about me and my app. I’ve only been in contact with one bank and they actually like my app. Other banks have publicly commented in media on my app saying that using it is comparable to “leaving your home with the keys in the door”.  I do think people should be cautious with giving out personal information, but it’s impossible for me to steal money from my users. In fact, I don’t spy on them in any way, and I think that 1 year on the appstore demonstrates this. If I was up to no good by now someone would have investigated and found out.

But this post is about bank API’s and Länsförsäkringar bank in particular. Why are banks not providing real public API’s and let users access their own data? I strongly believe that clever APIs would spawn more smart services that help people get a grip on what they are spending their money on and why they need to stop buying things on credit. Because no bank is currently publicly publishing API’s I decided it’s time to publish some private API’s.
Congratulations Länsförsäkringar bank, you are the FIRST swedish bank with a public API! »

Yahoo Finance API for iOS

YahooFinance is a framework for accessing Yahoo! Finance information in your iOS application. The framework is a cornerstone in my latest project that hopefully will be released on App Store. Here’s a demonstration of what you can do with this framework:


  • Stock symbol search. Free-text search for stocks and find symbols for global stock exchanges.
  • Stock quote details. Yahoo! provide a ton of information for each stock. Price, volume etc.
  • Currency conversion for all major world currencies.

Code and examples ahead »

Why your video refuse to play on iPad/iPhone

Having problems getting your video to play on your iOS device even tough it plays back perfectly in your browser? First of all, make sure your video is in a supported format (H.264+AAC+MP4). Videos can easily be encoded using an application such as Handbreak. Make sure your HTML code is correct. Here’s a great resource on how to do video in HTML5.

Next, iOS devices only support video streaming, it will not download the entire video an play it. If your video is not playing on your iOS device there’s a good chance that the web server you are using doesn’t support byte-ranges. Byte-ranges requests are used to stream content over http and basically means that the client will ask the server for a range of bytes instead of an entire file. You find the specification for the byte-ranges header field in this RFC. If your web server doesn’t support this you will get a black box on your iOS device where the movie should otherwise appear.

Most production web servers does support byte-ranges but I ran into this problem when using a simple Ruby web server (Thin) for development. The solution was to use Thin together with Rack, which does support byte-ranges if you pull the code from GitHub and compile yourself. As of right now the Rack gem is lacking byte-ranges support.

This is also likely to happen if you have some kind of custom file handler in your web application. For example, IIS support byte-ranges, but if you are running SharePoint and want to stream a video from a document library, you can’t. SharePoint doesn’t support byte-ranges unless you enable disk caching for blobs. If you have a file handler in your web application you’re going to need to add byte-ranges support yourself. Have a look at the Rack source for byte-ranges for an example of how you support it.

Fetching App Store sales statistics from iTunes Connect into MySQL using AppDailySales

It’s always interesting to see how well (or poorly) your app is performing in App Store and iTunes Connect has since the latest update provided much nicer interface to track this with graphs. The iTC Mobile app also provide the same graphs/information on the go. However, iTunes Connect falls short because daily statistics are only available for  14 days, and weekly statistics doesn’t stretch further than 13 weeks. Apple has a ton of apps (400.000+) on the App Store and downloads has already passed the one billion mark, I guess they just find it too expensive to store (or at least provide access) to that amount of data. But why o why can’t they just provide an API where we could easily download and store the statistics ourselves then? My guess is that they have an API for the iTC Mobile app that does this already!

AppDailySales to the rescue!

AppDailySales is a great open source python project that with very little effort logs in and downloads the statistics files from iTunes Connect for you. For the statistics to be really useful in my opinion you want them imported to some kind of database and if you’re a company focused on selling apps you might also want the statistics in some sort of OLAP-cube.

Loading statistics into MySQL

Keep reading to find out how »

Facebook Connect – Including static maps in wall posts

Facebook wants us to connect, but preferably without sharing mapsI’ve been playing around with Facebook Connect for iOS and posting messages to the wall that include a static map. I started out by trying to use a URL to a static Google map. Problem: the map didn’t show up or was showing the wrong thing. I found some threads on Facebook forums etc of people experiencing the same thing. This is the reason maps don’t show up as expected.

When you include an image in a wall post Facebook use their own servers to fetch and cache that image. Google Maps has a request limit of 1000 requests per day per IP. Given the amount of posts made on Facebook that include a google map their servers will hit this daily request limit. It’s also not possible to pass the image data along with the wall post, otherwise the device would have 1000 shares with maps per day  and your app could share more or less an unlimited number of maps. Then let’s Bing? Or? »

Dude – Where’s my site?

I like Google. I use a whole bunch of their services like gmail, search, analytics, picasa, etc. But if you’re reading this post it’s very likely that you didn’t find it through Googles search engine. In fact, right now you can’t find anything on this blog on Google unless you’re searching for the exact URL of a post. Why you ask? I ask the same thing. Problem is, there’s noone to ask!

This is my personal blog and it’s 100% non-profit. I don’t do advertising but a few people has offered me money, usually because they e-mail me and I help them along with their projects, and that money goes straight to Kiva. My point is; I don’t really care about how many visitors this blog has.

Before Google decided to remove this blog from the SERP (Search Engine Result Page), you were about 16-20.000 unique visitors ending up my blog each month. Pretty decent if I may say so myself. The most popular posts are Core Data tutorial and forward geocoding api. Since january (I don’t know the exact date) Google excluded me from the SERP and I the statistics for January is 11.000 unique visitors. In november 2010 analytics show that Google provided 65% of the traffic. Now, for January 2011, Stackoverflow is referring most of my non-direct traffic. Because my blog is of a technical nature I do have quite a few relevant links from authorative sites like Stackoverflow and iphonesdk so I still perform rather well. People find content there and continue to my blog.

So what happened, why did Google remove me from the SERP? »