Tag Archives: iPhone

Turn Linux into a remote AirPlay speaker

Some time ago Apple game out with the AirPlay feature (an upgraded AirTunes) which enables iOS devices and iTunes play music and videos on a remote device.

 

In our office we have a Linux box, a set of speakers and a few laptops sporting Mac and Windows. Tonight I set out with a goal to turn that Linux box into an AirPlay speaker so that each of us can play music from their laptop without having to reconnect the cables every time.

Airfoil

First off I stubled upon RougeAmoeba’s Airfoil, which is a $25 sofware piece that, enables half a dozen device classes to be hooked up as remote speakers to a Mac or Windows (yes, that too). And, better yet, instead of only enabling iTunes to play, it can reroute all sound to that remote speaker. Though, it’s Linux speaker software is free download, it still seems to require paid Airfoil to route audio, because bare iTunes couldn’t care less of the wannabe Linux speaker that should have appeared to the WiFi. As the price would have been multiplied by the number of laptops, it was unfortunately out of question.

Shairport

With a bit of googling around, I next found Shairport, which (if I got it correctly) is based on data found in a hacked and reverse engineered AirPort Express. ShairPort turns a random PC into a fake AirPlay speaker set. The software itself got installed relatively quickly after going through the short docs (perhaps because I had most of the dependencies like avahi etc already in place because of the Airfoil).

 

Also, for Airfoil, I had already opened firewall to Zeroconf/Bonjour and ports TCP:5000-5005 and UDP:6000-6005  which seemed to apply to Shairport too.

After starting up the daemon, all of our iTunes magically discovered the new remote speakers and allowed us to play music there with a simple mouse click. Even from Windows. And from iPhone. And, if wanted, all at the same time. Voila!

This is definitely much easier than messing with the wires all the time.

 

Rapid AppStore rank-up through twitter

The case study: Rivals

I decided to give away current version Rivals for free, until next major feature update. A day later when checking on the sales numbers, my jaw dropped to the floor. The number of downloaders had jumped up a 10 000%. Yes, you read that right – more than a 100 times up: Read more »

Building iPhone apps with Rake

Building and releasing iPhone apps and at the same time versioning them easily can be a bit tedious. Several posts (like this or this) show how to use agvtool for automated versioning. But for me this is still not automated enough.

Read more »

A Dream of Context Aware Devices

Watches as iPhone sidescreen (© iLounge.com)

Watches as iPhone sidescreen (© iLounge.com)

I have a dream. A dream of devices that somehow know what I want of them. A dream of devices that do not bother me with repetitive questions or reminders of the same event. A dream of devices that are Context Aware.

Read more »

iPhone SDK private API

Today I got my Rivals.app rejected from AppStore because it used private API calls. Fortunately nowadays Apple lists the calls in the reject message to make it easier to remove them. I was unfortunate to be using:

  • addTextFieldWithValue:label:
  • textFieldAtIndex:

For anybody wondering about their app prior to submitting to AppStore here is a collection of popular private APIs:
http://www.drobnik.com/touch/2009/11/forbidden-fruit-apple-apis/

iPhone AdHoc distribution

All the docs at Apple indicate that AdHoc provisioning is as simple as rebuilding your project with new distribution profile. But unfortunately it is not that simple. Read more »

Rivals.app to be released

Rivals screenshot

Rivals screenshot

I have completed the version 1.0 of the Rivals.app and uploaded it to the AppStore. Currently it is in state ‘In Review’ and I hope it to be released soon.

For more information head on to Rivals site.

Paid apps vs ad-supported apps

Below is a presentation by PinchMedia that analyzes ad-supported free apps compared to paid apps.

The main summarizing thoughts:
• Average app needs CPM > $8 to beat $0.99 app revenue
• Only give app away free if something in it screams “FREE”
• For paid app, release ad-supported free companion only when actual collected usage data suggests equal revenue. Read more »

iBrick 3G

Well.. not totally iBrick, but just God awfully slow, especially Messages and Settings apps. Googling showed that iPhone 3G pwners have had issues with slow app startup since 2.x times. Few of them blamed Cydia.app, others indicate that restoring a pwned 3.0 phone from 2.x backup is a way to troubles. I am leaning towards the latter. Read more »

UItableViewCell with old content

I had a UITableView that had relatively simple cells. So simple in fact that I didn’t want to bother with subclassing UITableViewCell to draw up content. The cell had two UILabels and one UIImageView.
The problem however derived from reusing the cell – when drawing transparent PNG images into that cell, older data was still present and visible in new cells. This meant that I had to somehow clear the cell from old content.
This is how it can be done. Add the following just before creating new content:

for (UIView *view in cell.contentView.subviews) {
 [view removeFromSuperview];
 }

This clear the contentView from old content and you can start adding new.

image © jeffk42