Under the Bridge

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 →

Framework: DTSpringback

So you know how you’re supposed to maintain the complete usage state of your iPhone app and restore it on startup? Yeah, we never bother with that all that much either. But should we ever have a situation that requires that kind of state maintenance enough to get us motivated to actually do something, here is Springback to help us out:

A small cocoa framework for resurrecting an object graph, specifically designed with a view controller structure on the iPhone.

Skipping through, it looks nicely thought out, apparently even handling modal dialogs. Pretty nifty stuff.

And there’s some other interesting looking stuff by the author to check out too, for instance DTMusicModel “A Core Data based framework for quickly accessing the music information in MediaPlayer.” Yes, we’ll definitely dig around here some more whenever we have a spare minute…

Continue Reading →

Canada FTW!

Yep, we figure we’ll make today one of those exceedingly rare occasions with a completely non-computer-related post; because well, it’s just the right day today for a little Vancouver Olympics boosterism, even if you’re as profoundly cynical as a troll, isn’t it now? Hey, you just can’t really beat for a dramatic finale that sudden death overtime goal to take hockey gold, for a new Winter Olympics gold medal count record no less. Not like we could really get much of anything else done at the moment anyways, as outside the downtown Vancouver Trollwerks Inc. world headquarters, there are very many people in the streets, and they are very excited.


Very very excited.


Yes, it’s quite the time. As the slogan has it,


Indeed. Our condolences to all of you out there who are in cities that aren’t Vancouver. Although we’re sure that yours is very nice too. And almost certainly a great deal quieter, at the moment…

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