Under the Bridge

APNS Update

So we’re just about to the point in That Big Project that’s been chugging along here where the server’s message delivery system moves over to an APNS basis, which will no doubt be very interesting indeed. So we’ve been looking around for some help with that.

The scale and immediacy of messaging envisioned makes reliance on third-party services potentially problematic for this project, so those are out. (Although as an aside, in the iLime vs. Urban Airship competition for your third party APNS needs, last fall we did an exploratory APNS-based project and picked iLime because it looked simpler at first glance and fit in with our Google App Engine prototype nicely, and had no complaints about how that worked out.)

So, since the last time we noticed an APNS roundup, anything new out there on the roll-your-own side of the things? Why yes, yes there is indeed. Here’s some more resources that look interesting:

Programming Apple Push Notification Services

A comprehensive walkthrough of how to implement the client side and “test” with an OS X-hosted faux server.


Open source PHP/MySQL application, looks very comprehensively documented indeed.

ApnsPHP: Apple Push Notification & Feedback Provider

Another PHP application.

pyapns — An APNS provider for your app

XML-RPC based with Python and Ruby native APIs.


Java? People still use that? Well, if that’s you, check this out.

[UPDATE: When we did our server, the pem/passphrase problem was the biggest hurdle: this post lays out nicely how to sort that!]

And hey, if any of you out there have anything good or bad to say about these various bits and pieces out there for the DIY APNS service writer, or if there’s anything of potential note we’ve overlooked thus far, please share!


mattt / rack-push-notification: “A Rack-mountable webservice for managing push notifications.”

Apple Push Notifications with Mule Cloud Connect

How to build an Apple Push Notification provider server (tutorial)

Sending Apple Push notifications in rails with Redis and apn_sender

Apple Push Notification Service Gem

Open Source Easy To Use Multiple App iOS Push Notification Provider (Python and Twisted Based)

Apple Push Notification Services in iOS 6 Tutorial: Part 1/2 and Part 2/2

Easy To Use GUI Tool For Debugging iOS Push Notifications

Continue Reading →

Platform: Z2Live

So this email showed up on the iPhoneSDK list today:

Hi Developers,

We’re excited to announce the availability of the Z2Live Multiplayer SDK for iPhone, iPad and iPod touch.


  • Multiplayer networking that works on WiFi, Edge and 3G
  • Voice Chat between players
  • Friend Invitations via Push Notification
  • GKSession API compatibility to make porting Bluetooth games to the Internet easier
  • No need for a game server (the devices connect directly to each other)

Please follow this link to begin building your next generation multiplayer games and set yourself apart from the pack:


Thank you and great gaming!

And why yes, if you follow that link, particularly to the features page here, it does look like quite the platform indeed for building your multiplayer games on. And as our biggest project right now (actually, our biggest iPhone project yet by a good bit) is putting together a multiplayer game, we’re keenly aware of just how time-consuming this stuff is to put together on your own.

Oddly enough, we do not see at first glance any hint as to pricing we are so blind that we completely overlooked the quite blatantly obvious and straightforward pricing on the terms of use page. And that would be: 30 cents per user per year. So you’re probably not interested unless the features are offered as part of a subscription package. And how well will that work? Well, we’ll have an idea sooner or later, as that multiplayer game we mentioned above is indeed meant to be monetized in precisely that fashion. It’s a pretty seriously server-centric the deal that wouldn’t be too appropriate for Z2Live anyways.

But hey, if you are putting together something that could use it, you probably want to check it out for a build or buy decision. And if you do, let us know what you think, k?

Continue Reading →

Freemium Pricing

Here’s an interesting read on how Ngmoco justifies the freemium model for being the only way they’ll release iPhone games these days. If you’re in a hurry, money quote (heh) is

We’re just finding that, with paid, you can’t make any money…

Now that, Dear Readers, is an absolutely classic line. Classic, we tell you.

… There’s only a handful of companies that are able to charge more than three dollars for a game. Gameloft, EA, Square Enix. Anyone else, they charge more than two bucks, no one’s even going to look at their game. There’s no way that we could have built Eliminate, for the cost per install or cost per SKU that we would have sold, to actually be able to make back that money in the timeframe that we wanted to. It’s funny, because people are saying that they’re willing to pay, but when push comes to shove, they’re actually not willing to pay. That person that says they’re willing to pay $10, they’ll probably wait for it to drop to 99 cents before they actually purchase it. What they really want is a $10 game for 99 cents. What we’re giving them is a $50 game for free. That’s really our stance right now.

Indeed. As it happens, we’ve just bundled off into review this morning a bit of an experiment into applying these principles to the non-gaming world; our IAP-centric reboot of the Poses series comes in free ‘Poses Sampler’ and paid ‘Poses Professional’ (with extra poses and features) versions, with the current three apps all being purchasable as content packs in either. It’s going to be just absolutely fascinating to see how that works out, indeed.

h/t: digg!

Continue Reading →

Source: FTUtils

Oooh, here’s some cool stuff: a bunch of nifty canned CoreAnimation routines called FTUtils:

The code in FTUtils is common utility code extracted from Free Time Studios iPhone projects. Currently, there is only one primary utility (FTAnimation) and some simple preprocessor macros. Some unit tests exist for the code, but more are needed.

OK, it could be described more enthusiastically, along the lines of “DOZENS OF TEH AWESOME CORE ANIMATION FX!1!one!”

But hey, if you want that little extra bit of groovy animation polish in your app — and who, we ask rhetorically, doesn’t? — it’s definitely worth checking out: see the video at the above link or just grab the source off github and run the demo!

h/t: The Flying Jalapeño Lives via iPhoneFlow!

Continue Reading →

Review: LifeGoals

Something a little out of the ordinary today: by request, we’re doing a review of the LifeGoals iPhone app from Reefwing Software. Mainly because, well hey we were asked and we’re an agreeable sort of troll, but also it was an opportunity for a little introspection and pontificating that we don’t do very much of and it’s good to on occasion, the unexamined life is not worth living and all that.

To break it down to its simplest, the idea of goal setting is to eliminate unproductive activity and develop productive activity through prioritization and autosuggestion. If you prefer those principles wrapped up in mystical nonsense, then you’ll enjoy books like The Secret. (Thanks, Mom! Great present! We love you, really!) But as most of you Dear Readers no doubt like us would prefer your self-help quota to be approached more in the nature of an engineering problem, we’ll direct you to what was and still is based on our browsing around this last week the best book ever on this subject:

Seriously, if you haven’t read it you should. If there’s any better primer on psychological success anywhere, we certainly are not aware of it. And you really do need to get the basic principles down so that tools to reinforce it, like the LifeGoals app we’re going to get around to talking about sooner or later, are going to be of any use whatsoever. In the meantime, the online help at Reefwing’s website is a pretty decent introduction.

Now, about those tools. We’re not big on rigid organization in anything, and especially not in goal setting. You’ve heard the “no battle plan survives contact with the enemy” aphorism? Or, to expand on that, perhaps you’ve heard Eisenhower’s quote on the Normandy invasion, “The plans were useless, but the planning was indispensable”? That’s pretty much the way we see it. Achieving your goals isn’t about laying out a rigid timetable and sticking to it, which is pretty much guaranteed to fail, it’s about having your Plan A, and Plan B, and Plan C, and on down the line, all ready so that whenever something serendipitous — or negatively serendipitous, whatever the word is for that — comes your way you have a range of possible actions already thought out and prepared. And in the worst case, you end up with what you’ve no doubt seen in large organizations attempting to manage projects what we can call “TPS Syndrome” — that uselessly wasting time on the superficial trappings of process managment becomes a substitute for, you know, actually managing the process. And we’re instinctively inclined to suspect any tool designed for management, whether of software development or life goals, of being an open invitation to fall into that trap.

Now, on the tactical level, a tool to organize immediate tasks has great value. But even there, we’d never found a piece of software worth the trouble of using until last fall, where you may recall our gushing paean to the near-perfection of Cultured Code’s Things task manager. And yes, we still pretty much stand by that, we are relying on it completely, as a matter of fact we’ve started to push long term goals into it, making it pretty close to competition to what LifeGoals is intended to be. Sooo, is there any place for it? Well, let’s — finally! — start to actually take a look at the application.

So it starts up, and there’s a pretty comprehensive list of categories one would set goals in: “Artistic”, “Attitude”, “Career”, … blahblahblah. Well, we’re a troll. There’s really only one thing that qualifies as an overriding goal in our life, and it would be summed up nicely as “finish mosttraveledpeople.com“:

According to our members, the world is made up of 871 countries, territories, autonomous regions, enclaves, geographically separated island groups, and major states and provinces. To visit all 871 would be to go everywhere.

Now that’s a goal worthy of a troll, indeed. And at 202 out of those 871 (23.19%) we’re not doing too badly, but some more formalization is quite possibly in order. So we go to the ‘Travel’ section, create a ‘Finish mosttraveledpeople.com!’ goal, and add a couple tasks towards that goal that we had in mind for the nearish future. And a third rather larger task.


That all goes smoothly, the editing process is well thought out. But well, there isn’t much room for LifeGoals to display its prioritization and balancing features if that’s the only thing we track. So let’s add something else. Well, as it happens there is something that could help with; we definitely do tend to spend more time at the computer than is optimal for peak health, so there’s a bit more troll around then we’d ideally like there to be, if you get our drift. Not enough for us to be bothered enough to actually pay attention more than sporadically to actually doing something about it … but that’s pretty much the whole point here, isn’t it? So, let’s add an appropriate goal and a couple achievable daily tasks towards it in the ‘Health’ section:


… and whoa, we run smack into the problem that there appears to be no way to set recurring daily tasks. Hmmmm. Well, perhaps we are thinking less strategically than the tool is really intended to be aimed at, but you’d think there ought to be some way to do that, wouldn’t you? So we dig around a bit, and heh, look at this on the Reefwing blog:

… Two obvious mistakes (in retrospect) was ability to edit/add categories and repeating tasks. Rest assured that I am continuing to improve and develop Life Goals…

… Yes repeating tasks will be added. This has been one of the most requested features…

Not just us that wants to use it as a task manager then! Arguably, just putting those tasks as daily tasks in Things would be a lot more sensible anyways … but we can see that putting in a comprehensive set of goals could be of use in filling out the prioritization matrix a bit. And it is pretty cute. Actually, we’re kinda amused how it splits our entries between pretty much trivial and off the chart.


Yep, it’s very pretty. That goes for the rest of the application too — very nicely designed and intuitively laid out and apparently well programmed, you can pretty much take all that for granted by our lack of observation that it’s not. But is it actually worth the effort to use? Hmmm-mmm-mmm. Well, if you actually need help balancing your various long term goals, why yes we can see this would be an excellent tool. If your strategic directions are pretty much set (that would be a politer way of saying “as one-dimensional as we are”) and you’re only really interested in some help with tactical management, not so much … and at the moment the lack of repeating tasks is a pretty hard block to that, although as mentioned above it looks like that lack will be remedied.

So, there you have our thoughts. If this sounds like something you figure could help you out — click away!


Continue Reading →

Cocoa Architecture

Here’s a post worth reading over at M Cubed on comparative architectural strategies in Cocoa:

A while back I wrote a post on how I was pushing towards making my apps much more manageable, by separating my once monolithic app delegates and nibs into various view and window controllers. Yesterday Justin Williams wrote a post on his blog about Getting Started with Core Data, Bindings and NSViewController

Justin’s post included a project he’d worked on, implementing core data tutorial application from CocoaDevCentral using several window and view controllers rather than one monolithic class and nib. The way he built his version was quite interesting, as it was differently to how I would have approached the task. As it was a relatively simple project, I thought it would be of benefit to some to provide an alternate way of building the same app. I don’t think there has been two Cocoa developers giving two different ways of implementing an entire app before…

No, if there has been, we’ve missed it. We’re always on the lookout for insightful articles about the use of Core Data, and this quite thoroughly qualifies on that count, but even if that’s not one of your main interests there’s still a lot of insight to be gained here!

Continue Reading →

Financing: appbackr

Here’s an intriguing option for financing your app development — appbackr, “The New Way To Finance Your Apps”:

  1. appbackr helps connect developers with big ideas and small pockets with wholesale funders.
  2. appbackr users can pre-purchase apps they want to see developed at a wholesale price.
  3. With cashflow from appbackr investors, app developers can focus on what they do best.
  4. Sell your app at retail prices, and purchasers make the profit on each unit they own.

That does sound intriguing, doesn’t it? There’s some more detail in Mobile Orchard’s post about them:

The wholesale buyers are arranged in a queue. The first wholesale buyer’s units are covered by the first sales in the App Store. The latter ones are fulfilled in order.

The developer gives the full amount of the sales covered by the wholesale units to the wholesale purchasers. After the units in wholesale queue are completely sold out the relationship with the wholesale buyers ends and the app developer gets the full amount of all future sales.

appbackr also offers wholesale purchases for finished apps. Here the scenario is that you’ve finished an app — it’s in the store — and you want a block of cash up-front. You sell wholesale priced apps to a buyer who then earns back the full amount as they sell in the store.

Wholesale buyers make $0.20/unit for concept stage apps or $0.12/unit.

Certainly a novel way to structure your venture capital efforts, yes. If anybody’s intrigued enough to check it out further, please share your experiences!

Continue Reading →

XML Parsing

If you’ve got any XML-parsing tasks on deck, here is a most exhaustively thorough comparison of your options:

How To Chose The Best XML Parser for Your iPhone Project

We hadn’t even heard of all of these, actually. So far we’ve only needed to parse data feeds in our iPhone projects, so we’ve just used the SDK’s NSXMLParser for trivial jobs, and for heavy lifting the TBXML parser we mentioned here, which does indeed seem to come out well in this comparison too; but if we ever run into a situation where editability is required, from a quick read through here looks like GDataXML is a solid frontrunner for that. But options are always nice!


RaptureXML is a new attempt at making usage easy!

Continue Reading →

Website Snippets

Here from the awesomely-named Cats Who Code blog is an article of 10+ Useful Code Snippets To Develop IPhone Friendly Websites — some of which are interesting for use in your UIWebView-presented embedded content as well, looks like:

  • Detect iPhones and iPods using Javascript
  • Detect iPhones and iPods using PHP
  • Set iPhone width as the viewport
  • Insert an iPhone specific icon
  • Prevent Safari from adjusting text size on rotate
  • Detect iPhone orientation
  • Apply CSS styles to iPhones/iPods only
  • Automatically re-size images for iPhones
  • Hide toolbar by default
  • Make use of special links
  • Simulate :hover pseudo class

The blog looks pretty interesting in general if you’re into HTML, WordPress, etc. at all. Which, yeah, we will be one of these days, at least to find a theme that’s actually readable to save our Gracious Readers’ eyes. Just as soon as things slow down just a smidgen. 2018 is looking not bad. So far…

Continue Reading →

Tip: CodeSense FAIL

Hey, you noticed in your new Xcode projects recently that CodeSense is only working for your code, not SDK frameworks? And haven’t been able to figure out why? Yeah, us too. Turns out the problem is turning on analysis — aka “RUN_CLANG_STATIC_ANALYZER” — in your base .xcconfig, as noted here on OpenRadar:


For any project of mine in which RUN_CLANG_STATIC_ANALYZER is set to YES, CodeSense symbol lookup fails for non-explicitly-imported symbols (i.e. Foundation/UIKit classes and methods, etc.). Because the CodeSense index fails to build, code completion and option-double-click documentation searches also fail.

Ah, so that’s the trick! And why yes, commenting that line out of our base config file and clicking ‘Rebuild Code Sense’ in the project info has indeed given us our SDK class option-click back. How nice!

However, we really really don’t want to do without the analyzer, as it’s been pretty darn useful in identifying subtle oversights. And in the occasional case where it misidentifies leaks and the like, we’ve tended to adopt the attitude that “well, if the analyzer can’t figure out how this works, the chances are pretty good nobody tasked with maintaining this in future will be able to either”. And in our 20+ years at this programming thing, we have increasingly come to the conclusion that in virtually all cases the only metric worth evaluating code quality by — after “correctness of result”, of course — is not its efficiency, not its cleverness, not its elegance, but its maintainability.

So we’re now trying the workaround of enabling clang only in the debug configuration and leaving it off for the AdHoc/AppStore configurations, and so far that appears to indeed be working and providing us both CodeSense and analysis while developing. But if any of you have a better solution, please share!

Continue Reading →
Page 70 of 114 «...4050606869707172...»