Archive for category iPhone

Can we Trust IP Geo-Localization Services ?

The next version of Maxi80 iPhone application will include a very simple user tracking capability : each time a user listens the web radio for more than n seconds, the application will ping one of my servers, allowing me to collect stats such as date and time, ip address, device model (iPhone, iPod Touch,…) and iOS version number.

Most of this information is also available to the web radio admin through the Shoutcast log files – but I don’t have access to these.

On the server side, I am calling an IP geo localization service to track countries from where people do listen to the radio.

At the time I am writing this post, the new version of the application was submitted to Apple for validation.  This means that only Apple and myself have a version at our disposal for testing, the application is not distributed to the public yet.

In other words, every ping request I am seeing on my server is either coming from me, either from Apple.  Despite this, I am seeing requests from many different countries : Belgium (these are mine), United States West Coast (this should be Apple), United States East Coast (maybe Apple has iPhone Apps validators working from there too).  But I also got requests from two weird locations : Pakistan (Islamabad) and Greece (Athens).

I tested these two IP addresses on many geo localization services and they all gave me the same result.

My conclusion : either Apple tests our iPhone applications from the three continents (America, Asia and Europe), either something is flawed with IP Geolocalization services.

Should you have a good knowledge of IP geo localization inner working – or – from Apple’s iPhone Apps validation process, do not hesitate to leave a comment 🙂

, , ,

No Comments

iPhone 3G Connection Tethering without Jailbreak

iPhone tethering consists of using your iPhone as a modem with your laptop or iPad to provide wireless connectivity through your 3G data connection.

Tethering is authorized by Apple as long as your carrier does authorize it as well.  And, most of the times, the providers do charge a special rate for tethered data traffic.

If you have a subscription to an unsupported carrier, you’re locked.  Other mobile phone systems have more open options.

To work around this limitation imposed by Apple and the carriers, the most common solution is to Jailbreak the iPhone, allowing to install non Apple approved applications through Cydia.

I don’t like to jailbreak my phone.  It is a cat and mouse game, each time Apple does release a new version, the jailbreak is broken and we have to wait for a new jailbreak solution.

Although it does exist some tethering without jailbreak solutions, I never found one as clever and obvious as iProxy.

First a disclaimer : iProxy does require Apple developer tools and a developer profile (or to know someone that has one).  It is not a solution for every user and certainly not for my grand’ma !

The ideas behind iProxy are so simple, I am jealous.  I wish I had these ideas myself.

First, the application is distributed as source code only.  It is an XCode project that you must compile and install on your phone.  Installing the binary on your (not jailbroked) phone requires to subscribe to Apple’s developer program.

This allows to circumvent Apple’s review process required to publish application on the App Store.

Secondly, iProxy is not a tethering solution, it is “just” a generic SOCKS v5 proxy, allowing to relay traffic between SOCKS clients (your laptop or iPad) and the Internet.

iProxy developers did not write the SOCK code themselves, they smartly reuse the code of SRelay, an open source, UNIX-based, generic SOCKS proxy (iOS is a UNIX OS, remember !)

They even include a small embedded and open-source HTTP server, to be able to provide proxy auto configuration files (PAC files) over HTTP.

Once compiled and installed on your iPhone :

  • On your laptop, create a private wifi network
  • assign a static IP address on your laptop
  • define a SOCKS proxy with the iPhone’s IP Address (see below) and the port 8888
  • On your iPhone, join the wifi network
  • Assign a static IP address in the same range as the laptop
  • start iProxy application

Should you try this with an iPad, you will realize there is no possibility to define a SOCKS proxy on the iPad.  This is where the Proxy Auto Configuration file (PAC file) and embedded HTTP server comes at hand.  In your iPad Network Settings, define the following line as “Auto Proxy Configuration”

http://<your iphone IP address>:8080

Mobile Safari will read this file.  It contains a simple JavaScript function that defines the SOCKS proxy with iPhone’s IP address and port number.

This is it.  This solution is not too complicate to setup and use (for technical users), it makes a very clever use of open source and it is pretty efficient !

, , , ,


Maxi80 App for iPhone – new release

We just released the updated version of Maxi80 Application for iPhone. This new version is available for iOS 4 phones only, you’ll have to update your phone software to find and install the update.

This new version brings the following new features :

  • You can now listen to while the application is in background.  Listen to Maxi80 while surfing the web, reading emails or your tweets on Twitter
  • You can now listen to Maxi80 in any position, landscape or portrait.  The application will adapt its screen to the way you’er holding your phone
  • You will enjoy high resolution graphics on iPhone 4 devices
  • We added an iAd banner to generate some revenues for the radio

Do not hesitate – Update today !

, ,

No Comments

iPhone applications development

Since a couple of months, I am exploring the world of iPhone applications development.  After spending some time to discover the development framework and tools, I am quite impressed by the productivity we can reach.  Cocoa is an extremely powerful framework.

Of course, I was not starting from scratch, I already I some experience with Cocoa through Mac OS X applications development (see here and here for examples)

As of today I published two applications on the App Store.

The first one is very basic and was my learning test bed.  Tip Calculator allows you to quickly add tip and split your restaurant bills.  It gives you geo localized information about local tipping habits.

As I truly believe in knowledge and information sharing, the source code is available on

You can download and install it for free from the App Store.

The second application I developed is a web radio player.  It allows to listen to, an french based, eighties web radio.

Amongst other features, it allows to view the name of the current song as well as its cover.  It displays the name of the current show and on-air DJ’s.  It allows to send emails to the web radio stations or the DJ.

Source code is also available on

You can download and install it from the App Store.

I do not intent to modify the Tip Calculator anymore, however a couple of points are on my todo list regarding the Maxi80 application, namely :

  • Integrate the newly announced iAd service to get some revenue for the web radio
  • Port the application to the Android platform, more about this later.

, ,

No Comments