Rest and Vacation for Your Mind

I don’t know about you, but I often forget just how much I can enjoy and actually need time off to rest from work. I recently took ten days (mostly) off to be with family and explore the great outdoors. After returning to work, I feel recharged, and fresh with ideas; even colleagues have made note.

I need to remember this for next time.  Taking the time away allows your brain to recharge, change gears, and get away from the routines of work. Refresh.

Tagged

iPhone 6 Screen Resolution, Points, and Pixels Explained

iPhone 6 Screens Demystified on PaintCode

There were a lot of questions surrounding the rumored iPhone 6 display resolution. A few had well-reasoned extrapolations based on conjecture, but ultimately we had no idea. Now that the hardware is public and our iOS 8 SDKs are gold master, we finally have the numbers. And…. they’re not what we expected.

Yup – 3x graphics are there for the iPhone 6 Plus, but by the time those images hit the screen, they’ve been down sampled by about 15%. I’m sure the 6 Plus screen looks absolutely delicious, but I can’t imagine what that scaling factor is actually going to look like.  Or maybe I do. Having owned a retina Macbook Pro, I’m familiar with scaling on the retina display. It’s actually hardly noticeable. Maybe if I get up close I could see some sort of issue, but I haven’t yet.

We have higher resolution on-screen now, but the UI should be about the same size as it always has; it’s important to Apple that touch just works.

Tagged ,

Initial Reactions: Apple Watch, Apple Pay, iPhone 6

Today’s Apple event flew by, and for good reason – it was jam-packed full of some goodies.

 iPhone 6, 6 Plus

I hate to say it, but I think the iPhone 6 is the least interesting piece of news from the Apple Event. But, that doesn’t mean these are un-interesting devices. Of course, we’re all excited about having a larger screen (I hear you, Android fans). The specs look great – full sRGB gamut, wide viewing angles. The camera also received some nice bumps: new image stabilization & autofocus improvements, better sensors, etc. Processor, GPU… all what you would expect from a next-generation phone. I think the design is nice, but nothing extraordinary. Maybe I’ll feel differently once I get my hands on one.

Apple Watch

Technically Groundbreaking? I wouldn’t say so – there have been other smart watches before it. Groundbreaking in the way Apple does things – yup. It’s clear Apple spent a ton of time on the user interface – both software (panning, tapping, etc) and hardware (crown, buttons, etc). As pointed out in the presentation, there are metaphors that we’re used to on a phone that won’t work on the watch. Pinch to zoom was one of them. This is where Apple shines – by practicing restraint (cue the “thousand ‘no’s for every yes quote).

I’m eager to see the Watch SDK. Even with the minimal features they demonstrated on stage, I can think of numerous applications complemented by the Watch.

Apple Pay

This was the most recent / late-to-the-game rumor to come out, but it’s brilliant. This, I believe, is where Apple has the most room to disrupt an industry. Sure, the watch is pretty cool, but that seems more an evolution on how things are done. With Apple Pay, we’re now moving away from plastic as identifier to biometrics and person as identifier. I suspect Android solutions will be close behind (even Google’s failed attempts at Google Wallet), which when taken together as a whole, represent a monumental paradigm shift in how we pay for things. I particularly like the focus on the payment transaction – *beep* paid for. All the payment source is kept secret from the retailer (so some scoundrel waiter doesn’t swipe your CC at the restaurant), and Apple doesn’t care to know what you purchased. Apple as opposed to Google and Amazon, is not in the advertising business, and they keep driving that point home. Your information is safe with us. Given Apple’s consistent approach to protecting consumers (e.g. AppStore), it’s a believable (as in trustworthy) statement.

 

Overall, a great announcement. There’s a lot to look forward to in the coming weeks and months. We’ll see how this has all panned out in a year. Now, if you’ll excuse me, I’m greasing up my card for a new phone and watch purchase.

New iTunes Connect “Processing” Purgatory and Usability Issues

The new iTunes Connect has only been out a few days. Overall, I think it’s probably better than the old version – there are just a few things to get used to. It seems there’s a noticeable lack of communication within the new web app – enough that I filed a couple of bug reports.

Two surround the situation where you have uploaded a binary to iTunes connect. The first issue – you are not allowed to re-upload a binary with the same version and build number. However, there is no way to remove the old one. The second is a little less obvious: Uploading the new binaries will place them in a “Processing” state with no indication about what is happening. Fearing something had gone wrong, I tried the upload a few more times with different build numbers & formats – all went to “Processing” with no icon – only the version, build number, and upload timestamp. None of them were available to select so I could submit for App Store review. Xcode said everything was OK, Application Loader said everything was fine. An hour later, all four builds were processed. Thanks, I guess.

No matter the technical process, there are a few key points of communication they missed out on:

  • There’s no indication what “Processing” actually does, or how long it should take. Minutes, hours, days?
  • There’s no explanation about uploading “duplicate” binary version/build numbers until you’ve actually failed
  • Sometimes there are errors saving metadata – generic error message – users should be informed about what entry was wrong, and how to correct the problem
  • In general, I see no clear links to documentation, which would have been helpful
  • Xcode’s messaging is not consistent with Application Loader, which is also inconsistent with the iTunes Connect website.

I believe these issues are easily addressed, however they sure demonstrate how usability/experience is affected when a few pieces of key information is missing.

Tagged , ,

The Human Connection

From Brent Simmons’ post: Why I Love Indies and You Do Too:

I’ve noticed something obvious about popular music — it’s almost never instrumental. There’s always a human voice singing a melody. We humans love human voices.

That’s what we get from indies that we don’t get from corporations. We get that human voice and the emotional connection that goes with it.

Knowing that I’m using software by individual developers or small teams, creates a special connection to real people that doesn’t come from the likes of Photoshop, Office, or any other Large Corp application. Indies, and those who wish they were, care about things like craftsmanship, creativity, human connection, dedication to the process, and the ritual. We are feeling the collective pang of defeat little-by-little as it all seems to slip through our fingers. Holding onto the “Indie” hope is becoming more like grasping the sand – we don’t quite know what to do as it slips through our fingers. If nothing is done, we’ll be left holding nothing.

I don’t mean to be doom and gloom. I think there is plenty of work out there – some of it rewarding. It’s just that doing your own thing, on your own product, on your own schedule is a dimmer possibility than it seemed in the past. I don’t think it has to be over.

So by all means – get a job or consult, if that’s what keeps the lights on. Spend your free time doing what you love to do. Create. Craft. Build & Run. Nobody is saying you have to do it  full-time to be a success. Success is paying your bills, savings, taking care of family, and may more things. Icing on the cake is making great things for people so their lives can be just a little bit better – because you stepped up to the plate and made it happen.

Tagged ,

July 2014: We Noticed Indie Died

It seems July 2014 may go down as the month when we realized being an indie (iOS) developer is no longer feasible. It’s not that something suddenly happened, rather, we collectively realized the same thing: there’s no way to make a living doing this.  Rather than making a living off of developing one or two apps, we need to find another source of income and do this on the side. It’s the only way.

Here are some recent posts by notable developers in the community. They hit on a few different woes, and points. Some implore we approach this whole thing from another direction.

 

A Candid Look at Unread’s First Year

More on iOS Indies

Shopster 2013

iOS Indie Game Numbers

App Rot

Organization

The iOS Indie That Could

Trials and Updates are Still Dead

On Pricing More

App Store Realities

Why I Left Indie Development

Where are the Indie iOS Developers You Ask?

The Mobile Software Disaster

Another Non-Indie Developer App Story

The New Indie

 

I fall right in line with many of the experiences expressed in the aforementioned links. In the early days of Pivotal Action, we were starry-eyed at the possibility of creating something great that people liked, with the “reasonable” hopes of being successful. We started off with Completion, and later went on to work on a new project, Pixd, that never shipped (though it was close-ish). By the time we more or less gave up on Pixd, I think we had realized the return on our time investment was unlikely to pay off. Even as the dust was still settling with Completion, we knew we couldn’t quit the consulting side of the business – it was paying the bills.

[UPDATE] I’ve added additional links showing more experiences and perspective on the indie situation

Tagged , ,

Apples Answer on Upgrade Pricing

From David Smith

Logic Pro X is a Major with a capital M update to their professional audio editing suite. It appears to represent a significant investment in both time and resources. So how is it being sold, especially to people who already paid $200 for the previous version Logic Pro 9? It is a separate app download with a full cost purchase. No upgrades, no introductory pricing, just straight forward sale.

I’d say that this is the best indication of Apple’s intentions and expectations for the App Stores going forward.

via Apples Answer on Upgrade Pricing – David Smith.

I know people are offended by the pricing, but the reasonable side of me wonders how they can be so offended. Perhaps the “race to the bottom” on the mobile side has poisoned us into believing software should be very cheap (or free).

Tagged ,

Raising the Bar on Real

Apple Outsider » Real.

We don’t need the deception of “photorealism” anymore. Despite the loss of these tricks, iOS 7 feels more real. The parallax effect conveys an entire living world under that glass, not just abstract pictures and icons.

On the surface, iOS 7 looks like a refreshed UI, and nothing more. But digging deeper and looking closer, we have entirely new channels of user experience and interaction design opened up to us – not because we can (we always could) – but because it’s the new status quo. The bar has been raised.

Tagged , , ,

iOS Smart App Banner plugin for WordPress

iOS Smart App Banner plugin for WordPress

I just released version 1.0 of my iOS Smart App Banner plugin for WordPress. This plugin lets you put a smart app banner at the top of your post or page when an iOS device visits in mobile Safari. It’s a great tool for app promotion that makes it very easy for people to find & buy your app in the App Store.

 

[UPDATE] The plugin has been updated for Apple’s new referral links.

Tagged , ,

An Overview on Providing OAuth for Your Mobile App

I was recently playing around with an idea – a proof of concept – for an mobile app API. If you’ve never done this before, keep reading.

The high-level requirements:

  • A mobile app that you have control over
  • An API you’re working on
  • Users must be authenticated

As I am the app and API owner, I thought it best and easiest to use a two-legged OAuth implementation – username & password plus some secret keys (3-legged vs 2-legged explanation). This is what your users will expect when logging into your app & service. Before you can start, find an appropriate library for your web framework. There are plenty out there, so pick your poison. I’m familiar and develop relatively quickly with CakePHP, so I went with seddonmeida cakephp-oauth-server. I’ll spare you from too much code.

First, you’ll have to set up an OAuth client in the database. This is for your app and nobody else. Follow your library’s instructions; you’ll find out you can’t read values from the database because they should be hashed. Once you have it installed and are sure it’s working, you can start the setup. In the CakePHP plugin,

function some_open_oauth_action(){
    $client = $this->OAuth->Client->add('myapp://register'); //the URL isn't really important in this case
    print_r($client);
}

Save your client_id and client_secret in a safe place. You’ll need it in your app. Now, the fun part. You can test this in your browser, but it will work the same way in your app.

First, Grant the Token

In OAuth terms, we’re doing a password type grant with the client_id and client_secret.

https://domain.ext/oauth/token?grant_type=password&client_id={SOME20CHARACTERLONGID}&client_secret={some40characterlongsecretkey}&username={username}&password={password}

You’ll get JSON in return with a few important keys, namely access_token and refresh_token. They will serve as your ID badge for future requests. Keep them around. NB: access_token is used most, but refresh_token has a special place.

Request Something

Making a request for protected resources is easy. Assuming your back-end is set up properly, you should be able to run something like this with no problem:

https://domain.ext/oauth/userinfo?access_token={whateverAccessTokenYouWereGiven}

I know the above URL is at /oauth/, but that doesn’t mean your entire API has to be handled with your OAuth controller. In practice, you should include your OAuth library as a component of each appropriate controller wherever you’re accessing the API, or at least secured content.

Refreshing Your Token

A lot of services using OAuth aren’t going to expire your token. Seddonmeida’s implementation uses an expiration, but in practice doesn’t actually enforce it; that’s up to you. In the case you do have an expiring token, it’s best to refresh your user’s keys from time to time so they aren’t “logged out.” To get a fresh new token, access our OAuth token action and request a refresh_token grant type using the client_id, client_secret, and the refresh_token you received when first authenticating.

http://domain.ext/oauth/token?grant_type=refresh_token&refresh_token={youGotThisAtAuth}&client_id={some20charid}&client_secret={a40charstring}

A Note About HTTPS

Make these requests over HTTPS if you have any option at all. Otherwise, HTTP is sending your username and password over in cleartext, which we all know isn’t a great idea.

Tagged ,
Follow

Get every new post delivered to your Inbox.

Join 394 other followers