My 10-Star Review of Monument Valley

IMG_5266Seriously? People are giving Monument Valley one-star reviews because they are charging $2 (TWO dollars) for adding new levels?

Ok. So I’ve calmed down (a bit.) Let me start by saying that I first downloaded Monument Valley after it won an Apple Design Award at WWDC 2014. I had heard about it and it was featured on the App Store for weeks before (Zzzz!) However once I downloaded the app, I have to admit I was astounded. It will literally and figuratively change your perspective on how games should be created (pun intended.) Play the game or watch the 30 second video preview on the App Store.

It is a beautiful well thought out set of mysteries. You guide the little mistress heroin, Ida, of the game through as series of puzzles while soothing music plays in the background. There are no instructions needed and you simply tap the screen to navigate through the levels. There are only 10 levels in the original game, but it is full of “surprise and delight” – which Apple loves to see.

Most developers, heck, most artists only dream of creating such a wonderful work as this? Pull your head out of your a$$. Software costs money to develop, so you should be glad that you only have to pay less that a Starbucks latte! The one-star reviews merely serve to point out what is wrong with Apple’s insistence on a rating system. The App Store is broken as many app developers will tell you. The marketing bullies with deep pockets and have taken over. There is no App Store for the rest of us and that’s a shame. You can join the discussion on the More Than Just Code podcast. We’ve covered this issue for months. I’m sure this will be in the discussions in next weeks episode.

Hand your iPad to an 8 year old kid and watch the magic happen! “You non-contibuting zero” – Louis CK.

This is my review. If only I could give these guys a 10 star review!



Download the app here.

Detect iOS 8 with Xcode 5.1.1

While prepping an app for submission that still supports iOS 6 & 7, we discovered a bug when the app in run under iOS 8. There was a change to EKEventViewController that leaves behind some UI when the view is dismissed. So we had to use the default method for presenting the view.

The way we tested for iOS 6 and 7 last year was to check the version with:

floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1)

However Xcode 5.1.1 doesn’t have an enum higher than NSFoundationVersionNumber_iOS_6_1, so it won’t detect an OS version higher than 6.1.

NB the recommended solution is to build your app with Xcode 6, which does recognize NSFoundationVersionNumber_iOS_7_1.

To detect the system version you can use “systemVersion” from “UIDevice”. It’s not decremented yet, so you can do something like:

NSLog(@”system %i”, [UIDevice currentDevice].systemVersion.intValue);

        NSString *version = [UIDevice currentDevice].systemVersion;

        if (version.intValue <= 7.1) {

            // Do something for iOS 7.1 or earlier

        } else {

            // Do something for iOS 8.0 or later


This hasn’t been tested much, but give it a try.

The next release will be on Xcode 6 (I promise!)

Hire Tim

Tim Mitra avatar

A few people have asked about hiring me on contract. So I put together this post:

I am and independent developer and designer working in iOS and web technologies. I have been involved in many app deployments on the AppStore, as the main idea guy or architect of apps; doing client work and some personal apps. Collectively we had over 500K downloads over the last 5 years, which I think it’s better than most. My background is in the graphic arts, print and publishing, and the IT work involved in those trades. However I have always made stuff and consider myself a solutions provider – my unique ability.

While I do wrangle developers, writers and artists, I spend the majority of my time actually writing code and assembling the apps. I am also the person who deals with the actual submission to the AppStore. So I can start an app from pen and paper sketches all the way to the App Store and analytics. While doing so I make stops to assemble copy, create graphics & UX, write the code, assemble the apps, localization, distribute the builds, wrangle git & branches, write server APIs, product management, as well as marketing and promotions. Soup to nuts as any indie IOS developer should be (and hiring out help on big projects).

I am located in Toronto Canada, where I try to run a small development company. I teach introductory courses on iOS development. I write for and I founded and host the More Than Just Code podcast.


resume and references available on request.

New iPhone 6 screen shots for ITC

I can here you say, “Everybody knows this already.” However for those of you who don’t (non developers, artists maybe) there are the sizes needed to create new screen shots for iTunesConnect app metadata and marketing. Apple hasn’t produced an iOS 8/iPhone 6 transition guide and the Mobile HIG hasn’t been updated, yet.

iPhone 6 – 755 x 1334

iPhone 6 Plus – 1242 x 2208

The iPhone 6 Plus also has landscape mode so you may want to create screen shots for that mode as well.


Supporting StoreKit Affiliate ID in iOS 8 w/o breaking iOS 7

As you may already know, iOS 8 finally supports loading a StoreSheet complete with your Affiliate ID. This way you can keep users in your app without sending them over to iTunes or App Store apps and still get commissions from Apple. However if you want to support iOS 7 users (for the time being) you will need to load the Store Kit Product Parameters with the playlist only – or your app will crash. So naturally check for NSFoundationVersionNumber to test for version iOS 7.1 or 8.0 and load the correct parameters.

You can watch the WWDC 2014 Video about this new feature.

Here’s the code using contstants to hold IDs for your playlist, affiliate and campaign IDs.

– (void)openAppStore:(id)sender {

    // Initialize Product View Controller

    SKStoreProductViewController *storeProductViewController = [[SKStoreProductViewControlleralloc] init];

    // Configure View Controller

    [storeProductViewController setDelegate:self];

NSDictionary *parameters;

    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {

        // Load resources for iOS 7.1 or earlier

        parameters = @{SKStoreProductParameterITunesItemIdentifier:kPlaylistID};

    } else {

        // Load resources for iOS 8 or later

        parameters = @{SKStoreProductParameterITunesItemIdentifier:kPlaylistID, SKStoreProductParameterAffiliateToken:kAffiliateID, SKStoreProductParameterCampaignToken:kCampaignID};


[storeProductViewController loadProductWithParameters:parameters completionBlock:^(BOOL result, NSError *error) {

if (error) {

NSLog(@”Error %@ with User Info %@.”, error, [error userInfo]);

} else {

            // Present Store Product View Controller

            [self presentViewController:storeProductViewController animated:YES completion:nil];





Protecting yourself online – seriously

protect-croppedThere’s been a lot press lately about people’s online if being leaked or hacked. Some blame the online service providers, such as Apple’s iCloud or retail stores lackadaisical storage of credit card data. Let’s be honest with ourselves, that type finger pointing or product bashing doesn’t serve anyone. While I realize that you are busy starring in movies or running a successful business, being aware of what needs to happen will help you do or find someone to help you out. The only person or persons who can protect your online interests is yourself. So here are some things you should already be doing or at the very least be preparing to do.

  1. _DSC3946Start using encrypted email. Nearly every email host on the planet offers some type of SSL encryption. Check your email settings, or hire an expert to check, and make sure that the SSL protection in ON. It also needs to be set to “on” for both incoming and outgoing email on all of your devices. SSL, or secure socket layer, encrypts your email as it leaves your device and delivers it to your mail service provider. That means that no one can intercept and read the contents of your email messages, coming or going. This does not mean that it’s OK to send sensitive information, like passwords, credit card details or even a spreadsheet. However if you do, then you can be sure that the data sent will be encrypted. Next you’ll need to make sure that the people you are communicating with are also encrypting their email.
  2. 1PasswordUse a password management application. I personally recommend iPassword from AgileBits. A good password management app will keep track of your passwords, integrate into your web browsers, help store security questions, generate secure passwords that meet or exceed the required types that your provider suggests. It will also keep track of what passwords you have used on the various web sites. AgileBits is even making this functionality available to iOS 8 applications so that developers can utilize it’s functionality in their own apps. You can here more about AgileBits in our latest podcast: MTJC Podcast Episode 5
  3. IMG_1591Create stronger passwords. This is the most important way to protect yourself online. You can no longer rely on your own methods for creating passwords. Again it may seem annoying to create hardened passwords but it is only a matter of time when some script out there cracks your password. If you use common worlds or phrases, you are only fueling the fire. The scripts that attempt to break your passwords will start with the basics, common words and phrases. No there is not a little man or whiz kid trying to crack your password. It is a script running on a remote server. In fact, once your password is cracked it goes onto a list server to be exploited later. There are so many already compromised users and servers that the exploiters don’t need to attack you today. So change your passwords regularly. Best practices recommend using a combination of uppercase and lowercase letters and numbers as well some punctuation or special charters (aka high ascii). There are plenty of password checkers online like: – This site shows you how many seconds it would take to crack your password. A simple password with a common word and number would be cracked in seconds. More complex passwords would take hours. Ideally you want a password that would take years to crack.
  4. Screen Shot 2014-09-09 at 1.47.03 AMChange your passwords regularly. It may seem to be annoying but rotating your passwords on a regular basis is always a good idea. I personally change critical passwords every 90 days or so. You can set up or ask your providers and/or IT guys to set up a password policy that prompts you to change your passwords. Once again use a password management app, see above, to keep track of your passwords.
  5. Create different passwords for each site. In general I change up my passwords on every site. Initially I used a shorthand to distinguish each variation. Now I use 1Password to keep track of the passwords and even allow 1Password to suggest new passwords with it’s Password Generator feature. The simple trick here is that if you use the same passwords in more than one place, then you open yourself up to a multisite exploit.
  6. icloudUse a secure online storage. If you must keep your data in the cloud, make sure you are using  a secure service. It goes without saying that you should use secure passwords to access these. In  previous point we suggested using password management to keep track of your passwords. No more sticky notes or pieces of paper stuffed under your keyboard. Yes, I’m looking at you. Despite what you may have heard, services like DropBaox, Google Drive and iCloud, do use state of the art encryption to protect you from yourself. They are using better than military grade encryption, Advanced Encryption Standard (AES) with 256-bit or 128-bit key length at least. In theory it would take trillions of years to decrypt your data without the correct key or password. It doesn’t help if your password is the name of your niece’s new puppy. The bottom line is, if the information is too important to lose, then do not store it online. There are tools out three that anyone can buy to get at your online data. I personally recommend that you sync or back your devices up to a computer at home, not online (Sorry, iCloud!)
  7. Screen Shot 2014-09-09 at 12.30.05 AMEnable 2-step verification for all of your online services. As mentioned in our podcast, MTJC Podcast Episode 5, 2-step verification uses a secondary device to authenticate you when you set up your account. If someone attempts to compromise your data, they won’t get far without the secondary confirmation. Often the online service will ask for your cell phone and send you a txt msg  with an additional code to verify your account. So along with your password only you will need to supply the second code to access your stuff. That would keep the bad guys out. You can read about 2-step authentication with Google here: Google 2-step authentication and with Apple’s iCloud here: How to step up Two Factor Authentication on iCloud
  8. Screen Shot 2014-09-09 at 12.35.12 AMModify your online privacy settings. Go into Facebook, Twitter, LinkedIn and whatever online social network tools you use and check your “privacy settings“. While it’s tempting to be popular by making yourself as public as you can, you must by now be aware that there are many people out there who are looking the exploit you. Maybe they are after your credit card or banking information. Maybe they are after your private photos. Maybe they are simply out to drive traffic to their web site, and get more money from advertisers. When I was a kid, the boogy man hid behind doors and under my bed. Now the boogy man is a well respected business man running web services in Eastern Europe, China and South Asia. You need to visit your privacy settings and make sure your postings go to people you know and trust. While you’re at it, take a look at the Applications that you’ve allowed to access your online data. Delete or disable the connected apps that you don’t need.

Now that you know the items you need to check, you’ll be better prepared to start protecting yourself. If you haven’t already started using these methods, at least add them to your TO DO list. As the sergeant on Hill Street Blues used to say, “Let’s be careful out there.”

Overexposed and the Attack of the Clones

IMG_1317Our 5th installment of the More Than Just Code podcast is now available. In this episode we discuss the impact of the leaked nude celebrity photos, apparently stolen from their private iCloud accounts. Beyond the social issue of these lady’s privacy violations, we discuss the nerd’s perspective of how to access and strengthen your passwords with apps like AgileBits’ 1Password app for desktop and mobile devices. We also touch on 2-factor authentication for online accounts.

Mark sent in some photos of a mystery building that Apple has set up on De Anza College in Cupertino, near where the Sept 9th Apple Press Conference will be held. We all speculate on what products will be revealed and what their impact will be. Will it be a new iPhone 6, iWatch or AppleTV.

Jaime brings forth an new example of iOS 8’s extensibility in the form of a custom keyboard from Minuum. Mark brings up Swing Copters again and Tim dives right in. Aaron praises and laments the Overcast podcast app. Tim discusses the new Star Wars Commander app and compares it to Clash of Clans.

[button link=”″ bg_color=”#cf93cf”]Listen to the Podcast Here[/button]

Episode 5 Show Notes:

Google 2-step authentication
FaceBook Tweaks
Celebrity photos leaked
Creepy Men
How to step up Two Factor Authentication on iCloud
TechnoCreep by Thomas Keehnan
Minuum Keyboard
App Annie App Ranking, Intelligence & Marketplace
iPassword for Mac
iPassword for iOS
Star Wars Commander
Swing Copters

The Other App Store – EP #3 of the MTJC Podcast is out.

dennis-2The third installment of More Than Just Code is out. In this episode, we dig into what it costs to develop an app, from the developers perspective. We add in some specific challenges and benefits for remote working – the access to skilled developers and app creationists vs the benefits of working in an office environment; complete with pin-ball foosball tables and BBQs.

We discuss the latest game installment from Dong Nguyen creator of Flappy Birds. How the app, Swing Copters, is being introduced and how and why Flappy Birds works and went viral. This leads us to Tom Hanks (and @AppleStore) getting behind Hanx Writer for iPad. Aaron then climbs the soapbox the explain how the Other App Store promotes and perpetuates the class differences between large interests and indie developers.

We then misguidedly (as usual) discuss Aaron’s blog post on the limitations of size classes in iOS 8. Jaime and Aaron give us their App Picks of the week (Grafio and Camoji). We congratulate Mark on Scales & Modes Scales & Modes for iPad being featured on the App Store (other?) and Tim’s debut on – a tutorial site for developers of all levels.

You can find the podcast here.


Episode 3 Show Notes:

Craig Hockenbury Stackoverflow How much does it cost to develop an app
Chiu-Ki Chan @chiuki – Intro to Android for iOS developers – 3601Dev 2013
Remote: Office Not Required” by 37 Signals
Hitcents (builders of Hanx Writer)
Limitations of iOS 8 Size Classes (correct please)
Grafio app by Ten Touch Ltd.
Camoji app by Leo Me, Inc.

Announcing: Tim’s first article on

I’m pleased to announce that my first article is being published today on The RW blog is focused on producing high quality programming tutorials geared toward all levels of developers so that “we can all make awesome apps“. I have been following the RW blog since I started developing apps, around 2010 or so. I’ve been proud to support the RWTeam and blog as a student by buying their publications and singing their praises. I am extremely proud now to be contributing to the growth of other developers by contributing to the site:

You can find my premier article here:

How to Make Game Music for Beginners



Apple Stores to finally begin iPhone 5s display replacements on August 4th | 9to5Mac

Apple Stores to finally begin iPhone 5s display replacements on August 4th | 9to5Mac.

Apple will finally begin offering iPhone 5s screen replacements in its official U.S. and Canada retail stores in the coming days, according to several sources. Apple Store Genius Bars are said to have begun taking delivery of large quantities of iPhone 5s screens for the repair program. The crucial service’s debut is currently scheduled for Monday, August 4th. This upcoming rollout will mark an official launch as a few stores in the U.S. have piloted iPhone 5s screen repairs over the past several months. Apple officially rolled out iPhone 5c screen repairs in January, and it began replacing other iPhone 5c and 5s parts late in 2013. The screen replacements will cost approximately $150 per repair, and this is more affordable than the $269 price of completely replacing a broken iPhone 5s.