Under The BridgeUnder The Bridge

Musings
Tool: BuildCleaner

Here’s a handy little utility called BuildCleaner for, eponymously enough, cleaning up all those Xcode build folders that litter your drive:

I just wanted to let you know of a little utility app I’ve just posted, called BuildCleaner. As I explore example projects, open source frameworks, and test applications, I find that I usually have a lot of build folders cluttering my hard drive. When you combine that with backup services like Time Machine, Mozy, or DropBox, you can waste a lot of your bandwidth uploading build folders.

To help with this, I’ve created BuildCleaner. It’s a little menubar application that scans your hard drive every few minutes for build folders and deletes them if they haven’t been modified recently (you can change the cutoff interval in the settings window). You can also tell it to ignore the build folders of specific projects, such as the humongous project you’re following that takes ages to compile, but you only crack it open every couple of days…

Handy, indeed. And it’s been open sourced on github for your tweaking pleasure as well!

h/t: cocoa-dev!

UI Design for Artists

[EDIT: Discontinued.]

You getting a bit tired of explaining over and over to artists the specifications for what iPhone applications need for artwork and pointing them at helper files and goodies? Yeah, us too. But these great people actually went to the trouble of collecting info to get past all the common artist questions in one place:

iPhone Guidelines And Resources For Artists

Covers device specs, icon specs for app and tab bar, fonts, and layout helpers, with links to various helpful resources overlapping a good bit with the ones we’d previous mentioned in the links above. Excellent to have it all in one place to send a link to for people who’d rather ask you than use Google!

Tools: Simulator Helpers

And it was just a little while ago that we brought to your attention the first Simulator helper for sending accelerometer data from an actual device that we’d run across — and all of a sudden, why, there’s a veritable plethora of them out there! Okay, three, but still.

The commercial offering is iSimulate, that does not only accelerometer but touches and GPS and pretty much everything, with a real website with an SDK and documentation and all that.

And if that’s too rich for your blood, there’s a free server/SDK bundle called SimRemote to check out as well, client expected to be on the App Store soon.

Must admit we’re still inclined to use the accelerometer-simulator library we originally brought to your attention, as it’s open source and all and we like the option to muck with things … but hey, if you want the snaz, or support, always good to have options!

h/t: MobileOrchard!

UPDATE:

If you stumbled across this from a search engine … check out our followup iSimulate review!

Anime Clock

W00t! Another Trollwerks project finally wound its way through the approval labyrinth to live on the App Store for your buying pleasure — “Anime Clock”!

AnimeClock.png

Why yes, as a matter of fact this is indeed another project for the same people as Selected Art of GARVGAPHX. How did you ever guess? But hey, if you want a desktop calendar on your iPhone, you definitely want one with cute anime girls!

Ah, yes. Between the Japanese art contingent and the Poses series, we do seem to be developing a theme to the Trollwerks oeuvre, don’t we? Funny how these things work out. Especially with these — at least with the Poses series we saw the source print book in advance; with these we did the applications with no idea whatsoever what art would end up in the release version. Funny how these things work out. Oddly enough, actually pretty consistent with the NON-programming troll world as well, but that’s another set of stories altogether…

[POST-MORTEM: Now withdrawn from store…]

Xcode predefined macros

Here’s a couple tips for finding what macros are defined/available in Xcode that showed up on xcode-users for the question

Hi, I’m looking for information on Xcode or the preprocessor that would indicate whether or not my code is being compiled for a non Mac GNU target or Mac OS X or iPhone OS…

You might have known this answer, how to print out a list of gcc predefined macros from the command line:

gcc -E -dM -x c /dev/null

But we’ll just bet you didn’t know how to extract them for a particular file in compilation context!

The easier way to do this (and get more precise, per-target-per-configuration results from Xcode) is to select a source file, Get Info, click the Build tab, add -dM to it, then Preprocess that source file.

You know, there’s been times when porting particularly convoluted befuddlements of allegedly cross-platform libraries that having known that tip would have saved us literally days of flailing around…

Library: Satisfaction Remote Component

Here’s a service we hadn’t heard of before which could be of use to your iPhone programming — GetSatisfaction.com, which “provides customer communities for products and organizations”. Basically, it looks like a free way to set up a support/feedback forum. Or, as they put it,

How are companies using Get Satisfaction?

  • As a primary support channel
  • As a fully branded, standalone community
  • As the community portion of a multi-faceted strategy
  • As a gateway to product innovation and ideation
  • As Social CRM “front door” to welcome customers

Aside from that anyone who uses the word “ideation” without overt irony should be flayed and their wounds salted for overt pretentiousness, that does look possibly interesting yes? And there’s a library, satisfactionremotecomponent up on Google Code, which lets you embed support for it within your application! That could be a more substantive method of support than an ’email us’ button, indeed. Not that we’ve actually got around to even that so far, but hey, best of intentions here.

In the meantime, if you’d like to see it in action in an iPhone app try out Locavore a locally grown food finder — actually, even if you wouldn’t, if you’re in the U.S. take a look at Locavore anyways, it seems to be a pretty decent guide to finding fresh produce — or if you’re really interested in the GetSatisfaction.com community, the above library is from the Satisfaction Remote application which lets you interact with the collective GetSatisfaction.com oeuvre off your phone!

h/t: iPhoneKicks!

Review wars!

Now here’s a tale of woe that we probably shouldn’t find as amusing as we do. See, there’s this application called TextFree Unlimited that’s been doing quite well apparently,

Textfree Unlimited is a 4 star app that has stayed in the top 100 apps for 138 days now priced @$5.99. Pretty incredible.

Indeed. But in the savage bestiality of the App Store, OH NOES! that just makes you a target!

But something bad happened last week. I noticed that for our 4 star app, suddenly had 14 1 star ratings with terrible comments that were all marked ”most helpful” by tons of people. This all happened in a 24 hour period.

Now don’t get me wrong, sometimes you make a product error or launch an update that warrants bad reviews. In that case, read them all, listen closely, make changes to your app, and your users will be grateful. This is not what happened.

So what happened?

Last week at Pinger we had a competitor come in and trash our ratings.

Sounds a little paranoid you think? Well, check out the explanation:

Massive iTunes Account Creation

This unscrupulous competitor created 50-100 iTunes accounts. This is not hard to do, but it takes time. They did this so they could act like 100 different users.

Comment Creating

They then created the 14 comments each with a different user account and gave our app a 1 star rating.

Comment Rating

Here’s where the really powerful and potentially dangerous feature of the App store reviews comes into play. Apple gives users the ability to mark a comment “helpful”. Once this competitor with questionable morals, created the comments, they used the 50+ iTunes accounts and marked all the terrible comments they made “helpful”. This immediately raised them to the top of the heap.

Argggghhhh!

Woah. Now that’s some first class conspiracy theory. On the one hand, I suppose the mechanics are plausible yes. On the other hand … does it really make any sense to go to the trouble of creating “50-100” iTunes accounts just to piss in the mouth of your competition? Especially since you’d have to actually buy a copy with each of those accounts before you were allowed to rate them … oh, no, wait, you can mark a comment helpful or not without buying. Hmmm. Well, that does make it less of an outlay.

OK, I suppose that if you’d set up a sock puppet network to pimp your own apps, which is a skanky but probably effective way to game the system, deploying it to scorch your competitors’ products is the logical next level. Of course, we would never stoop to something that sleazy and underhanded. Unless, you know, it actually works. Hmmmm, maybe there’s a metagame in here somewhere. “Review Wars! Trash our competition for fun and profit!” Heh. The inventiveness of the marketing mind never ceases to amaze, does it now?

h/t: iPhoneKicks!

Chat room warning!

Here’s something you should be aware of if you’re planning to add any chat room type feature to your application — it forces you into a mature rating on the app store! This email arrived from those OpenFeint people who do a social networking platform for iPhone games that we mentioned before:

Developer community members contacted OpenFeint to let us know that Apple is actively flagging new updates/submissions as “mature user generated content” when chat rooms are included in their games. OpenFeint actively monitors and bans users for inappropriate content, however, some developers have not updated to the latest OpenFeint release limiting our ability to ban inappropriate users permanently. We are actively contacting these developers to accelerate the update process which will allow us to better monitor our community. As of August 14th we will be disabling access to OpenFeint applications using versions earlier than 2.0.

What are your choices?:

1. Disable the chatroom feature in your game – this is recommended for developers needing the lowest application rating in the apple store. Documentation for this can be found here:

http://help.openfeint.com/faqs/guides-2/disabling-chat

2. Submit to apple with a “Mild Mature/Suggestive Themes” – this is recommended for any games that do not fall into choice #1 above.

Not really too fond of either of those options? Yeah, neither are we. Seems that this iPhone thing being, you know, a phone with the real internet and all, restricting access to a game chatroom is a bit on the silly side, as it’s not as if other communication avenues are lacking exactly. But hey, if that’s what we have to deal with that’s what we have to deal with, forewarned is forearmed, and all that!

Code: UITableViewCell-Compatibility

[EDIT: Discontinued.]

If you’re trying to maintain iPhone source that uses UITableViewCell — and really, what doesn’t? — across 2.x and 3.x OS version targets, here’s a helpful set of functions for OS version agnosticism from the redoubtable Erica Sadun:

@interface UITableViewCell (Compatibility)

- (void) setLabelText: (NSString *) formatstring, ...;

- (void) setDetailText: (NSString *) formatstring, ...;

- (UILabel *) getLabel; // not 2.x friendly, iffy workaround

- (UILabel *) getDetailLabel;

+ (id) cellWithStyle: (uint) style reuseIdentifier: (NSString *) identifier;

// Must be called during tableView:willDisplayCell:forRowAtIndexPath:

- (void) rectifyDetailLabel;

@end

Handy, that. And whilst checking out her site, we also note that iPhone Developer’s Cookbook 3.0 Edition code is now up at github as well. Goodies everywhere!

h/t: iPhoneSDK!

Library: geo-location-javascript

Here’s a library of interest to our web-developing friends; geo-location-javascript, which wraps a number of different device’s GPS capabilities into a JavaScript API that is “aligned” to the W3 Geolocation API specification:

Usage Scenario

The framework provides two key methods, it determines if the handset has client side geo location capabilities and one method to retrieve the location (of course only after a request for permission). So a mobile web site that provides location based services can first determine if the client has client side geo capabilites and ask him to assist him in finding his location. If no geo capabilities are given or they are disabled the site can fallback on a manual location input method and use a geodata database/service to map the input to a pair of latitude/longitude coordinates.

Supported platforms

  • iPhone OS 3.x
  • Browsers with Google Gears support (Android, Windows Mobile)
  • Blackberry Devices (8820, 9000,…)
  • Nokia Web Run-Time (Nokia N97,…)
  • webOS Application Platform (Palm Pre)
  • Torch Mobile Iris Browse
  • Mozilla Geode

A comprehensive — nay, well-nigh exhaustive — list of platforms indeed!

As a side note, if you’re unfortunate enough to be stuck on a Windows platform and would like to have an iPhone (and Pre, and …) emulator to test out your webpages, there’s this MobiOne thing which looks like it could be useful for you, check it out.

h/t: iPhoneWebDev!