Apple – Cocoanetics https://www.cocoanetics.com Our DNA is written in Swift Wed, 29 Mar 2017 19:19:54 +0000 en-US hourly 1 https://wordpress.org/?v=6.4.3 39982308 Replying to Reviews https://www.cocoanetics.com/2017/03/replying-to-reviews/ https://www.cocoanetics.com/2017/03/replying-to-reviews/#comments Wed, 29 Mar 2017 19:19:54 +0000 https://www.cocoanetics.com/?p=10478 With the release of iOS 10.3 Apple has also added functionality to iTunes Connect to let you respond to reviews. What’s really cool about this: Apple will send your reply as email to the user’s AppleID!

I had to immediately go and try to respond to a feedback I had left on my own app, prod.ly. So I went into My Apps – prod.ly – Activity tab – Ratings and Reviews. And there I clicked on the new and blue reply icon on the right hand side.

There appears to be some sort of review or checking process as the developer response is not visible right away. So I left it at that.

One day later I got mail…

What a pleasant surprise! It’s not that I like to have positive conversations with myself. My delight stems from being able to try to win back dissatisfied customers by having Apple mail them on your behalf!

This is extraordinarily powerful! If you take the time and tell each concrete feedback why you now deserve 5 stars instead of 1, you might dramatically increase your reputation and app rating. As you can see in the email, the user is asked

Do you want to update your review?

The user can change their review and rating. The iTunes Connect Developer Guide has more juicy details.

When you reply to a customer review, the customer will be notified of your response and will have the option to update their review. All users with the Legal, Admin, App Manager, or Marketer role that have access to the app will receive a notification if a customer that you responded to changes their review. Your response will remain publicly visible regardless of edits made by the customer to their own review, unless you choose to edit or delete your response in iTunes Connect. You can edit your response at any time and only one response per review will display on your App Store product page.

So, if the user indeed amends their – probably long forgotten – review your response might become outdated. But Apple lets you delete or edit your response as well, once you receive notification that the user reacted. That’s great, because otherwise you might end up with a comical scenario where your response does not seem to have any connection with the review it is a reply to.

Conclusions

In 10.3 we find a new way to ask for reviews in apps, a way that is way less obtrusive than the nag screens that we have learned to hate. This new ratings view cannot be shown more than 3 times per year. Since it no longer takes us out of the app, we might be more inclined to actually use it to respond with a few words.

From now on, we developers will also be measured on the quality of our public responses. Possibly forcing us to hire a community manager who will do the user interactions on our behalf, if we don’t have the time or interest in doing so ourselves.

Either way, Apple finally – who have been hawkishly protecting the user’s (e-mail) identity – now allow us to e-mail them our response, albeit indirectly. This is a great opportunity to try to win back users by being able to tell them about new releases (which hopefully fix their issues).

 

 

 

]]>
https://www.cocoanetics.com/2017/03/replying-to-reviews/feed/ 1 10478
Missing TestFlight Builds https://www.cocoanetics.com/2016/09/missing-testflight-builds/ https://www.cocoanetics.com/2016/09/missing-testflight-builds/#respond Thu, 15 Sep 2016 12:00:33 +0000 https://www.cocoanetics.com/?p=10302 I could have sworn, that I uploaded build 1.0.6 (28) of a client’s app to his iTunes Connect before leaving the keyboard for the night. The next morning it still showed build 15. Turns out TestFlight makes some builds disappear, here’s what I learned, why.

It did have the build because when I tried to upload it once more from organizer, I got the message about the 1.0.6 train already having a build 28. So the build is online, but you don’t see it on iTunes  Connect.

My has an individual app store account under his Apple ID and so I have no way to directly receive App Store notifications about problems to my own email address. He forwarded me this message from Apple:

Dear developer,

We have discovered one or more issues with your recent delivery for “YOUR APP”. To process your delivery, the following issues must be corrected:

This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

Once these issues have been corrected, you can then redeliver the corrected binary.

Regards,

The App Store team

Indeed this app uses a UIImagePickerController to access the user’s photo library as well as make new photos. If you build against the iOS 10 SDK the app will crash as soon as you try to open the photo picker if you don’t have the NSPhotoLibraryUsageDescription present in info.plist. So I had added that.

But somehow I had missed that there is also a text to add for when you need to access the user’s camera: NSCameraUsageDescription. I swear that I had tried the app on my iPhone 6S and it didn’t mind that I did not have this key present.

Apparently there are several different reasons for a TestFlight build becoming invalid, including but not limited to code signing issues. So for the time being, if you don’t see a build appear on TestFlight, then ask the person who’s receiving the error emails to forward them to you.

Conclusion

It is bad user experience for us developers to have builds disappear on us. Especially if your are not the main recipient of the “Dear Developer” emails, but your client is.

I would expect the upload process to already flag such issues, since that is generating a map of Apple APIs which your app is using. But if that is not possible for some reason, then I would at least expect to see my build and a useful error message.

]]>
https://www.cocoanetics.com/2016/09/missing-testflight-builds/feed/ 0 10302
The Case of the Missing Translation https://www.cocoanetics.com/2015/11/the-case-of-the-missing-translation/ https://www.cocoanetics.com/2015/11/the-case-of-the-missing-translation/#comments Thu, 05 Nov 2015 12:19:57 +0000 https://www.cocoanetics.com/?p=9962 Since iWoman was acquired by FOKUS KIND Medien we have been working on a complete UI overhaul. This also requires many new translations. The previous version of iWoman had been localized with Linguan, a Mac app which we also had sold a while ago. Unfortunately Linguan does not yet have support for XLIFFs, even though the new owner is considering it.

This blog post describes an issue that the XLIFF workflow has because of a bug on POEditor.com as well as a problematic “feature” in Xcode which causes some strings to go missing.

At WWDC 2015 I was told by the guys responsible for localization at Apple that they consider strings files as a byproduct of the proper way to do localization this day. Apparently nowadays you don’t mess with strings files any more, but rather with XLIFF files. XLIFF is short for XML Localization Interchange File Format.

XLIFF solves an issue that has plagued the strings based workflow for quite some time: it also contains information of which file the localizations belong to. This way you can have multiple string tables contained in one XLIFF file per language and Xcode knows where a translation goes.

Extraction

The first step is to get Xcode to extract the localization tokens. You don’t even have to localize any files just yet. In this sample I have only set up a complex view controller and have not added any localization yet.

iWoman OnBoarding in IB

To get the XLIFF file, in Project Navigator, click on the project root and select the menu option Editor – Export for Localization …

Then select a place for the folder where Xcode should put the XLIFF files. You also have an option to select only the development language or to also include other languages (if you have added any). This got me an en.xliff file looking like on the following screenshot. Note the source text for the two paragraphs in the middle which I have highlighted.

en.xliff export

You got to appreciate the beauty of the structure! Under the xliff root node you have a node for each file. And under each file you have a trans-unit for each string. Each translation unit has an id which matches the Object ID in Xcode. The source node contains the string you put into Interface Builder and note contains some supplementary information, repeating text, ObjectID and the object’s class name.

As you can see I have two newlines between the two paragraphs in the longer introductory text. Those are also present in the source node and show escaped as \n in the note. This will become important for the mystery which is about to unfold.

Import to POEditor.com

When I asked around for recommendations about how to get these XLIFF files translated, POEditor.com was much praised and so we set up an account with them. The praise themselves as one of the very few who can even handle XLIFF files.

We got one of these now, let’s make a new project and get it properly imported. I created a new project via the POEditor dashboard:

POEditor after new project

As suggested by “To start, add a language” – I click the button to Add Language to add a language. My development language is English, so I add that at this point.

This new language does not have any “available terms” just yet, we need to import these from our en.xliff we produced in the first step. In the dark vertical bar on the right side, choose the upward arrow button which shows “Import Terms” once you hover over it.

A few options need to be set for our kind of XLIFF.

POEditor import options

We don’t just want to import the tokens, we also want the English texts. The texts in the UI so far might not be the ones we want to show up in the final app, since they are developer texts. As we seen above there is nothing in the target nodes of our XLIFF file. This is why we choose to “get translations from <source> instead of <target> tag”.

Clicking “Import File” we get two messages:

Successful Import

The second is of particular importance. The project needs a default reference language because this is what translators will see as source text. It also is necessary to have a reference language set because otherwise the XLIFF files you will export later would have empty source tags. And this is the the second piece to the unfolding mystery.

So we click the “Ok, let’s do it” button to make English the default reference language. We see the English translations screen and here we witness a case of data corruption.

POEditor lost the newlines

Comparing this text with the one highlighted in the original XLIFF, it becomes apparent that POEditor removed the newlines from the text imported from the source tag. Oh no!

I wonder why POEditor does not like newlines. In my case they saved me from having to do do two separate labels, one per paragraph. I would imagine that other developers think the same way.

Translate and File

Let’s pretend for now that all is well, not having any knowledge of what will follow. We add a new Language German and translate almost all the items there:

Translated the stuff

The translation shows the English reference text above ours and we fill in the German translation below it, again making a paragraph break with two newlines. The export button in the sidebar (downward array pointing to hard disk) gives us an “iOS XLIFF” file.

Let’s look at the resulting translation unit.

Source tag missing \n

As we can see – plain as day if your nose it put right to it by an annoyed developer – the source node no longer contains any newlines but reflects the text as it showed in the English translations.

In an earlier experiment I had not set a reference language. In that case the source tag is present but empty. We also see that POEditor escapes newlines in translations to \n, also something that Xcode does not seem to do.

Which is correct? Should newlines in strings be escaped as \n or not? The XML does not care.

Incomplete Import

Continuing our assumption that we don’t know anything about the missing newlines, we can now simply import the German translation into Xcode. Note that we haven’t added any localization languages to Xcode so far. Editor – Import Localizations …

Xcode will show us a before and after picture. There it looks like the two paragraph text is shown at the right place. On the left side you have “No Translation”, on the right you have the new German text.

Xcode localization diff

BUT … if we look at the newly generated Main.strings (German) we get disappointed. If you enable English localization for the Main.storyboard we see that we should have 5 translated items, but here we only have 4. But on this newly created strings file the multi-paragraph text is missing.

Missing strings

I experimented a bit on how I would have to change the German XLIFF so that the translation gets accepted by Xcode. It turns out that the source text needs to be exactly as it is in Interface Builder, including non-escaped newlines. Even if the newlines where there but \n\n then the translation would still be missing.

Conclusion

This mystery is solved! There are several issues that work together so that in the end some strings might simply be missing from your localizations…

Bug 1: POEditor.com should not change the source strings in any way. Especially it should not simply delete newlines as those might have some significance.

Bug 2: This depends on whether or not you should slash-escape source strings in XLiFF files. If yes, then this is a bug in Xcode as this is clearly missing. rdar://23410569

Bug 3: Xcode should not consider the source string for assigning translations to objects. The identifier of the translation unit should be the only key considered because it is likely that the source text will either be changed (to make it more user friendly) or carry different escaping coming back from the translation service. rdar://23410520

After reporting this to POEditor I received word back from them:

We’re aware of this case and we went through endless discussions about this when we implemented the .iOS XLIFF format. The documentation on XLIFF implementation is scarce at best and as a result we had to make a lot of research for this feature.

The good news is that POEditor does not ignore non-escaped new lines, but only if xml:space=”preserve” is set on the ‘file’ tag or the ‘trans-unit’ tag.

Since Apple doesn’t say anything about this, we had to rely on the general XLIFF standard (declared in the headers of the .iOS XLIFF as well) when we wrote the specs.

I’ve added this note to the Radar mentioned for Bug 2.

]]>
https://www.cocoanetics.com/2015/11/the-case-of-the-missing-translation/feed/ 9 9962
Cocoanetics is News https://www.cocoanetics.com/2015/07/cocoanetics-is-news/ https://www.cocoanetics.com/2015/07/cocoanetics-is-news/#respond Wed, 08 Jul 2015 21:07:45 +0000 http://www.cocoanetics.com/?p=9774 The third BETA seed of iOS 9 adds the News app… if you are in USA. But there’s a trick how you can get it too. And Cocoanetics is there as well.

We have been lusting after new seed drops for a few days now. The normal drop period has been about 2 weeks in the past. Even Eddie Cue had tweeted on July 1st: “new iOS 9 beta coming early next week”. Now it is debatable as to how “early” in the week Wednesday actually is, but the third seeds now finally dropped.

If you don’t want to wait for the OTA versions to appear, you can always download the OS images directly from the developer site. All have a third seed available as of today.

Note the fact that the Xcode downloads URL is plural while all the others are singular.

iOS and OS X are the two of this list who support OTA updates, provided you wait out the spreading of the software to your CDN. I didn’t want to wait and so I installed the iOS seed via iTunes, Alt+Click on Check for Updates and then selected the unpacked ipsw.

For watchOS you always have to install the offered profile via the Watch app on iPhone onto the Watch. Then you have to check for updates and it fines the need seed.

To the News

A while a go – as soon as Apple started to receive submissions via Apple News Publisher – I submitted my request for Cocoanetics to be included. They offer two ways to add content: 1) via RSS feed (which my WordPress blog offers) and 2) via Apple News Format.

“Coming Soon: Apple News Format

We’re working on bringing you a brand new format you can use to create signature content for News. Click Next and sign up, and we’ll let you know when Apple News Format is available.

In the meantime, you can add your RSS feeds to News”

So I picked RSS on June 17th. 20 days later – 1 day before the seed that would actually contain the News.app – I received the good news:

Cocoanetics approved

Apple seems to be hesitant to let you in on the party. You need to change your device region to USA and reboot, so that the News.app icon will show up. If you search for “Cocoanetics” you find my channel right away. You can also go there via this URL (only works on iOS) https://news.apple.com/T99UfKCfBQm6kXRq3W_Nx9g

Finding

By tapping on the plus button you add it to your favorites. It displays the most recent inline image as thumbnail. This might be because I have not yet selected a channel logo.

The overview reminds you of any odd RSS reader. The excerpt seems to be more or less auto-generated, it does not seem to strictly fit with where I put the “MORE” tag in articles. Articles that have inline images show the first one as thumbnail. You can see that only the third has an image. I guess I have to begin to add more images to my articles, so that you have something to look at there for all articles.

Nice Overview

The reading experience is also very pleasant, News picks a nice font and comfortable style for the formatting of my content. However I do have one gripe: source code is too large compared to regular body text and also gets truncated. If Apple wants to cater for developers – who often read blogs with embedded source code – then there needs to be a better way to format PRE formatted text.

Reading

In any case, I am happy to be included in the content directory. Those minor problems can be tweaked easily. If there’s no change then we would have to format our source code samples to 29 columns. Which might pose a big of a problem, as I learned when having to format the sample code for my book to 73 columns. Next to impossible with Objective-C, Swift might be easier there.

A nifty feature happens without my doing: Apple is automatically tagging articles. The tags for the most recent articles are as follows:

  • Open Source
  • Engineering
  • Mobile App
  • Computer Science
  • Core Image
  • San Francisco
  • Apple Store
  • Computer Hardware

You can tap on any of these to find more articles fitting the same topic.

Oh, and one more thing… each article has a “Read Original Story – www.cocoanetics.com” button at the bottom. If you tap that you get a web view with the original article URL. Now where did we see that before…

Personally, I don’t believe in only showing crippled articles in my RSS feed, so you get the same content. But I suspect that this button will become abused by content providers who only publish article excerpts and then want to get the traffic to their sits so that they can show ads.

Apple News is off to a great start, we are curious when the app will be rolled out internationally and when we get to see the Apple News Format.

]]>
https://www.cocoanetics.com/2015/07/cocoanetics-is-news/feed/ 0 9774
Philosophy versus App Store Rejection https://www.cocoanetics.com/2015/06/philosophy-vs-app-store-rejection/ https://www.cocoanetics.com/2015/06/philosophy-vs-app-store-rejection/#respond Wed, 24 Jun 2015 20:26:28 +0000 http://www.cocoanetics.com/?p=9746 In May 2015, philosopher William Hooper, contracted me to recreate a notes app that should pay tribute to the iOS 6 style. He saw a market for such an app, because he – and many other users – didn’t like the flat style introduced in iOS 7.

I built the 1.0 version in a couple of weeks and enjoyed the challenge of skinning the UI to give it this retro style. Several thousand people downloaded the free app, and I began to believe William that a certain audience found it quite appealing.

Shortly afterwards we added additional paper styles, additional fonts and a different header bar style for users to select and released it as version 1.1. Unfortunately I had made a stupid programming mistake that would cause the notes database to be deleted from time to time. We removed the 1.1.0 version from sale while working on a fix.

When we submitted the 1.1.1 version containing the data loss hotfix version, the troubles began: Apple started to reject the app. After a month back and forth with the app review team, William published the following on his philosophy blog and asked me to share it with my readers.

Classic Notes 2007 Banned from the App Store

On May 29th Classic Notes was banned from the Apple App Store, I have spent the last few weeks trying to get it back into the app store, changing the graphics and resubmitting, but so far I have still had no luck. You can read about my adventure here.

This is what being rejected by Apple looks like:

Classic Notes Rejection Letter

That is my latest rejection, but my first looked pretty similar, and every message Apple has ever sent me looks the more or less the same, even when I write back they just send the same message, namely just a few words copied from their rule book with no sign of a human being behind the decision. They did however call me once on the telephone, and in that conversation they said they would reconsider their decision, but a week or two later they sent the same old rejection message again. The next stage for me is an appeal to the App Review Board.

The file attached to the complaint, namely Screenshot_0.png, is a screenshot of Classic Notes 2007 running on the iPad.

Have a look at this side by side comparison of Classic Notes and iOS6 Apple Notes running on an iPad:

Classic Notes Side-by-Side

Here is the title bar in more detail:

Classic Notes Title Bar Side-by-Side
More images: sidebyside1sidebyside2iPhone5aiPhone5biPhone5csettings

Of course there is a similarity between Classic Notes 2007 and Apple Notes circa 2007, but I have agued in vain to them that it’s just a fashionable likeness created by the use of brown leather, yellow lined paper, and the notify font. When I spoke to them on the telephone I explained that I can’t ditch these elements, they are heart of the nostalgia concept.

You can see their complaint is:

“8.3 – Apps that appear confusingly similar to an existing Apple product,
interface, or advertising theme will be rejected.”

Notice the words “existing Apple product” and “confusingly similar”. It does not say “Any app that appears at all similar to any Apple app or interface that has ever been made will be rejected”

When I spoke to Apple on the phone I said “but the old version of notes is not an existing Apple product”. The chap on the other end of the phone laughed and said “well it does still exist it just isn’t available”.

I also said “It is not confusing, nobody who downloads this thinks that it comes from Apple, they know the old notes made by Apple was preinstalled not downloaded, and they know the old notes is no longer available and instead they have to use the new notes, and they are downloading this notes app from the app store because they miss it! Thus there is no confusion is there?”. The chap on the other end of the phone went kind of cold and insisted that people might be confused and think Classic Notes 2007 is the actual old Apple product itself. I pressed the point saying several times saying “are you serious, that’s madness”, and every time he said he was indeed serious.

After that I tried various other arguments. For example, I said

“This is a Steve Jobs tribute app that talks about how important it is to keep the memory of loved one alive. Have you read the first line of our advertising, it runs: ‘When we love a person our heart leaps whenever we see things that remind us of our beloved, and so we call such reminders beautiful, and they bring not just joy to our lives, they also in a sense magnetize us, keeping us true to the way of life our lover approved of.’ And then it goes on about how important it is ‘to be reminded of the wonderful Steve Jobs and his remarkable story’. So imagine Steve Jobs up in heaven right now listening in to this phone conversation, do you think he would be pround of you right now because you are making a wise descision? Do you think when you die Steve Jobs will greet you at the pearly gates and say you were right to ban the only app anyone ever wrote in tribute to me because it threatened to do the world more bad than good? You’re not a nobody who can say these sorts of deep and meaningful questions are above my pay grade, you’re the manager here at the app store, such questions belong to you.”

But let’s focus on the claim that the old Apple notes still exists and users may be confused and think Classic Notes is the original app.

There is an expression philosophers like to talk about, namely the “Are you for real?!”

What does it mean? It means that sometimes people don’t make decisions for ‘real’ reasons, they make them for ‘shadow’ reasons. You can think about it terms of being and non-being, or professionalism and ego. The person who goes unreal lets tangential motives and emotions drag him away from what is professional.

For example, a person who is hungry might say to his boss that the problem he is working on is unsolvable, and he is giving up and going out to lunch, but his boss might look at him and say: this problem is not unsolvable, you just are allowing your hunger to overcome your reasoning. Imagine, if you like, the Vulcan Spock from Star Trek who has become super rational by conquering all his desires.

Philosophers call the virtue of the professional man who resists his desires overcoming his reasoning process “self-controlled”. It’s the second most important professional virtue, the most important professional virtue being justice, which means something like “mind your own business, don’t meddle in other people work”.

Note, this idea of not allowing your reason to be overcome by desire only makes sense in a professional context where reason exists. Plato is pretty secretive and complicated, but I think he distinguishes between the four intellectual virtues and the three initiative virtues, and I think the imitator is not self-controlled by calculation, rather by loving and despising correctly he becomes habituated and is unconsciously self-controlled.

Perhaps the most common self-control issue is greed. Financial motives often come into conflict with professional standards, and this is as true for individuals as it is for corporations. For example, you could hypothesise that it would appear to be in Apple’s interest to ban products from the App Store which compete it’s own products, but of course if Apple were seen to be doing this there would be an outcry by the public and eventually a regulatory attack. We often talk about businesses “cheating” “greedily”.

Another common self-control issue is the inability to back down. Sometimes people make a wrong decision, and then can’t back down for some emotional reason such big-ego (hating giving others power), or shame (hates loosing face).

Think about the shame issue, and see how shame often makes love appear to be in conflict with reason— which is an interesting philosophical idea.

For example, using our own Classic Notes as an example, imagine an employee who really loves Apple, and who is slightly ashamed that some customers prefer the old notes to the new notes, and who consequently bans Classic Notes from the App store because he allows this shame to drag his away from what is truly professional.

Isn’t this strange? We think of love as something good, but here it is doing something bad.

The way to learn about philosophy is to think about examples such as this and figure out what is happening. When we see someone in two minds, we can hypothesise different moral frameworks, so in this case we might talk about dividing the individual into a professional-bee part and an emotional-sheep part. And thinking about this division, we could perceive the ethical working practises principle “the mind should rule over the heart”.

But just looking at the heart alone, still we should be able to explain why real love is all good, and why in this example the love is just somehow mixed up. How can we do that? We could argue that the love in this case is not loving what Apple really is, you see the real Apple is a hero who wins wars and welcomes competition, and without war it wouldn’t thrive and be happy, but the employee who was ashamed was not getting that, in a sense they were sort of short sighted and could not see what was really going on. And that’s interesting because it seems to mean that there is no need for even the most patriotic of men to hate his countries enemies.

But of course, this has nothing to do with Classic Notes 2007, because the App is build by lovers of Steve Jobs as a tribute to him, so we are no enemies of Apple, on the contrary we are Apple’s friend. Barking at us, we could joke, is like being the dog that attacks the homeowners long lost friend. Help cried the friend as the dog sunk its teeth into his heels, but was it loud enough for the homeowner to hear, or will the dog tear the friend to shreds?

]]>
https://www.cocoanetics.com/2015/06/philosophy-vs-app-store-rejection/feed/ 0 9746
WWDC 2015 Review https://www.cocoanetics.com/2015/06/wwdc-2015-review/ https://www.cocoanetics.com/2015/06/wwdc-2015-review/#comments Sun, 14 Jun 2015 01:26:39 +0000 https://www.cocoanetics.com/?p=9665 The 26th annual Apple Worldwide Developer’s Conference was held June 8th through 12th in the Moscone West conference center. It was my fourth attendance to the show, with only 2014 being a break in my streak.

I had extensively written about the wrap up of  first WWDC in 2011, chronicled my WWDC 2012 days (12345) individually and wrote about the lack of women at WWDC 2013. Back then the unofficial percentage of female attendees was at about 4%.

The Lottery

2014 was the first time Apple tried a lottery system for WWDC tickets: you could enter to win the chance to buy a ticket. This marked the end of the second-long-sellout problem. Since the number of developers wishing to attend is growing every year Apple had to start making the session videos available already while the conference was still going on.

Apple tweaked the lottery system for 2015 because it had developed an unintended side effect. Many people ended up not buying a ticket even though they had won the right to purchase it. Others bought the ticket, but found ways to have somebody else attend even though the rules only allowed transfer within the same company.

So in 2015 the system was that you would put down your credit card information and the lottery winners would have the ticket be paid from their card, eliminating the chance to bail out of the deal.

With this change a new problem started, as Ray Wenderlich told me while we were hiking with Sam Soffes. People were fearing that they would end up with too many tickets if every developer in their team would sign up for the drawing. Tickets ARE expensive and you couldn’t afford to be too lucky.  So they signed up for only one or two, ending up with none.

According to Tim Cook, 80% of attendees where first timers. That means about 1000 attendees had gotten a ticket once before. I was one of them, because of development teams!

I was sad when I got the letter that I did not win. But then one of my business partners told me that he won, but he’d rather buy a new laptop with the money. WWDC tickets are non-transferable, with one exception: within the same development team. Since I am member of my partner’s development team, this transfer occurred fully sanctioned by Apple.

Therefore my recommendation for future WWDC lotteries is this: try to be member of as many development teams as you can. 😉

Ticket-Lottery: Works for some, fails for others. But no better way. 3 stars.

Moscone Center

Moscone West is the only location in San Francisco which is able to accommodate this amount of people. Apple made many improvements in the ground floor lab area to make it more open, more friendly and more comfortable.

Two large viewing areas, “Dolores Park” and “Buena Vista Park” touted massive TV screens which were streaming select sessions from the floors above. Sofas and bar-like seating invited people to mingle, eat, work and watch.

The lab areas where enlarged compared to years before with the download area (with ethernet) being lined along the side of the hall and a smaller size bunch of tables with ethernet ports and power. The lesser amount of download seating was balanced with 4 alcoves each on the second and third floors.

A company store selling Apple logo-ed merchandise was present. Although the selection of T-Shirts was a bit of a let down. The only slogan I could find was “Dub Dub” and it was frequently sold out in my size. With the Cupertino company store being closed for refurbishment there will be some time until you can buy something with an Apple logo.

It was little surprise that the WiFi network couldn’t cope with the masses of people around Presidio. It got much better on day 2, but me keeping away from masses of people might also have contributed to it working for me for the most part.

Somehow I failed to get into the rhythm of when and where I could get food, drinks or coffee. On more than one occasion I was hungry or thirsty but could not fill my need. The times when I snatched a boxed lunch I was usually disappointed. I found those mostly bland and dry compared to earlier years. For drink I would sometimes find various sodas or refrigerators with Odwalla drinks. The greatest new addition there was an Odwalla protein shake. I tried to stay away from drinking too much sugar or caffeine to avoid getting too nervous. So even if I had found more to drink, I probably would not have consumed it.

I suspect that this was my own fault though, I was hectically running around between labs to get my app fixed and published.

The main problem with Moscone Center West as the venue for WWDC is that you cannot get any good rate for accommodation in June. Because Apple is putting up WWDC always around the same time hotels and AirBNB hosts alike are more than doubling their prices. I have heard stories of developers getting their AirBNB reservation cancelled at the last minute because their greedy hosts want to make more money. Even though AirBNB has rules against that, usually blocking the time where you cancelled the reservation for, because this is a thing that only happens once per year the hosts usually get away with it and get the week unblocked with a call to AirBNB support.

You usually cannot find any hotels at less than $200 per night, some people I met would have spent up to $270 per night. My advantage is that I can make myself comfortable in almost any setting, so I found a cheap hostel run by Chinese in Chinatown where I paid $500 for almost two weeks. Albeit with crappy WiFi, which is why I am now sitting in a Starbacks down the street which touts “WiFi by your friends at Google.”

The only way Apple could improve in this would be to not do WWDC in San Francisco any more. Wouldn’t it be awesome if it instead were held at the new spaceship campus in a few years?

Venue, WiFi and Nourishments: Apple is making the best of the only available venue, but logistics are hard, and expensive. 3 stars

Line in the Sand

Queuing is ever-present at WWDC. Though, as somebody pointed out: “Americans don’t queue, they get in line”. There are lines for the keynote, lines for the (men’s) toilets, lines for getting an appointment with an Apple Designer, lines for the lunchtime sessions, lines for most sessions.

For people like me, who don’t like to wait, this is a big drawback of WWDC. Fortunately some of the lines you don’t need to get in anymore. The App Store labs have established a nice iPad-based reservation system that would give you 15 min slots. The sessions are better in MP4. And if you time it right, you get good seats at the giant TV screens on the first floor.

I was uncertain if I would queue for the keynote but I must have been anxious to get to the keynote, so I woke up around 3, unable to get back to sleep. Shortly thereafter I joined my queue buddy in line. When it came to turning the corner at the main entrance, people largely forgot their manners and tried to cut the corner by climbing through the rails there. Then there was the “no running” dash to get good positions on the second floor…

Record amounts of garbage were left behind once the keynote queue had cleared. Those 80% of new attendees apparently had not gotten the memo that Apple had abolished automatic garbage collection a few years ago.

Even though the building was supposed to open at 7 am, security would only let people enter around 8 when a massive queue for the design labs had formed. To the detriment of normal people who only wanted to get on the WWDC ethernet for downloading videos and playthings.

The support staff did their best pointing out the tails of lines with hand-held signs. In summary, if you only got into the lines for something that you would not get any chance to get to otherwise, then you could tolerate a little bit of queueing.

The queues, the lines and the ugly: I managed to only get in line 3 or 4 times. 3 stars.

Session State

As usual the sessions themselves were on par with the benchmark set forth by previous years. For a long time they will be the de facto reference of choice to quickly learn about certain concept. ASCIIwwdc provides a searchable transcript of all WWDC sessions since 2010. On many occasions I found myself looking up which talk would treat a specific subject and then go and watch the talk on Apple’s videos website.

Much to the surprise – and delight – of everybody, the 2015 session videos – for the first time in recorded history – feature video of the speakers. However animated the keynote slides might have been previously, without seeing the human presenter they would remain slightly dry.

The first talk I watched in the new format was What’s New in Xcode. Seeing Ken Orr on stage made me think that he reminded me of somebody famous, maybe an actor or movie star. He was just as brilliant a presenter as Kate Stone who talked about debugging later in the same talk. Apple has some veritable stage talents amongst their engineers.

At the Apple Design Awards session I saw two blind guys demonstrate how well a certain app would work for them. That gave me chills and made me think “damn right, why don’t more blind people do the accessibility talks”? I got the strong impression that Apple is actively trying to get more diverse speakers to hold sessions, including a greater share of woman. Both the Keynote as well as the Platforms State of the Union talks had way more women speakers than ever before.

Now that you can see the presenters, everybody has the best seats in the session. So the only reason for me to actually go to certain presentations was to meeting Apple celebrities. One notable example was the Advanced NSOperations session given by Dave DeLong. There he explained how you could use dependencies in NSOperations to chain preconditions. Blew my mind.

In previous years there was always a Stomp the Experts session, which was not being recorded. This year this show got cancelled. Maybe because it didn’t fit the fresh new style of WWDC. I had seen one instance of it in 2013, but I thought it weird and not very funny. Newbies like us don’t derive much entertainment from obscure factoids from Apple’s early history. It was a good call to terminate that.

The lunchtime sessions however remained and were great. Those also usually don’t get recorded and so you have got to see them live as this is your only chance. With Apple streaming the video from all shows they had set up two viewing areas on the first floor where you could watch in awe without having to queue.

It was only befitting with this “more women” theme that the first lunchtime session was given by Debbie Sterling who is disrupting the “pink aisle” in toy stores with her GoldieBlox toys which teach engineering to girls. If anything, then it is audacious goals like her’s that would increase female interest in technology-related jobs.

There also were talks by Disney Legend Floyd Norman, who told us the history of animation technology. Friday’s lunchtime session again knocked my socks of, when “Pluto Killer” Mike Brown, a Cal Tech Professor, showed us the history and future of finding planets.

The only negative thing I might have to say about the sessions were that important presentation like the one by Mrs. Sterling, should also be made available, even though they don’t really fit with the rest of the WWDC tech content.

Sessions Live and Canned: Great reference material. Great seeing the speakers on video. 5 stars.

Lab Rat

I attribute it to experience that I only went into a handful of sessions. The biggest value for an experienced developer are the labs and so I spent almost my entire time zig-zagging between the various lab locations. I had started a labs-questions list in my Evernote about a month before. In retrospect that was probably too late. I could have sucked out even more value from the labs if I had kept a list of my bug reports and other mysteries throughout the year.

The WWDC app on the iPhone had failed me largely until I had figured out how to work the filters. Unlike on the iPad there was no graphical representation of the temporal distribution of events on the phone. This left me disoriented for the most part, so I ended up looking at the lab schedule on the monitors on the ground floor and semi-spontaneously deciding to pop by various labs.

Inspired by the accessibility-focus I got myself an introduction and accessibility-review of the prod.ly app. This made me promise to myself that I want to try to make app my apps accessible in the future.

I was in the process of publishing an app with auto-renewing subscription for the first time. The availability of the iTunes Connect and App Review teams in the app store lab made it possible to get all problems with this app fixed and the app published within 2 days. Suffice it to say, the who process might have taken me several weeks in real life.

What I learned about auto-renewing subscriptions in productivity apps will be the topic of a future article. Suffice it to say that I wondered how I am even getting any work done outside of WWDC.

If you disregard the boost in motivation you can take home from WWDC, you can view it in terms of ROI. A 5-pack of tech problem tickets cost you 249 Euros, WWDC around 1400 Euros. So you are getting your money’s worth if you can speak with at least 25 Apple people. If I count people from iTunes Connect and App Review, I think I easily surpassed this mark.

Generally speaking, most value will come from interactions with engineers if you have a sample, a Radar or a concrete problem with actual app code. Even if the problem is a spontaneous one. I was desperately trying to upload a build of my app in time for an appointment with App Review, but I kept getting cryptic error messages. Speaking with two helpful iTunes Connect engineers we found that precisely at the time when I tried 5 times there were connectivity issues in Apple’s backend.

Labs like nothing else: Come prepared, organise yourself and keep track of what questions you want to get answered. 5 stars.

Conclusion

I loved it and think I made the most of it what I could with my limited preparation. WWDC is more and more turning into a luxury vacation for most people, but if I am going on vacation I’d rather go to a nice beach.

As alluded to early I was able to get a great deal questions answers and – most importantly – was able to fast track the release of a productivity app with auto-renewing subscription. This saved me several weeks of stress and waiting.

Apple gets highest marks for items they can control, but they lose stars when it comes to queue management and for sticking with a location that causes people having to spend ridiculous amounts of money on accommodation.

I would subtract one star for Apple delivering a yawning-inspiring music section of the keynote. But to be fair then I would also have to award them a bonus star for their renewed focus on gender-balancing and diversity. So these balance each other out.

Tickets: 3 stars
Venue: 4 stars
Queues: 3 stars
Sessions: 5 stars
Labs: 5 stars

The final verdict … 4 stars “would buy again”

]]>
https://www.cocoanetics.com/2015/06/wwdc-2015-review/feed/ 2 9665
The WWDC Keynotes https://www.cocoanetics.com/2015/06/the-wwdc-keynotes/ https://www.cocoanetics.com/2015/06/the-wwdc-keynotes/#respond Tue, 09 Jun 2015 04:17:30 +0000 http://www.cocoanetics.com/?p=9659 Don’t believe what the blogs are telling you. What they have witnessed – and live-blogged about – was not the entire story. They only got to see one third of the whole story.

Most people queue for the Keynote presentation in the morning, some as early as midnight. Fewer – but still hordes – queue for the second presentation following a boxed lunch: The Developer State of the Union. This second is the actual meat because here Apple elaborates on the buzz words they might have dropped in the first keynote.

Then there is a third one, usually attended the the least amount of people. I have to admit, that in past years, I skipped the Apple Design Awards in all years, but once. This year I was glad I didn’t, so I was witness to something that made shivers roll down my spine.

At the Design Awards Apple’s chief Evangelist John Geylense demoes the award recipient’s app to show what makes great apps. This year, one app wasn’t demonstrated by him, but rather by two blind Apple engineers. We sat in awe how these guys navigated a productivity app for building workflows just by touch and Voiceover. I promised myself that I will make sure my future apps are all accessible.

More Open, More Diverse

These days, I keep getting the vibe from Apple engineers that Apple is being imbued with a greater sense of openess. Apple peeps are much less afraid of being on Twitter. The might still refrain from discussing work-related matters in depth in the public, but at least do they seem appreciating of when somebody sends them bug report numbers which fall into their area of expertise.

Another welcome trend seems to be that Apple actively encourages women to be on stage. Both the keynote and the state of the union talks featured 2 women each, but never as an obvious “quota woman”. I very much liked the inclusion of famous Apple engineer Eliza Block (most know her as Mrs. ScrollView) who got a few minutes in the limelight talking about watchOS.

Incidentially, Apples new native OS for the Apple Watch sounds like “watch ass”. Are they just watching their ass? I think they are actively trying to set themselves apart from other large corporations where the glass ceiling is still a very real thing. Apple is making an important statement for a tech company and it is good that they are.

Not just Mac anymore

There are further hints that smart people at Apple have stopped the thermonuclear war with Google. Apple will release at least 2 Android apps before the end of the year: one for migrating from Android to iOS, one for playing music. The Swift language will become Open Source later this year as well, as soon as work on version 2.0 has finished. And Apple will even do one better: they throw in a Linux implementation of the LLVM compiler and core library. Linux advocates might mumble into their gray beards “see if I care”, but hey, Apple is at least taking the very first step.

Which brings us to another painful omission that might see a remedy soon. If you can target Linux with Swift code then it is only a very short leap to infer that this might lead to us being able to run Swift code natively and super-fast on Apache servers in the not too distant future.

Speaking of the web: CloudKit will gain the ability to have JSON web services access the database. In the first iteration this will be via JavaScript, but I can easily imagine that Swift will become a native option there as well at some time. But it is a first timid step towards making us iOS developer also be able to write web apps. The jury is still out whether we like that, but hey! More options are always better than less.

It’s for the developers

There will be a ton of improvements for end-user- and Apple stock apps coming in iOS 9 and OS X 10.11. But none are really breaking new ground. Yes, Passbook is now named Wallet to account for the fact that you now also have payment information in there. Wallet just makes more sense.

Another neat new feature might be the split-screen mode, provided that you have at least an iPad Air 2. Leave it to Apple to keep finding new ways to force us developers to having to procure new test devices.

IMHO, the most important feature is what went by the internal codename “Proactive”. Siri will get more insight into the user’s context. Then we saw something that Google just had presented two weeks earlier: the ability to deep-link into apps after Google has indexed them. The ability to say to Siri “Remind me about THIS” and Siri knowing what THIS is, is amazing.

The major difference here is also the biggest differentiator. Apple’s goal is to be seen as the “secure by default” company. A stab in the direction of Google was made, that the big G is mining your data in the cloud with which you might not be too happy. Apple protects your privacy.

Conclusion

I didn’t have any chance yet to give into the details of the OS changes, so I won’t comment on these just yet. But you can definitely see philosophical changes going on an Apple. A fresh and generous dash of humor makes our favorite company even more endearing.

“Shut up and take my money!” – “what?! No new devices yet”? – “Ok, then I’ll get an iPad Air 2 so that I can debug split screen ode.”

]]>
https://www.cocoanetics.com/2015/06/the-wwdc-keynotes/feed/ 0 9659
WWDC Pre-Show https://www.cocoanetics.com/2015/06/wwdc-pre-show/ https://www.cocoanetics.com/2015/06/wwdc-pre-show/#comments Sun, 07 Jun 2015 04:41:31 +0000 http://www.cocoanetics.com/?p=9644 I don’t like myself when I am grumpy. And I am grumpy when I am tired. Which is why I – if in possession of a WWDC ticket – I try to arrive in San Francisco a few days ahead of the conference. I hate the feeling of being a living dead with my body wanting to go to sleep even though the sun showing its warmest and friendliest face.

For a long time I wanted to procure noise cancelling headphones. This is one of the most underrated inventions since somebody invented a way to strap two loudspeakers over ones ears. On the airport where we stopped before getting into the big plane across the Atlantik – Amsterdam – I found me a pair of Bose QuietComfort 25, in Apple-matching White no less.

Those QC25 are said to be the best noise-cancelling headphones in existence and – owning them now – I believe it. I wore them for almost the entire flight. With included adapter I watched 2 movies, listened to some music and – because they cancel so well – had them on while sleeping without any audio playing. The next level up in luxury would be first class seats, as economy seats always give me back pains.

Arriving by Plane

In order to avoid sugar-overload I only drank water and unsweetened tea on the plane. In years before I had always over-indulged in sodas and that had gotten me restlessness and heartburn. I was also glad to have picked an aisle seat since this allowed me to relieve myself at will. Water in, toxins out.

This time I drank no coffee either, because this year I had a specific strategy: sleep a couple of hours right before arrive in California. The idea was to try to reset my internal clock and inform it that it was morning instead of night. The sleeping was greatly aided by the QC25 and a sleeping mask I had kept from an earlier Aeroflot flight.

Immigration took two and a half hours. When mentioning this to the border guard he told me that I could count myself lucky as it might take up to three hours. Must have been lunch time, since only half the booths where occupied with stern-looking people. Mental note: better to arrive in the afternoon.

Filling out the customs declaration I hesitated for a short moment, contemplating if I should declare the $50 worth of gifts I was was bringing into the USA, naturally set on leaving them in the country. I ended up declaring them, but nobody seemed to care about that.

Right outside the San Francisco International Airport, I found a stall selling prepaid “SimpleMobile” SIM card with 2GB data. After that amount of date is used up, you still get throttled data. $97 was the price for avoiding serious Internet withdrawal symptoms while in USA.

Chinese Hotel

Accommodation prices always double during WWDC because everybody with a room to rent smells the money. Pure greed. Even AirBNB rooms go for more than $100 a night. Hotels are easily around $200 per night during that time. Ludicrous.

I had scored a room in a relatively inexpensive hotel next to the Transamerica Pyramid in the financial district, next to Chinatown. Here I got away much cheaper but have to live with several oddities/drawbacks.

When checking in I was presented with house rules to accept and a rental contract to sign. When I made a concerned face I was told not to worry, as my room was already paid for via Expedia. This multi-page document was their way to make sure that I would leave at the end of my stay. As if I would stay voluntarily in this dump…

Showers and toilets down the hall. Loud air conditioning vents right outside your window. And paper-thin walls that cause you to wake at 5 am because you can hear people talking or a TV blearing. Again, QC25 helped here quite a bit, but I think I’ll have to get some earplugs too.

The story seems to go that Chinese business men are buying up such dumps and then they are providing “affordable housing” to the cheapest of the cheap-assest. Unbeknownst to most, there appears an upper class of bums in San Francisco. Namely those who can afford to pay rent in cash at a run-down former hotel like this one.

Oh and of course the WiFi bandwidth is shit, too.

Apple Watch

Golden Apple WatchesMy first order of business – of course – was to walk to the flagship Apple store to fondle some Apple Watches. That was met with great enthusiasm by a young Apple Genius who allowed me to try out and play with several different Apple Watches and bands.

At the end of my spontaneous try on appointment the guy mentioned that I could also try out the golden Apple Edition Watches if I wanted to. Of course I did want and of course the supervisor in charge did have some free time. Would I have half an hour? Again, yes! I was exhilarated by the idea that I could fondle the golden watches and it didn’t play any role that could never hope to afford them.

I was led into a briefing room towards the back left of the store. Before going there you have to decide on two models which you would want to look at. Those have to be brought from the Safe to the briefing room by security.

All watches in the store are running a demo loop which you can start/stop by double pressing the bottom right button. The same is true for the Edition Watches. The one special thing of those is that they come in a leather-padded box which has a Thunderbolt plug so that you can charge the luxury watches in the box. There is also no way how a mere mortal could buy such a box without an Edition.

I am certain that the Apple store employees will have much less time available for such special tours once the bulk of WWDC attendees has stormed the city. So I was glad to have checked off the task so early.

Personal Pilgrimage

IMG_2711No annual WWDC trip is complete without taking the “pilgrimage” down to Cupertino. I like to rent a car (approx. $37) and take the hour-long drive myself. This year unaccompanied. I met with a few new Apple friends who graciously invited me to eat at Caffé Macs, Apple’s famous cantine. I opted for the Mother of all Buritos, handed over imported gifts and thoroughly enjoyed open and friendly conversations.

Curiously, all Apple guys I interacted with wore an Apple Watch (or were close to receiving one). I asked them what feature – besides telling the time – they liked about it the most and several responded with the haptic map. Different series of taps tell you if you should turn left or right. This is not only useful for blind people, but also for motorcycle enthusiasts who cannot look at the map on their iPhone while riding a bike. I can relate to that since only recently I had ridden my own BMW bike across Austria to deliver it to its new owner.

The most romantic response I was given concerned sharing your heartbeat with a loved one. Yes, the respondent also found that cheesy initially, but later warmed to it. And now it is his – and his wive’s – favorite way of telling each other that they are thinking of each other. Who is capable of such romantic notions? Native Italians, that’s who.

In any case my plan was rejuvenated to get 2 Apple Watches so that I can do the same with my girlfriend. There I said it, please don’t laugh.

Later I went to the Apple Company Store which is the only place in the world where you can Apple-branded Merchandise. Well, not the ONLY one, but the only permanent one. Apple usually also has a pop-up store in Moscone Center. My wallet wept.

1 Infinite Loot 2015

I learned that after Friday June 12th, the Company Store will close it’s portals for an indeterminate amount of time for refurbishment. Could this mean that they will create a new Watch section?

Earthquake

Upon my return to the city, I found ideal evening entertainment in the form of the new movie “San Andreas”. The premise of it is that the San Andreas fault causes a record-breaking earthquake devastating Los Angeles and San Francisco.

Carlton Cuse – known for the Lost TV series – wrote the script for this movie and I thoroughly enjoyed seeing famous “So Fo” landmarks being destroyed. Coit Tower and Transamerica Pyramide are only two of the spots that are within walking distance from my hotel.

This movie is really really well made and kept us at the edges of our seats. Seeing it in IMAX 3D greatly enhances the effect. Go see it while you are in San Francisco for WWDC.

Conclusion

I had initially feared that jet lag would be so bad that I could not steer the car on the second day. But this turned out to be a singe.

As far as I can tell I’ve almost gotten over the jet lag. Another trick I am doing is to try to limit the amount of food I eat, especially at night. I have a can of my favorite protein shake to successfully battle those nightly hunger attacks while I am still adjusting to the new time zone.

Also, you should be physically active during the day, and so I plan to attend Sam Soffe’s WWDC Hike. See you at “Dub Dub”!

]]>
https://www.cocoanetics.com/2015/06/wwdc-pre-show/feed/ 7 9644
Retinized! https://www.cocoanetics.com/2015/06/retinized/ https://www.cocoanetics.com/2015/06/retinized/#comments Mon, 01 Jun 2015 05:00:17 +0000 http://www.cocoanetics.com/?p=9628 I admit that I have been jealous of those lucky people who could afford the luxury of staring into a Retina-resolution screen all day. Last week my ship came in and delivered not one but two Retina-devices.

As fate would have it, both a new golden MacBook as well as a luxuriously outfitted Retina 5K iMac arrived in short succession. So I had the pleasure of unboxing them on the same day. Here’s the double-feature YouTube video for that ceremony.

I got asked whether I would be coding on the MacBook as well – because it has less CPU-power than a 2-year-old MacBook Air – I can say: yes I will and I have already for about a week. The keyboard is nicely responsive and you only experience a bit of the slowdown when compiling an Xcode project from scratch. But 90% of the time the performance you get from MacBook Gold is enough.

I was somewhat fearful that you couldn’t even do an occasional unboxing video in Final Cut Pro X. But it was holding up quite well even in that regard. The same process of analysing and optimising the video clips would top out at 460% CPU on the Retina 5K iMac and go up to 280% on the MacBook. But once this step was done, editing went well.

Optimizing videos with FCPXThe biggest problem I was having with the unboxing video was not the encoding performance of the machine, but that the main video had been shot in portrait video. Kids, don’t ever do that… it’s a pain to make a 16:9 video out of that. So I had to be content with a 4:3 video.

The 2015 MacBook does not have any fans, and I am not talking about people but cooling devices. There is a grid of many minute holes at the base of the display where hot air rises. This makes it the first Mac that does not have any moving parts and you are are treated with an early noiselessness. Doing things like encoding a video many times in a row – I kept finding flaws after having started the process – causes the MacBook to get slightly more than hand warm. The hottest part will be underneath the MacBook logo.

The 12″ screen is amazing and I also noticed that the built-in loudspeakers are much louder than the ones in my previous 13″ Air. No longer do I need to amp up the movie sound in Plex, but actually I have to set the volume at less than 100% to be normal. The only time when I am missing a large enough screen is when I am using the Xcode assistant editor to connect outlets in Interface Builder.

On slight inconvenience comes from the device only having a single USB-C port. So for connecting my iPhone for debugging I needed to procure an USB-C to -B cable, readily available at a Mac reseller near you.

“5K iMac makes you unable to look at normal monitors ever again…” – Tonči Jukić

And that might really be the case. I feel quite lucky to be able to upgrade both my normal working machine as well as my travelling portable at the same time.

Conclusion

The MacBook might be too weak for doing CPU-intense work all-day long, but for occasional bursts like compiling code or encoding a video it is a very minimal tradeoff. The one-port-problem is only one if you work on the MacBook long enough to need plugged in power.

I am very happy with both devices. The 5K iMac because “I can see clearly now” (TM) and the MacBook because it is a technical marvel breaking new ground in several areas. The Retina iMac is a no-brainer for people looking at text the whole day, your eyes don’t feel as tired.

]]>
https://www.cocoanetics.com/2015/06/retinized/feed/ 3 9628
Apple’s App Analytics https://www.cocoanetics.com/2015/05/apples-app-analytics/ https://www.cocoanetics.com/2015/05/apples-app-analytics/#respond Sat, 02 May 2015 05:25:17 +0000 http://www.cocoanetics.com/?p=9620 Developers received mail from app inviting them to join the waiting list for their new app analytics service. Such a service is long overdue and several businesses are based solely on there not having been any offering by Apple so far. That is about to change.

Apple is working to close the gab between what developers what and what the platform provider should provide.

  • Public Beta testing – we are very happy with TestFlight which offers this since fall 2014.
  • Crash Reporting – Xcode 6.3’s Organizer window is able to retrieve symbolicated crash logs for BETA tests. iTunes Connect lets you download crash reports for published apps
  • Analytics  – this was announced at WWDC 2014 but has yet the materialize

People have come to understand multiple kinds of things when talking about App Analytics: Click Tracking (external links to the app store page of your app), Conversion Tracking (who downloads the app after viewing it, who buys IAPs?), Engagement Tracking (once downloaded how often is the app opened?) and In-App Analytics (what areas of your app are looked at how often)

Apple’s coming App Analytics promises to deliver all but the last one of these kinds of analytics but this might change in the iOS 9 SDK. Tracking user activities around an app probably needs iOS system hooks to do easily. For example Google Analytics tracks pages and events. A page is essentially anything that you can assign a path to (e.g. “/contacts/new”). An event is anything that a path does not make sense for (e.g. “downloaded asset”). With Google Analytics you have to integrate an SDK and send messages whenever there is something you wish to track.

I can see Apple hooking In-App Analytics directly into the view controller hierarchy, similar to state restoration. Say if you use state restoration and all your view controllers have restoration IDs, then Apple’s In-App Analytics could be forming the VC path automatically from those IDs.

Even without In-App Analytics, Apples coming offering is a big deal. They promise:

  • See how often customers visit your app’s page on the App Store
  • Find out how many of your users open your app over time
  • Check your app and In-App Purchase sales
  • Create custom campaign links and follow the success of your marketing campaigns
  • Understand which websites refer the most users

Ahead of the launch, Apple invited all developers to join the Beta waiting list. This marks the first time that Apple has a waiting list for a new feature. Apparently they fear – rightfully so – that an enormous amount of people will want to get the data they promise.

Apple App Analytics

Third-party analytics providers are quick to say that they are providing many more features than Apple will, to justify charging ongoing membership fees. Certainly developers who do pay for those will have to reevaluate the sensibility of paying for external services when Apple’s offering will be “it just works” and good enough for the majority of usage scenarios.

Like for example finding out if the purchase rate is bad in certain countries and thus you might want to look into improving your iTunes description, add this countries localization and make better screenshots.

Personally, I hope that Apple will “sherlock” all kinds of third party developer services as those feel to me like small parasites which are turning a dime because of Apple’s success.

]]>
https://www.cocoanetics.com/2015/05/apples-app-analytics/feed/ 0 9620
Major Downtime https://www.cocoanetics.com/2015/03/major-downtime/ https://www.cocoanetics.com/2015/03/major-downtime/#respond Wed, 11 Mar 2015 21:53:59 +0000 http://www.cocoanetics.com/?p=9544 Today, Apple users and developers are experiencing some major downtime. Apple services are known to experience stability problems at times. And there is the occasional intentional downtime for the Apple store ahead of new products coming. But I don’t remember any time when that many systems were affected for such a long duration.

After waiting for slightly longer than usual to get beta testing approval for a new prod.ly hot fix release, I was anxious to send the invite to the beta testers. I also felt inspired to try to maybe get a few more people on board for testing:

Prod.ly 1.0.2 beta test approved after 2 days, now out to Testflight beta testers. Still got 970 spaces left if you like to have a look.

A couple of people heard my call and send me their IDs, but before I could add them all I started to get errors on iTunes connect. The list of testers was suddenly empty.

Sometimes, when I cannot log into iTC, it helps to delete the Safari history and cookies. But not this time. I couldn’t even log in any more. At the time of this writing this was 11 hours ago.

Apple provides two status pages which were showing the extend of the issue:

One key piece seem to be affected, user authentication. This was Apple’s description of the problem:

Customers may have been unable to make purchases from the App Store, iTunes Store, iBooks Store, or Mac App Store.

We are – naturally – giggling at the use of the little word “may” here. For iTunes Connect and TestFlight, the description was:

Users are experiencing a problem with the service listed above.

Again, let’s giggle, this time about “experiencing a problem”. Oh Apple…

Well finally, 11 hours later all services have been restored and I was able to upload and distribute the new prod.ly beta to my testers. One interesting question to be asked is whether or not Apple could be held accountable for loss of sales during the many hours users were unable to purchase any apps. But then again … who would bite the hand that feeds you, right?

All giggling aside, we would very much like to know what issue could have caused such an enormous downtime. Was it a hacker attack? Last dying breath of WebObjects? Hardware failure? Hopefully something that Apple can prevent from happening in the future.

]]>
https://www.cocoanetics.com/2015/03/major-downtime/feed/ 0 9544
Happy New VAT https://www.cocoanetics.com/2015/01/happy-new-vat/ https://www.cocoanetics.com/2015/01/happy-new-vat/#comments Thu, 08 Jan 2015 08:07:18 +0000 http://www.cocoanetics.com/?p=9410 As the new year 2015 starts, Apple implements the changed EU VAT requirements.

Before the turn of the year iTunes and app store prices in the EU where charged with Irish VAT. This is because Apple funnels all their European earnings through their Luxemburg-based subsidiary iTunes S.à r.l.

Slowly turns the EU grinding wheel

The old scheme meant that individual countries would not receive any part of the collected tax money for digital software sales. Because of this EU member states came together and decided amicably to change this atrocity. Actually they already did that more than a decade go.

Council Directive 2002/38/EC, in force from 1st July 2003, changes the EU rules for charging Value Added Tax (VAT) on the supply over electronic networks (i.e. digital delivery) of software and computer services generally, plus information and cultural, artistic, sporting, scientific, educational, entertainment or similar services. From now on, these services will be taxed in the country where the customer resides rather than where the supplier is located.

The rationale behind this directive is explained thusly:

For the purpose of the Directive, the services concerned are defined as “electronic services” or “electronically supplied services”. The changes in their tax treatment will eliminate a long-standing competitive distortion by ensuring that both non-EU suppliers and EU suppliers are subject to the same VAT rules when they are providing electronic services to EU customers.

Even though this directive is more than a decade old, it is only now getting implemented. I am neither a (tax) lawyer nor a law historian but it seems to me that where were several extensions, exceptions, amendments (2006/112/EC) and feasibility reports prepared. The latest EU document I found mentioning the Jan 1st 2015 implementation date, dates October 2013.

Long story short… it took 13 years, but finally software is taxed like it should be.

New VAT Rates

Apple has a tax FAQ with details of the before and after.

Before January 1, 2015, the App Store has applied the VAT rate for its country of residence, Luxembourg (15%) for all sales in the European Union.

Beginning January 1, 2015, the following VAT rates (current as of November 30, 2014), based on the customer’s country of residence, will be applied:

Country VAT Rate
Austria 20%
Belgium 21%
Bulgaria 20%
Croatia 25%
Cyprus 19%
Czech Republic 21%
Denmark 25%
Estonia 20%
Finland 24%
France 20%
Germany 19%
Greece 23%
Hungary 27%
Iceland 24%
Ireland 23%
Italy 22%
Latvia 21%
Lithuania 21%
Luxembourg 17%
Malta 18%
Netherlands 21%
Poland 23%
Portugal 23%
Romania 24%
Slovakia 20%
Slovenia 22%
Spain 21%
Sweden 25%
UK 20%

Note that VAT rates in EU member states may change at any time depending on relevant legislation. The standard VAT rate is used for all EU countries and Luxembourg has approved a higher VAT rate effective January 1, 2015.

For me as an Austrian this means – at first glance – that I will be paying 5% more in VAT. And not just for software, but for all digital content from Apple including music and movies. You can see this change on the invoices that iTunes mails you.

On this invoice, dated January 1st there is still the old 15% rate mentioned for a movie rental.

15_percent

And two days later, the new rate is applied for a music purchase:

20_percent

Another welcome change is that those are now proper invoices. In the past you would only get emails with subject “Ihr Beleg” omitting any tax info. Now you get “Ihre Rechnung” and it does mention the included tax amount.

no_invoice

This change in billing much simplifies getting VAT refunded on iTunes purchases you make for your company. Now, I can expense app purchases normally like everything else and – if purchases are made for my professional work – I can get the mentioned VAT amount refunded.

Good for Business

Previously, if you wanted to get “proper invoices” or to buy tax-free under the EU reverse charging scheme you had to place your order by phone with Apple. I know somebody who actually jumped through these hoops so that so that he didn’t have to pay VAT on the annual fee for the Apple developer program. But – in practise – few people would concern themselves with this.

The new system increases prices for consumers by a small amount. But at the same time it makes company purchases of software cheaper as it is now much simpler to get your VAT refunded. You can now buy your apps (for your business) the same way you do as a consumer, online.

While VAT-paying consumers will have to pay slightly more for their apps, I don’t see anybody buying less on iTunes because of the tax hike.

]]>
https://www.cocoanetics.com/2015/01/happy-new-vat/feed/ 1 9410
iPhone Downsizing https://www.cocoanetics.com/2014/12/iphone-downsizing/ https://www.cocoanetics.com/2014/12/iphone-downsizing/#respond Thu, 04 Dec 2014 15:05:46 +0000 http://www.cocoanetics.com/?p=9393 I admit it, I belong to the group of people who use their iPhone singlehandedly. That is, a single-thumb-typer. Also, I scoffed at the idea of a super-sized iPhone 6+. But I am somebody to apply the scientific method for examine the validity of your own beliefs. So I purchased and used an iPhone 6+ (Gold, 128 GB) for almost 2 months. Here’s my verdict as well as an intro do size classes.

My iPhone 6+ evaluation started on October 7th when I unboxed it. I had been making fun of people who made phone calls with Samsung tablets at their ear, now I had become one of these ridiculous people myself.

The main reason for me wanting to try it out was that I wanted to see how it handles. The second main reason was that I wanted to see the optical image stabilisation first hand. On the latter I can say that it is quite brilliant as you can see in this test video which I shot from a moving car. Look at how the dirt and sports on the windshield are moving while the UFO moves very little.

From a usability point-of-view the iPhone 6+ turned out to be painfully large. I do not have small hands, but I cannot reach the top left keyboard buttons when thumb-typing while holding the iPhone cradled between the base of my thumb and the opposing fingers. That turned out to be a deal-breaker for me. You do get used to having more screen real estate to an extent that every time I picked up my 5S (which I kept for running) it felt tiny to me.

Temperatures dropped and so I went running with my iPhone 6+ in a pocket of my running jacket. There I found another weak point of the device. You can ruin the optical image stabiliser. After a single run I would no longer be able to take sharp pictures, because the motion-stabiliser would go vibrating around like crazy. It might just be a coincidence but this experience causes me to strongly advice against taking the iPhone 6+ for running. So I bought Apple Care and got it exchanged.

Using the iPhone should not be painful and cause you to fear for it. So I exchanged it for an iPhone 6.

The iPhone 6 is still slightly larger than the 5S, but within reason. I can still thumb-type as I was able to. And the optical motion-stabilization would be nice, but in practical use you rarely miss it. How often do you type versus how often do you film?

Size Classes and Orientation Deprecation

iOS 8 added something nice to support so many different device sizes: Size Classes. When enabled you can lay out your universal app UI in a single story board. The size classes have a horizontal and a vertical component that gets adjusted by the system based on the device orientation.

Size Classes

As you can see the iPhones have Compact/Regular in portrait and Compact/Compact in landscape orientation. With one notable exception. In landscape, the iPhone 6+ has a regular size class. This is the reason why it shows more UI on the springboard and the mail app.

You can see this for yourself by creating a new single-view app and adding this code to the ViewController:

- (void)viewWillAppear:(BOOL)animated
{
   [super viewWillAppear:animated];
 
   NSLog(@"%@", self.traitCollection);
}
 
- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection 
              withTransitionCoordinator:(id)coordinator
{
   NSLog(@"%@", newCollection);
}

This code logs the trait collection when the view appears as well as whenever it changes, due to you rotating the device. A word of warning: the willTransition… is only called on view controllers if the trait collection actually changes. So on iPads – since both size classes are always regular regardless of device orientation – you never get this call. For this purpose there is a second new method:

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator
{
   [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
 
   [coordinator animateAlongsideTransition:^(id context) {
      // implicit animations to be in sync with transition
   } completion:^(id context) {
      // code after size change
   }];
}

Another word of warning: as soon as you implement this method, iOS will no longer call the willRotateToInterfaceOrientation:duration: method on which we have relied for many years. Apple wants to tell you something with this: you should no longer care about interfaceOrientation. In fact – if you set the deployment target to 8.0 or higher – all these rotation methods and property will be warned about as being deprecated.

There are however still some cases where device orientation matters, or where you might want to keep backwards compatibility. One scenario I encountered is when dealing with setting the video orientation on a video preview layer. I needed to do this on the barcode scanner I built for the ProductLayer SDK.

The only workaround I found was to use the application status bar orientation instead.

- (void)viewDidLayoutSubviews
{
   [super viewDidLayoutSubviews];
 
   // using size classes does not send the willRotate... 
   // any more, so we need to updated here
   UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
   [self _updateConnectionsForInterfaceOrientation:orientation];
}

Having to resort to this worries me a bit, because there might be situations where the status bar orientation is not getting updated or be UIInterfaceOrientationUnknown. In my tests so far I found no negative side effects, if you know of any please let me know.

If you have the luxury of being able to require iOS 8 you can click together wonderful interfaces in IB. You can specify which views should appear and which layout constraints should apply in which combination of size classes. The following two screenshots are from such a single-storyboard app I am developing for prod.ly.

Hungry Scanner Landscape  Hungry Scanner Portrait

Note how the large round buttons move to where there’s space in the UI. This took me a day to figure out. But now that I know how to use this I would never do it in code in the future.

There are still a few bugs in size classes. I reported one earlier when using the new popover presentation which automatically presents a view controller either modally or in a popover. But if you stick to the normal modal presentation segues you should be fine.

Conclusion

Size classes are shaking up the previous way we did interface orientation. If you want to use the goodness of a single storyboard for all devices you have to require iOS 8. Having built an entire app on that I can say that this is truly awesome.

When implementing adaptive user interfaces be sure to test on multiple size simulators and – where possible – also on the 6+. But do you really need an iPhone 6+ as your main carry phone? I don’t think I do, as the iPhone 6+ simulator supports size classes just the same as the hardware. In my opinion the iPhone 6 represents the ideal sweet spot.

]]>
https://www.cocoanetics.com/2014/12/iphone-downsizing/feed/ 0 9393
Xcode 6 drops armv7s https://www.cocoanetics.com/2014/10/xcode-6-drops-armv7s/ https://www.cocoanetics.com/2014/10/xcode-6-drops-armv7s/#comments Fri, 10 Oct 2014 09:35:35 +0000 http://www.cocoanetics.com/?p=9330 The latest Xcode update no longer builds for the armv7s architecture by default. Is it planned obsolesce or an oversight?

The current Xcode 6 defines ${ARCHS_STANDARD} as armv7, arm64. Also whenever you update Xcode it keeps pestering you to remove your own definition of what architectures to build so that it can decide this for you. If you give in to this insisting then you find that you’ll no longer build your things for armv7s.

The armv7s instruction set is found in Apple’s A6 (iPhone 5) and A6X (iPad 4) CPUs. The following Apple A7 (found in iPhone 5S, iPad Air, iPad Mini Retina) already had moved to 64-bit architecture arm64.

When Apple added support for building armv7s to Xcode they confused quite a few developers who were using binary builds of third party libraries, like Google Analytics. In order to build an app’s architecture slice the linker requires the same architecture also to be present in all linked static libraries. Developers had to remove armv7s support from their apps while the third parties where struggling to update their binary builds to add the new architecture.

That was not a real issue, because A6 would run armv7 code just fine, albeit with a few less optimizations. Nevertheless it is a bit unsettling if suddenly your app does not build any more with Xcode outputting a linker error about a missing architecture, just because you updated your Xcode.

Missing armv7s architecture

The fix is quite simple. As an app maker you can simply go with Xcode’s recommendation and remove your override on the Architectures build setting. If this setting is shown in bold then you can revert it to the project-wide setting with CMD+backspace.

As a component vender you should probably go a different route. You want to leave the decision to support or drop armv7s to the developer. And therefore you should add the armv7s architecture to all your static library and framework targets for it to be included.

Adding armv7s

The developer’s linker will then pick out the architecture slices it needs for the app. You can see that certain architectures are included if you build with “Build Active Architecture Only” set to now. The default for Debug builds is to have this on Yes on only build for the current device or simulator architecture. Release builds have this set to No and thus all architectures mentioned are going to be built.

In the build log for the static library target you will have one line for the library for each architecture, followed by one line combining the individual libraries into one “fat” universal library.

Screen Shot 2014-10-10 at 10.53.48

Another method to verifying what architecture slices are present in a file is to use the file command:

file libBarCodeKit.a 
libBarCodeKit.a: Mach-O universal binary with 3 architectures
libBarCodeKit.a (for architecture armv7):	current ar archive random library
libBarCodeKit.a (for architecture arm64):	current ar archive random library
libBarCodeKit.a (for architecture armv7s):	current ar archive random library

This library contains the slices for all relevant mobile architectures. If you are building a static framework or universal static library for binary distribution you would even include the simulator architectures. This looks like so:

file DTRichTextEditor 
DTRichTextEditor: Mach-O universal binary with 5 architectures
DTRichTextEditor (for architecture armv7):	current ar archive random library
DTRichTextEditor (for architecture armv7s):	current ar archive random library
DTRichTextEditor (for architecture arm64):	current ar archive random library
DTRichTextEditor (for architecture i386):	current ar archive random library
DTRichTextEditor (for architecture x86_64):	current ar archive random library

To conclude, Apple is again nudging us in a certain direction: to stop supporting armv7s. This architecture has been superseded by powerful 64-bit CPUs in two product generations by now. Yet, as a component vendor I believe that we should still include the armv7s slice to leave the choice up to the app developers.

]]>
https://www.cocoanetics.com/2014/10/xcode-6-drops-armv7s/feed/ 5 9330
iPhone 6+ https://www.cocoanetics.com/2014/10/iphone-6/ https://www.cocoanetics.com/2014/10/iphone-6/#comments Tue, 07 Oct 2014 21:55:13 +0000 http://www.cocoanetics.com/?p=9320 I had the box containing my iPhone 6+ sitting on the counter for 8 days. I saved it as an incentive for myself, for after doing a good job at Mobiconf.

The other reason was that I got it from my cellular network provider but couldn’t order a cover for it yet. On my way home from the conference I spotted – and procured – a red leather cover. I wouldn’t have allowed myself to open the box without having a cover to protect the precious thing.

I was hesitant to make a decision for either iPhone 6 versions because I had been using my iPhone 5S for tracking my running and cycling activities. In the Runtastic Sports Armband it had the perfect size. Since I like to do video projects I was also intrigued by the optical image stabilisation present only in the 6+.

I had long held the belief – like most true Apple fanboys – that every user of phones larger than the iPhone 5 must be stupid. Haha, just look at them taking phone calls on their tablets! So part of the experiment is for me to reevaluate this belief. Maybe if I use it for some time I will get used to it and then pretend that I never wanted something smaller.

My friend Christian solved the “too-big-for-pocket-conundrum” in an ingenious way: he modded his trousers so that the iPhone 6+ would fit inside upright. Since I am usually also carrying a wallet with me, I don’t like to put all those in my pockets anyway. So, instead I am lobbying with Apple to introduce a new category on the Apple Store: Man Purses!

Modded 6+ Pants
Watch my unboxing video to hear my conclusions. Enjoy!

Update: Made a test video showing off the amazing optical motion stabilizer of the iPhone 6+. Look at the reflections and spots on the windshield in relation to the “UFO” to see the impressive effect.

]]>
https://www.cocoanetics.com/2014/10/iphone-6/feed/ 1 9320
Happy New Year, Young Steve Jobs! https://www.cocoanetics.com/2014/01/happy-new-year-young-steve-jobs/ https://www.cocoanetics.com/2014/01/happy-new-year-young-steve-jobs/#comments Wed, 01 Jan 2014 19:51:54 +0000 http://www.cocoanetics.com/?p=8922 When toymaker Legendary Toys announced that they’ll do a new run of Steve Jobs action figures I know that I had to have one. There once was a very life-like “Old Steve Jobs”, but they got legal problems with the SJ estate. This is also why some of the figures you can still get are named “CEO Action Figure”. They look more or less like Steve, but they don’t dare to use the name.

Then there was the LEGO Steve Jobs, I’m only mentioning because it made me laugh out loud. How much would you pay for that?

LEGO Steve Jobs

“great new condition

Cheap Shipping. Must buy for any apple fan!

limited quantities. buy today!”

Some people also got the big head version of the old Steve. Frankly if he wasn’t holding an iPhone then I would not recognize him. Another disadvantage is that you cannot pose him, only exchange the hand amongst a few alternatives.

Big Head Steve Jobs

When in icons announced that they will be doing a Steve Jobs action figure, Apple immediately threatened a law suit. So they quickly shipped a few they already had in the pipeline and then put out an announcement where they state that they had experienced “immense pressure from the lawers of Apple and Steve Jobs family”.

Some time passed and then another company, Legendary Toys, figured that if they were quick they could also sell a few of the Steves before being sued out of existence. They are now offering two young Steves and one old one and so far there was no report of any legal action against them yet. Possibly being based in Japan instead of the US might work in their favor in this matter, since using a person’s name and likeness is apparently US state law.

On January 24th, 2014 it will be the 30 anniversary of Steve Jobs unveiling the Macintosh computer. Legendary Toys did not advertise the old Steve and so when I ordered a young one I thought this was the only one available.

I did an unboxing video for your viewing pleasure.

//www.youtube.com/watch?v=kYJuidKFCPo

Steve will get a place of honor in my collection of iOS devices. I am absolutely not ashamed of playing with this awesome action figure.

]]>
https://www.cocoanetics.com/2014/01/happy-new-year-young-steve-jobs/feed/ 4 8922
Apple Product Non-Placement https://www.cocoanetics.com/2013/07/apple-product-non-placement/ https://www.cocoanetics.com/2013/07/apple-product-non-placement/#comments Tue, 09 Jul 2013 14:25:31 +0000 http://www.cocoanetics.com/?p=8453 A German TV movie (based on a Katie Forde novel) has a scene where a protagonist views from photos taken with a Canon camera. Though there are several things wrong here that cause Apple buffs to wince.

Consider this picture for a moment and tell me all that you see wrong here.

Canon with iPod Plug

What made me chuckle in particular was the obvious use of a white Apple USB cable that this guy somehow managed to plugged into his Canon DSL. Erik Haselsteiner identified the camera brand from the neckband. Since when does Canon manufacture DSLs that have a 30-pin plug?

The second funny part is that the glowing Apple logo is hidden by a metal-colored sticker. But then there is a bowl of Apples in front of the sticker so that you only see a part of it. So you hide one overly bright apple and replace it with several not-so-bright ones.  Then it still counts as an Apple(s) computer, even for those who wouldn’t have noticed it.

The cable goes nowhere… wouldn’t you plug in the USB cable on the side your MacBook where you have placed your camera? Rather in this picture it looks like the cord is plugged into the bowl of Apples. iCloud upload!

As far as I am aware Apple never does any paid product placements, especially not in German TV productions. There might of course be totally rational explanations for these oddities that don’t have anything to do with product placement, or Apple not allowing the use of their logo in a movie about love.

The glowing Apple logo might have thrown off the light composition of the scene which is supposedly only illuminated by this white lamp. Without this lamp you would probably not see the black camera on the dark wood desk.

The USB cable had to be one borrowed from an Apple device because the white makes for a nice contrast to the table. The original USB cable most likely is black and would have not produced this result in visibility. This way the camera can be made out and also be seen as being connected. The 30-pin connector seems to be sitting in the slot where usually the CompactFlash card is meant to be inserted. Finally the bowl of Apples is only meant to hides the ugly sticker which has a slightly off color, much cheaper than to erase the LED logo in post production.

I think Apple should allow regulating the brightness of the lid logo, because then we would probably see less stickers covering the logos for cinematographic reasons.

]]>
https://www.cocoanetics.com/2013/07/apple-product-non-placement/feed/ 3 8453
I’m a Game Studio! https://www.cocoanetics.com/2013/06/im-a-game-studio/ https://www.cocoanetics.com/2013/06/im-a-game-studio/#comments Fri, 21 Jun 2013 20:17:54 +0000 http://www.cocoanetics.com/?p=8401 Until today I had only every tried my hands on a UIKit-based game, a clone of the Wheel of Fortune game show. Unfortunately Sony Entertainment asked Apple to ban this from the app store. So I had to take it offline.

Whenever an independent game developer had a success I would feel jealousy boil up in my stomach. If only I could also make games. But I was too busy mastering Objective-C and Apple’s frameworks (on iOS and Mac) to be able to devote time to learning Cocos2D.

This has entirely changed last week, when Apple announced the new Sprite Kit framework.

After viewing the two sessions from WWDC 2013 dealing with the new framework I felt ready to try my hands at something easy. I thought about doing a Newton’s gradle or a Flipper, but then my mind got stuck on the very first physics-based game I ever played: Lunar Lander.

//www.youtube.com/watch?v=IzdxjaVm_HQ

This was a coin operated game which was a big hit in arcades. Yes those where the times before there were any consoles to play at home.

Game Making Experiment

I wanted to see what I could whip together in a day being a total newbie when it comes to game frameworks. So I took the lunar lander idea and googled for some inspiration. I found a couple of nice images to serve as my “programmer art”, which I treated with Pixelmator.

The Lander

When it came to tell the physics model about the outline about the vehicle I found myself drawing the outline shape with PaintCode, which helped me find the coordinates of the points that span up the shape.

Which reminds me that a long time ago I had suggested to the makers of PaintCode to have a Quartz output mode. Exactly for this kind of scenarios where you don’t want to go to the higher level NSBezierPath or UIBezierPath but stay on common ground.

I was stumped at first, because apparently having more than 12 points in the shape would cause an exception. But that got cleared up quickly by a helpful friend on the Apple developer forum.

PaintCode

Since the shape would need to be a CGPath to be working on iOS and Mac alike I opted to create the path in code from the points I had found.

- (CGPathRef)newPhysicsOutlinePathForScale:(CGFloat)scale
{
	CGSize textureSize = self.texture.size;
	CGSize scaledSize = self.size;

	CGFloat factor = scaledSize.width / textureSize.width;

	CGMutablePathRef mutablePath = CGPathCreateMutable();
	CGAffineTransform transform = CGAffineTransformMakeTranslation(-scaledSize.width/2.0, -scaledSize.height/2.0);
	CGPathMoveToPoint(mutablePath, &transform, 197*factor, 286.5*factor);
	CGPathAddLineToPoint(mutablePath, &transform, 172.5*factor, 295.5*factor);
	CGPathAddLineToPoint(mutablePath, &transform, 88.5*factor, 251.5*factor);
	CGPathAddLineToPoint(mutablePath, &transform, 8.5*factor, 26.5*factor);
	CGPathAddLineToPoint(mutablePath, &transform, 32.5*factor, 21.5*factor);
	CGPathAddLineToPoint(mutablePath, &transform, 337.5*factor, 20.5*factor);

	CGPathAddLineToPoint(mutablePath, &transform, 348.5*factor, 26.5*factor);
	CGPathAddLineToPoint(mutablePath, &transform, 264.5*factor, 191.5*factor);
	CGPathAddLineToPoint(mutablePath, &transform, 232.5*factor, 248.5*factor);

	CGPathCloseSubpath(mutablePath);

	return mutablePath;
}

Note the transform which lets me use the points as PaintCode told me, even though the origin of the path is supposed to be in the center of the object. The factor is necessary to update the physics body if the scale of the object is modified.

A full tutorial will have to wait until the fall. But I think I am not breaching the NDA if I show off my result at the end of the day.

//www.youtube.com/watch?v=yFXUROMyX28

There is still a ton of work missing if this is to become a full game: fuel consumption, uneven terrain, dying through crashing or leaving the screen and so much more. But finishing the game was not the point of this exercise.

Conclusion

I find that having an Objective-C based gaming framework helps us to get an extremely fast start. And even a gaming n00b like myself can produce impressive results in very short time. This move is probably going to be one of the smartest strategic decisions that Apple revealed at this year’s WWDC. Tearing down all barriers to entry for budding developers of 2D games like this strengthens the Apple platforms like few other moves could.

Of course just having a powerful framework does not a Game Studio make. You need to have a pro do the game design, make the artwork, take care of the sounds. Making successful games usually is a team effort nowadays. But let me say that Apple is reducing the friction like stepping on a bar of soap in the shower.

Can you imagine yourself taking up a new hobby? Maybe something related to making 2D games? Now I can!

]]>
https://www.cocoanetics.com/2013/06/im-a-game-studio/feed/ 11 8401
iOS 7 Icon Squircle https://www.cocoanetics.com/2013/06/ios-7-icon-squircle/ https://www.cocoanetics.com/2013/06/ios-7-icon-squircle/#comments Thu, 20 Jun 2013 07:02:05 +0000 http://www.cocoanetics.com/?p=8384 Apple is not only revamping the look of iOS 7 apps to be kind of flat, also most app icons will have to get a redesign.

Over the recent years we could see a trend that some app designers felt that they had to add a border to their icons to make them “pop more”. So they they enabled the “Icon already includes gloss effects” setting to avoid the application of the trademark shine and used a photoshop template for make the border fit.

We followed this trend with the icon design for our most recent app Urban Airship Commander which also has a chrome border. Because frankly, without this border, we feared that a phosphorous  radar screen might look too boring…

Technically icons are square images which get cropped by static square with rounded corners. iOS (or a mask image when shown on the web) took care of this cropping and so the only decision you were left with as an app maker is whether or not you wanted to enable shine via info.plist.

Sir Ives has decreed that a simple corner radius is too simple. The outline of iOS 7 icons will follow a complicated formula that is probably rooted in some form of a numeric kabala which believes that certain mathematic proportions yield harmonious results.

Marc Edwards, Director and Lead Designer at bjango, revealed the formula in a tweet. He used the OS X Grapher tool to tweak the formula until it fit perfectly.

iOS 7 icon mask

This shape is called a Superellipse. More precisely it is a Squircle which is a “mathematical shape with properties between those of a square and those of a circle” which is a special case of Superellipse. (Thanks Wikipedia for allowing me to sound so smart)

Of course we are not satisfied with merely reading René Ritchie’s regurgitation of Marc’s tweet, we like to reproduce the results.

Wolfram Alpha

Looking at the formula we see two parts with vertical bars, those mean that their contents are to be taken as absolute values. In C we’d use the fabsf(x) function for that. If you confuse these with normal round brackets then you will only get the upper right quadrant of the icon correct, where x and y are positive.

A simple way to reproduce the output is to input the formula into WolframAlpha which happily graphs it for you:

Wolfram Alpha Squircle

Unfortunately you need a Pro account to be able to export anything from Wolfram.

The second method, used by Marc on his Mac, is to use the Grapher tool which you also have on your Mac, probably without even knowing about it.

Grapher Tool (OS X)

Launch your Grapher via Spotlight or from the Utilities folder in your Applications. Create a new 2D Graph with the Default template.

Adjust the range of the x and y axis to go from -70 to +70 by double-clicking on each axis and entering the extents.

Next you enter the formula:

  1. If it is not visible show the Equation Palette from the Window menu
  2. Delete the y= from the formula
  3. From the Standard tab pick the Absolute Value box, which is the one with just two vertical bars
  4. In the box, enter x/60, note how the display changes into a horizontal fraction bar as soon as you type the slash.
  5. Move the cursor to the right of the box
  6. to get into the exponent, hit the ^ and type 5 there, cursor to the right goes back to the normal level
  7. enter a plus and repeat 3-6 for the second part for y
  8. finally add the =1

Note that Grapher will not keep a 1:1 ratio if you horizontally or vertically stretch the chart window. You can always push the “Equalize Axes” button to restore the 1:1 ratio. But generally you want the be the right-hand graphing area to be a square as well.

iOS 7 Squircle in Grapher

As a free bonus you can export this graph as EPS or PDF vector graphic. This way it can be imported into an overlay into your favorite illustration application.

You can impress your designer friends if you practice how to enter the formula in Grapher and produce the EPS file for them to use in PhotoShop right in front of them right on their Macs. “Oh, you didn’t know you had Grapher? I use it all the time!”

Conclusion

The new shape of the iOS 7 icons will make it impractical to have a framing chrome border around your icons, as long as you are looking to have your app support both iOS 7 and earlier versions. But even if you decided to support iOS 7 only you still will find that such a border will look weird on the redesigned iOS 7 springboard.

You will probably find that even though you now know how to get the curve that defines an iOS 7 icon outline this doesn’t help you. The Squircle is such an organic and fluid form that it will make any chrome border look weird.

We all will have to redesign our icons with a flat look that works without a border.

]]>
https://www.cocoanetics.com/2013/06/ios-7-icon-squircle/feed/ 61 8384
And it is Flat After All! https://www.cocoanetics.com/2013/06/and-it-is-flat-after-all/ https://www.cocoanetics.com/2013/06/and-it-is-flat-after-all/#comments Tue, 11 Jun 2013 13:53:07 +0000 http://www.cocoanetics.com/?p=8374 On the first day of WWDC we finally got to see the result of Jony Ives’ plastic surgery on iOS 7. The new approach tries to build on familiar actions, but simplifying their visual representation. As is normally the case with such a broad redesign, it is polarizing.

Some individuals are already calling it a failure, while others feel that this again results in a leap ahead  that reasserts Apple’s position as a leader.

Installing

Let me stress that right off the bat: iOS 7 is not ready to be installed on your main devices. There are known issues like tethering not working. And many other glitches waiting to stump you.

If you are a masochist, then please by all means, torture yourself. If not, then patience is a virtue. I for one bought a fresh cheap iPod Touch to experiment with. And I will hold of with putting it on my production devices until some later stage of the beta process.

For installing you best add the device’s identifier to your developer account first before doing anything else. On the first day the activation server kept failing, claiming that my device was not registered. But the next morning activation went right through. Some developers reported the same activation problems, a few had gotten incomplete activations.

Those incomplete actions allowed usage of the device in general, but anything using push notifications would give you a message to “Please Connect to iTunes”.

While experimenting around I also found that you can downgrade from iOS 7 to iOS 6 via the DFU mode. But now with the activation server working again, you can simply sign into WiFi and activation should go through.

Killing the Rounded Rect

The biggest visual impact stems from basically killing rounded rectangles everywhere. Gone are borders with round corners to signify that UI elements are somehow interactive. Instead you are now supposed to pick a color to communicate that the user can “tap here”.

In Apple’s stock apps this color is uniformly hyperlink blue, which makes me long for some additional decoration for my eye to latch onto. But who underlines hyperlinks nowadays? Not unless you want to look totally 80s. Which would have been counterproductive for a “UI Refresh”.

The usual problem with such a drastic visual change is that it risks also killing the feeling of familiarity that you feel for the OS. But I found that while the eye is struggling to get a grip on the new look, your haptic memory remembers the moves. You tap the navigation back “button” just as intuitively as the much used “Next” in the upper right hand corner.

I find it fascinating to have this demonstrated to me with such amazing clarity: apparently you can totally change the UI, but if you keep the interaction paradigms the same users will not get lost.

Shiny, No Shadows

In the fake textured world of iOS 6 you would generally assume a virtual light source coming from the top. So all shadows would be below items to communicate depth. Navigation and tool bars would have gradient and gloss to pretend to possess a concave surface.

The new flatness also means that shadows have been abolished throughout. Previously designers could help yourself over a poor choice of contrasting colors by adding shadows. Light text on a light background might become somewhat readable by adding a blurred dark shadow.

App names on the new Springboard don’t have any shadows any more. Which means that if you pick a wallpaper with bright parts, it becomes harder to read the names. Granted that might be a minor issue, easily remedied by using darker images for your wall paper, but I am pointing this out because iOS 7 will force designers to choose contrasts and app’s color schemes with greater care.

New Interaction Paradigms

Oh oh. I just said that one shouldn’t change the look and the feel at the same time. However there is a big exception to this rule  I found. It is apparently ok to broaden the interpretation of the user’s actions. To give them a new wider meaning.

For example: on iOS 6 you would have the trademark slider for unlocking the device as well as mini-sliders on the icons of individual entries visible for notification center. For a Passbook boarding pass you could drag the icon over to the right to go straight into the app in charge of the pass.

The slide to unlock slider would also possess a knob for dragging. As would the slide-to-power-off slider. Those knobs are more three-dimensional rounded rects and have been killed also. But that only affects the visual representation, not the underlying discovering of the user’s intent.

Having a knob on the left side of the screen would hinder left-handed people. A right-handed person could simply reach over and pull the knob with the thumb. But the area close to the base of the thumb is a little harder to interact with.

We want to somehow lock the screen to prevent accidental prank calls while in pocket. And we don’t want to enforce a passcode lock for everybody to achieve that. So the question is: how can we tell if the user wants to unlock the screen. There has to be some gesture that we can measure. If it appears to be intentional then this should result in unlock.

The previous paradigm has been to give the user a small target to hit (making it harder to do in your pocket by accident) and to require dragging said target over a relatively long distance. That means this unlock gesture had two dimensions: hit area and drag distance. Two things we could fairly easily measure and ignore all interactions falling outside these thresholds.

On iOS 7 you can drag the lock screen from any point towards the right. If you drag more than half the width of the screen then this is interpreted as intentional unlock action. Anything less causes the screen to bounce back, you didn’t really mean it.

At first glance this seems to work like a scroll view, but there is a difference. With scrollviews you can give the content a momentum with the flick of your finger to have virtual inertia perform the scrolling for you. Not so on the lock screen. If you flick that you don’t achieve an unlock. Flicks could easily be unintentional.

If you happen to drag in the area covered by a notification center message, then this has the same effect as described above for the boarding pass. You open the relevant app. Everywhere else you unlock.

New Look, Familiar Operation

After I managed to activate my iPod Touch I set up my e-mail server to see how well I would be able to deal with the usual morning onslaught of mails. And to my delight I found that all the usual interactions I am performing in mail would still work.

I would read mails, archive the ones to keep, trash the ones to delete. Toolbar icons are flat, bar button items are neither buttons nor are they in a distinct bar. Yet, having everything in a familiar location made my feel right at home.

You could even go as far as saying that if you were able to operate iOS 6 more by feel than by parsing visual cues, then you will by very thankful to Apple to having kept everything working like it used to.

My biggest worry at this point is that for a while after launch all previous apps will look like crap next to the new and shiny. Indeed I installed an app of our – iWoman – on my touch to see how this behaves. Generally well, but were some visual problems.

The coming-in animation has some visual artifacts, but that might be due to the early stage of iOS. Another problem I found was that the tint color for the navigation bar revered to standard blue while all the buttons kept their purple tint. I would have to investigate further to know who to blame for that. Apart from that the app seemed to work like you are used to.

iOS 7 does not change the look of apps compiled with older SDKs. Are to put it more succinctly: it’s not supposed to. But as a reality of Beta versions there are side effects.

Conclusion

Jony Ive gave iOS 7 a visual overhaul that dramatically modernizes the look of the OS. At the same time you fill still get a familiar feeling when using it because for the most part the kinds of interactions you were used to from iOS 6 are still in place.

In some areas – like the lock screen – the underlying paradigm gets a wider meaning. In others – like the new app exposé you have a new gesture to delight in. You kill apps no longer by pushing the X, but by flicking their screen shot upwards, like a rocket launcher.

If anything then iOS 7 is more mature, serious and departs from whimsy that tries to copy the real world. That is not to say that it has become boring. Just the opposite: new SDKs (like physics built into UIKit) allow for eye-popping effects like parallax wallpapers.

When iOS 7 comes out in the fall you will feel like you have gotten a new phone, but without a feeling of being lost. You’ll feel right at home.

]]>
https://www.cocoanetics.com/2013/06/and-it-is-flat-after-all/feed/ 10 8374