Apple treats all iPhone developers equally – like crap

Today Google released Google Latitude for the iPhone, something BlackBerry and Android users have been enjoying for quite some time.

One paragraph in particular jumped out at me, emphasis mine:

We worked closely with Apple to bring Latitude to the iPhone in a way Apple thought would be best for iPhone users. After we developed a Latitude application for the iPhone, Apple requested we release Latitude as a web application in order to avoid confusion with Maps on the iPhone, which uses Google to serve maps tiles.

So Google was working "closely" with Apple, built a native iPhone application1 for Latitude, and then Apple essentially rejected it and told them to build a web application. Isn't building an entire application only to have it wholly rejected one of the leading complaints about the nightmarish App Store approval process?

  1. I'd love to see a build of this leaked out so jailbreak users could run it [back]

The App Store is full of sex

Eucalyptus is $9.99 book reading app that was rejected by Apple because you could search for objectionable content.

I suspect that no-one at Apple knows how genuinely torturous the app store approval process is for developers personally after a rejection. When they hold the key to the only distribution pipe for something you’ve spent a lot of your time on – in my case a year – something you’re hoping could provide you with a livelihood – and polite email enquiries are not replied to – not even with an autoresponder, it is extremely frustrating. I don’t think I’ve ever felt as powerless in my life (and I’ve had to deal with US immigration authorities…).

I suspect quite a few people at Apple know what a nightmare the App Store approval process is, but I doubt a single one of them is in a position to do anything about it. Apple Inc. is no more likely to publicly acknowledge a problem than the Catholic church, and the App Store approval process is Apple's abortion is sure to be a sensitive topic.

When the basis of approval is subjective, you need talented, intelligent and rational people making decisions and passing jdugement. Good luck finding that combination in someone who is willing to earn $30k/year to run iPhone apps all day searching for boob pictures or profanity.

Objectionable Content

For your enjoyment, here are a few of the titillating terms that Apple objected to. I've no doubt that by posting this text my site will be masturbation fodder for teens everywhere.

  • Auparishtaka or mouth congress – Another way of saying fellatio, but I can see how the term mouth congress is totally hot.
  • Lingam – Penis. It's about time someone came up with a non-scientific way to refer to the male genitalia.
  • Yoni – Vaginia – definitely the most offensive 4-letter word you can use to describe one.

Fill in the Blanks

Sometimes it's what is left out that counts. See if you can guess what the missing words are.

Assets

I've removed three words from the following paragraph.

The qualities of good ______(1.1) are that they should be bright, well set, clean, entire, convex, soft, and ______(1.2) in appearance. ______(1.1) are of three kinds according to their size:

Small
Middling
Large

Large ______(1.1), which give grace to the ______(1.3), and attract the hearts of women from their appearance, are possessed by the Bengalees.

Good Qualities

5 words this time, have at it.

The qualities of good ______(2.1) are as follows: They should be equal, possessed of a pleasing brightness, capable of being ______(2.2), of proper proportions, ______(2.3), and with ______(2.4) ends.

The defects of ______(2.1) on the other hand are that they are blunt, protruding from the ______(2.5), rough, soft, large, and loosely set.

There you have it. Smut! Pornography! It's obvious that this needs to be kept out of the hands of young children, so they can safely peruse Google Images with their morality intact.
a

Read the rest of this entry »

Passive Mode FTP with an Airport Extreme (AEBS) or Time Capsule

Not a huge fan of Apple right now.  After a recent data loss I went out and picked up a Time Capsule for effortless, automatic backups of the Macs in my house.  The backup part works great, but as a router it's a piece of crap.  Every configuration change, even if it's just changing a forwarded port, requires the a restart. No Airport owner should ever joke about the restarts required by Windows ever again.

"Hey, I'd like to change my logging level!"

RESTART

"This base station needs a Contact and Location!"

RESTART

It's super convenient since all open connections are closed, disconnecting you from VPN, IM, SSH, etc.

It also made troubleshooting this a real joy. I'm using FileZilla for my FTP server on Windows, listening on the standard port, 21.  Since I'm using NAT I restricted the passive mode ports to a fixed range, eg. 56000-56050.  Now whenever a client connects to my FTP server using passive mode they'll be given a port between 56000 and 56050 for the transfer.

The server sets the passive mode ports, and the client, passively, uses them.  The FileZilla log showed that the correct ports were being used:

(xx.xx.xx.xx)> PASV
(xx.xx.xx.xx)> 227 Entering Passive Mode (xx,xx,xx,xx,218,215)
(xx.xx.xx.xx)> disconnected.

But on my client (in this case ncftp) I saw totally different ports:

Cmd: PASV
227: Entering Passive Mode (xx,xx,xx,xx,227,181)
Cmd: MLSD
Remote host has closed the connection.

Passive and Active mode requests send the command information in the same format – ip1,ip2,ip3,ip4,port1,port2 – where ip1-4 are four octets of an IPv4 IP address, and the port number is calculated using port = port1*256+port2.

In the example above the server is telling the client to use port 56023 (218*256+215), but the client is being told to use port 58293 (227*256+181). I fired up my trusty sniffer (Wireshark) to verify, and the packets leaving my computer contained the correct port (56023).

I set FileZilla up to listen on a random port, 1541 and tried connecting to the server on that port, and was only remotely surprised when it worked.

Obviously something, something expensive, white and overly simplified, was mucking with the requests and modifying the port numbers.

Another setting in FileZilla's Passive mode settings allowed it to use the external IP address (instead of the internal one) for the PASV commands. I'd enabled this, assuming a normal, non-intrusive SOHO router.

I set it back to "Default" and reconnected to the server from an external site – SUCCESS.

My next purchase is going to be a nice new DD-WRT compatible 802.11n router. Suggestions are welcome.

Recovering a corrupt iTunes DB on an iPhone

The past week has been a rough one for all of my technology products.  My MacBook Pro hard drive died, my tablet pc pen had a speck of crushed diamond or something equally hard that lead to a big gouge on the screen, half of my RAID mirror died on my development machine and some crappy software corrupted the iTunes database on my iPhone.

Word to the wise: as of January 1, 2009 there is no software available that can update the iTunes database on an iPhone or iPod Touch running firmware 2.x.  Once the new hash for signing the database is reverse engineered this will be possible again, but until then be careful.  I discovered this the hard way while trying to add some movies to my iPhone while my MBP was out of commission.

When you connect your iPhone after using one of the crappier utilities (quality apps tell you it's not possible) you'll be greeted with the following message:

iTunes cannot read the contents of the iPhone "XXX". Go to the Summary tab in iPhone preferences and click Restore to restore.

Restoring on a customized jailbroken iPhone is a bit of a pain; you need to reinstall all of your jailbroken apps, set your Winterboard theme, arrange all of your icons "just so", etc.  It takes me about an hour to get everything just the way I like it, and I've got most of the process scripted out now.

Your iTunes database is stored in /private/var/mobile/Media/iTunes_Control/iTunes and mine has the following files in it:

Extras.itdb
IC-Info.sidb
IC-Info.sidv
PhotosFolderAlbums
PhotosFolderName
PhotosFolderPrefs
Rentals.plist
Ringtones.plist
iPhotoAlbumPrefs
iTunesApplicationIDs
iTunesControl
iTunesDB
iTunesMovies
iTunesPrefs

The suspect file was iTunesDB.  My first thought was just to remove (rename) the iTunes directory and see what happened.  Instead of an error I was prompted to configure a new iPhone or restore from backup.  No go.  When I refreshed the directory listing I saw that iTunes had re-created the iTunes directory.

I removed everything inside of the newly created /private/var/mobile/Media/iTunes_Control/iTunes directory except iTunesDB and copied all of the files (except iTunesDB) from my backup directory, /private/var/mobile/Media/iTunes_Control/iTunes-bad.  Everything inside of the iTunes directory should be owned by user/group mobile/mobile and permissions set to 644.

chmod -R 644 /private/var/mobile/Media/iTunes_Control/iTunes
chown -R mobile:mobile /private/var/mobile/Media/iTunes_Control/iTunes

I plugged my iPhone in and iTunes happily recoginzed it, sans music.  Since it's a horrific music player (I love my touch wheel) I didn't care about this, my jailbreak configurationwas much more important.

You can download the virgin iTunesDB file here.


© 2007-2012, Corey Gilmore | Posts RSS Feed | Comments RSS Feed | Contact

 

The views expressed on these pages are mine alone and not those of any past or present employer. All information presented on this site was obtained lawfully and not through disclosure under the terms of an NDA.