Hamish Rickerby

Technology Consultant & iOS Developer based in Sydney, Australia

iPhone Camera Overlays + Iphonearkit

| Comments

Today I have been hacking away on the iphonearkit source available at github and have incorporated the ARGeoViewController as an overlay over a ImagePickerController with the camera as the source (which was introduced with iPhone OS 3.1).  Results below.

ARGeoViewController as the overlay on a ImagePickerController on iPhone

I want to tidy up some of the code before I check it back into my clone of the source, but this is a really good basis for some smart location and direction aware augmented reality apps on iPhone.  Wonder what the iphonearkit license is - it’s unclear…

— EDIT —

Bugger.  It appears that zac has implemented similar functionality to me already :-(  Bloody github and it’s slow (never!) updates to fork queues and network graphs.  Oh well, maybe I won’t bother tidying my code.

Augmented Reality - Hello World

| Comments

I’ve recently discovered augmented reality. After I saw my first “virtual business card” application I was hooked.  I’ve been doing a lot of reading and experimenting with software over the past 2 days, and have got ARToolkit working here.  Here are some shots of the obligitory “cube over marker” demo.  I would post a video, but my screen capture software and AR software = a really poor frame rate and substandard video :-(

Marker with no overlaid image

Blue cube over the Hiro marker

Next up, something more substantial.

No, I Don’t Agree

| Comments

Tough luck - the box is un-uncheckable.Screen shot 2009-09-17 at 18.13.53I guess it’s one way to make sure that people accept your terms & conditions - force them to.  One less click.

Kit Quiz: UK

| Comments

<shameless self promotion>

My 4th iPhone application was approved yesterday by Apple, and it launches in the iTunes store today. It’s called Kit Quiz: UK and is a UK team based football (soccer) shirt quiz game. It features over 130 shirts from UK football teams, and will have more added shortly.  There are 3 modes of gameplay, from the practise model “Friendly” to a time challenge “Blitz”.

It’s integrated with Twitter and Facebook so you can check out your friends scores and find out once and for all who can recognise the most football shirts.

Couple of screenshots below for anyone interested.  Download it now!

Kit Quiz: UK menu screen

Kit Quiz: UK - Blitz screen

</shameless self promotion>

Passenger (Ruby on Rails) + PHP on OSX

| Comments

I’ve spent the last hour or so trying various things out to get passenger and PHP to play nicely together on my mac under OS X (Leopard) and apache2.

The situation I was finding was that PHP apps would run, but only if you explicitly call the script (ie index.php) rather than just the directory. If you called the directory, passenger would take over and give me a rails routing error.

The issue was to do with the passenger vhosts configuration. On my machine I have an number of ruby on rails apps configured with the passenger preferences pane (creating vhost entries within /private/etc/apache2/passenger_pane_vhosts/. I have enabled user_dirs, so that the users of my machine’s pages (and other apps) are served from their ~username/Sites directory.

My users configuration info for apache is installed in /private/etc/apache2/users/, and the instructions to load the configuration from that directory is stored within /private/etc/apache2/extra/httpd-userdir.conf (content below).

1
2
3
4
5
6
7
8
9
10
11
12
13
# Settings for user home directories
#
# Required module: mod_userdir
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.  Note that you must also set
# the default access control for these directories, as in the example below.
#
UserDir Sites
#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

To get everything working together nicely, I merely wrapped this inside a vhosts configuration directive, and gave it a ServerName of localhost - so that this vhost would be the one that responds to requests for localhost, rather than some random passenger vhost assuming it was the boss of everything. New /private/etc/apache2/extra/httpd-userdir.conf below.

1
2
3
4
5
<VirtualHost *:80>
  ServerName localhost
  UserDir Sites
  Include /private/etc/apache2/users/*.conf
</VirtualHost>

Thanks to this, all of my rails apps are served under passenger, and I can have static HTML, PHP and camping apps (previously configured - nothing to do with the above) all served from within my ~username/Sites directory.

Hope this helps someone.

123456789

| Comments

Today in the UK the time hit 12:34:56 7/8/9. Not exciting for everyone I guess, but it won’t happen again for another 100 years.

123456789

Undefined Method Rewind and Rails 2.3.3

| Comments

Today I updated a project I’m working on from rails 2.2.something to 2.3.3. Then, I started getting the following wacky error.

undefined method `rewind' for #<TCPSocket:0x3631e58>

Turns out if you see this after a rails 2.3.3 update, you might just need a phusion passenger update (I was on passenger 2.1.3, apparently this error happens on passenger 2.1.2 too)

sudo gem update passenger sudo passenger-install-apache2-module

Put the lines recommended by the install script in your apache config file, restart apache and you’re good to go.

Hope this helps someone.

USSD Codes on iPhone

| Comments

makeuseof.com have recently posted about 11 cool iPhone keypad codes - these are special codes (known as USSD codes) that send messages via the signalling channel direct to the core of a mobile operators network. These codes are nothing new, they have been around for years and years. They are also not generally universal (there are some standard, but they provide relatively boring functionality). Different networks can enable different functionality on different codes.

The codes can do boring things like retrieve your divert status from the network, return your IMEI or perhaps ICCID, but they can also interact with specialised applications driven via USSD Gateways to return useful information and execute transactions. These are applications that are sent specific codes by an operators core network, perform some processing on the data received, and return a response. Things that are non-standard that are enabled by USSD Gateways are services such as USSD-based prepay balance retrieval, USSD-topup, or interactions with NGIN features to alter a network based service.

I looked into USSD codes on the iPhone a while back, not to be used by users typing them in, but more to be used by applications querying information from the network via them. The reason why I wanted to programatically access them? To look at what’s possible for network operators or enterprises to release as iPhone based network service management applications.

Sadly, Apple have disable the use of USSD codes from within the (legitimate) iPhone sandbox available to developers (via the open URL methods, passing in a tel://xxxxxx URL). This means that there won’t be any applications from your operators that will make it easy to retrieve and change network settings that can be released thru the app store - at least not until Apple change their mind about interactions with USSD codes. Which is a pity - there are lots of useful services that would be useful to expose simple interfaces for usage for to the operators end users. USSD is an efficient, fast way to configure the network, using capabilities that most operators already have.

Yahoo and Microsoft - Micro-hoo, or Bingy!

| Comments

The recent deal announced between Microsoft and Yahoo strikes me as odd.

I understand that they are looking to create a competitor to Google in both search and advertising, but the “price paid” seems very high - at least on the part of Yahoo.

Major terms of the deal:

  • Microsoft will be powering Yahoo search
  • Microsoft have licensed Yahoo’s search technology for 10(!) years
  • Microsoft will run paid search via their search engine
  • Yahoo will be providing the advertising sales force for their combined “paid search” capability
  • Each company will still maintain separate advertising sales forces for other advertising
  • They enter a revenue sharing agreement, but Microsoft guarantee Yahoo will get at least existing revenues for the next 18 months
  • Microsoft pay most of its traffic acquisition costs

So, boiling it down, it appears Yahoo are giving up their search engine technologies (for at least 10 years) in conjunction for (at least current) revenues to be paid by Microsoft for algorithmic search advertising.

Microsoft have to maintain a sales force to sell other advertising, so they aren’t saving costs there. They are still having to maintain search so they aren’t saving costs there. They are paying Yahoo for traffic acquisition, and revenue for algorithmic search advertising, so they are losing money there. Their benefit seems to be

  1. Acquisition of a license for Yahoo’s search technology - given they’ve just released their own shiny new engine, is this an asset or liability?
  2. Traffic - this is what Microsoft are in the deal for for. Traffic from Yahoo.

10 years is a long time. Search changes a lot in 10 years. Google was only just starting out 10 years ago. Altavista (at least where I was using the web) was top dog back then. I’d be interested to see if Yahoo are going to maintain their search technology, or just let it die off. Is this a sign that they no longer want to compete in search, but be a destination that pulls together other properties (harking back to their very early days I guess). I guess time will tell if Yahoo’s apparent specialisation strategy was a sensible or dumb move. Microsoft are banking on Bing becoming a google killer, or at least a serious competitor, in the long term. They also apparently believe that paid search results are the way of the future - that’s why they want the traffic.

iTunes Connect Now Has Keywords

| Comments

Apple have added an extra attribute to applications on iTunes store - keywords.

You can configure your keywords with the “Edit Information” link against the application. SendIt4.me (iTMS) has already been updated :-)

Be careful though. It appears you can only update your keywords ONCE per application update - so make sure you choose the right ones the first time around - otherwise you’ll have to go through the painful approvals process to get it corrected.

The keywords should help with searching for your application within the store. Fingers crossed.

— EDIT —

You can also only have up to 100 characters for the keywords. Don’t get caught out! If you submit with more than 100, it tells you too late - you’ll have to resubmit your app to fix it.