Issue 64

8 July 2020

by Lori M Olson

DRD064: An epic (app) launch fail and a retro game riff in this issue. Lots of examples and accompanying source code for your amusement and edification.

OPED ― Our Unvarnished Opinion

Today we’re gonna talk about an app launch failure. I don’t actually like to talk about app launch failures, because I know it’s a problem that is totally possible to avoid. But people are always trying to take shortcuts and game the review system so failures happen.

So let’s talk about this failure. This app is a transit app for the City of Calgary, my former home. Seems like a straightforward enough app. It has the means for transit riders to purchase a monthly transit pass, and then a means to use that pass on the bus. As I said, fairly straightforward. And I know they did a lot of things right. They focused on their main use case. They have been criticized for not covering all the transit pass cases right out of the gate but that would’ve been a mistake. This first release covered the main transit pass for the average transit rider. They did not cover the transit passes for low income users, nor did they cover the transit passes for senior citizens, nor the ones that students use and that’s a good thing.

When creating and launching a new app for the first time you wanna keep that as simple as possible, as focused as possible on your main use case, make it useful and then get it out there as quickly as possible. So that was a good thing they did.

Some of the things I question about this launch though may have contributed to the failure. You see, they planned a simultaneous launch on the Google Play and the Apple App Stores. Coordinating releases of two apps at the same time on a specific previously announced launch date and before the app was actually approved…that was a mistake.

And then…they had an app guidelines violation on their iOS app and they were required to resubmit a new build that fixed this violation and it was submitted on…June 30. This for an app with an officially announced launch date of July 1. (Which, PS., was a holiday in Canada so why did they choose that date anyway) And so their app failed app review.

So let’s talk about the app review process. You always want your app to pass the app review on the first try, because that’s your best chance of passing. Given the vast numbers of apps today, this is pretty much an automated system, unless you’re doing something really sketchy, and there’s an checklist and unless you’re doing something that causes the AI to kick your app out for manual review, this is going to be quick and your app will pass. You just have to make sure that you check all the boxes that the app review process is going to be looking at BEFORE YOU SUBMIT.

The problem you have when your app fails app review, is that automatically takes it out of any sort of automated review and put it in the hands of a real person. And real people always bring their own unique twist to things like review and sometimes these people will find problems that an automated review wouldn’t find and they’re going to nitpick and they’re going to find things that they don’t like and decide that that means they should fail your app again. So it’s much much harder to pass reviews after the first fail. To NOT have that first failure this is one of the cornerstones of my 6 Pack Apps framework. Launch for Success, the sixth step, is all about making sure that your app passes app review on the first try.

This week I’ll be opening up sales in the 6 Pack Apps for Entrepreneurs course. If you would like to sign up for that course, go hit the waitlist now and you will get the first notification when that cart opens because seats are limited, and you won’t want to miss out! ― WNDXLori

This week in Cruise to App Success, I just posted a video about my 6 Pack Apps Framework. This is the framework that the 6 Pack Apps course is based upon, and you won’t want to miss it.

Also, I believe it is finally safe to say that by the time our next newsletter rolls around, we’ll have a new DragonRuby GTK tutorial up. This one is based on the web playground, and so you’ll be able to take DRGTK for a test drive without having to download and install it. Let’s all cheer on the WNDX intern, Jordan, to help get this project wrapped up and released! ― WNDXLori

GOTW ― Gem of the Week

If the biggest obstacle to launching your guaranteed-to-be-a-hit-for-sure DragonRuby game is coming up with a decent hex map then your problems are solved. Newly-minted indie game developer Austin Meyer has come up with Dragon Hex Generator as part of his last semester at CSU Chico. To be honest, we’re not even sure it’s necessary to have a game project on the go ― we could just watch these little worlds being created all day for no reason in particular.

COMM ― Community

The command line is still used way more than proponents of the various IDEs and GUIs might like to admit. There is still a perverse pleasure in being able to write a beautifully piped multi-command statement incomprehensible to outsiders, right? That said, there are still times when a wormhole out of your personal CLI-verse comes in handy. To wit, Erica Sadun’s remind which uses the Swift Argument Parser to process command line parameters into a legit call to the iOS NotificationCenter. As Erica says “sometimes we just want to use tools already at hand to get on with the rest of our work”. Absolutely right.

AHTW ― App Highlight This Week

One thing we likely don’t do enough is feature content for the “small humans” in your life. Justin Collins just tweeted out his brand new Dino Jump, which is a perfect example. Oh, and the DragonRuby source code is available as well so it may be just the place to begin coding yourself out of quarantine cabin fever by developing some kid-friendly content of your own.

Your kids (and spouse) will thank you.

DRGTK ― DragonRuby Game Toolkit

While we’re on the subject, here are a couple of examples of DragonRuby games which represent a logical progression from Dino Jump both in terms of game play and the game programming principles they illustrate: first, there is Flapper from Astrr which is a low-tech Flappy Bird clone ― but quite a bit harder, we think. Then there’s another step up to Space Game by 68st0x20. Both have source code provided so you really have no excuse but to get going on your own DRGTK efforts.

TWIL ― This Week I Learned

Why are hex maps used for game play? Do you know? According to Wikipedia: “The primary advantage of a hex map over a traditional square grid map is that the distance between the center of each and every pair of adjacent hex cells…is the same.” Huh. If you didn’t, now you do. (img: SpaceWalker189)

DRSH ― Dragon Riders Slack Highlights

Some recent, interesting chatter on the Dragon Riders Slack: The good news came in the form of Amir receiving his Universal dev transition kit. If ours is still stuck on the camel on its way to our offices, we’re not all that concerned because we can rely on Amir to give us an early, informative review ― right, Amir? Meanwhile, the not-so-good news is we continue to wait on pins and needles for Xcode 11.6 with support for iOS 13.6. That’s still in beta, apparently.

ANDROID ― Nothin’ but…

While we’re not quite living up to this section’s “nothin’ but” tagline, there is enough Android-specific material to pass along this nicely curated treasure trove of tutorials. They are mostly based on the Stream product, but you will still get a lot out of them for any app which consumes a feed of some sort.

HAHA ― And They All Laughed

Puns. They never go out of style. (credit: xkcd)

That’s a Wrap!

The world’s best DragonRuby newsletter can be delivered to you—at least it will be if you subscribe! We’re also on Twitter and Instagram and we really hope you’ll follow us there for content you can’t get anywhere else.


“Gamers can feel when developers are passionate about their games. They can smell it like a dog smells fear. Don’t be afraid to hold onto your unique vision: just be aware that it may not turn out exactly how you envisioned.” ― Scott Rogers

RubyMotion Weekly brought to you by