The last few days were so exciting: Steve Troughton-Smith dug into a mysteriously early public release of HomePod's firmware and found proof that a new iPhone Pro - codename D22 - will have face unlock, Guilherme Rambo discovered the actual device icon confirming the very much speculated edge-to-edge design, and from there Allen Pike made some incredibly thoughtful mockups of how iOS could change to better suit the new form factor, and Mad Rudberg built upon his work with 4 hypothetical designs for the top notch and the bottom of the screen.

I've played along, retweeting and commenting. Federico Viticci is right:

"I haven’t felt this excitement around the new version of an iPhone from the design and developer community in years."

All this time, while appreciating the amazing investigative work and design skills displayed by the tweets and blog posts linked above, I also felt a little uneasy... I kept thinking about what Phil Schiller said to Gruber during The Talk Show Live from WWDC 2017:

"At the end of the day, it’s really great when your team has worked so hard... a couple years of your life on something... and you get the opportunity to have Craig, me or someone else present it..."

Craig Federighi was even more explicit:

"They get really angry when one of these [leaks] happens."

And now I wonder: what have I gained by knowing about this new design and exciting features 1.5 months earlier? Would I have been happier knowing most details of the iPhone on January 8, 2007? Is all this speculation fair to the people working so hard on these products we love so much?

Let me be clear: I don't criticize Steve, Guilherme, Allen and Mad for what they have posted in the last few days. I absolutely don't. I have retweeted their work, thought about it more than it was reasonable and publicly commented their findings as facts (I believe they are), so if there's guilt in this process, I'm no innocent.

The fact is, Apple events are so well crafted that, if you're into tech and don't know about a product in advance, they feel like magic. Honestly, I felt a little less magic and excitement in the last few years, because I knew so much in advance. Boy, in 2014 I told a friend a new programming language was coming days before WWDC, and I'm not good at predicting things...

I know it's impossible to avoid leaks, both from Apple's standpoint - no matter how hard they try, it's still a huge operation with thousands of people involved and tens of millions of devices manufactured before launch - and from mine as a devote user (should I disconnect from the Internet for three months? Stop reading the websites I enjoy the most?). I am also aware that this scrutiny comes from a deep love for Apple... it's doubtful things will change in the future, I don't have a solution to suggest and probably most people would not like more secrecy.

Still, I really feel for Apple's Teams working on new products (just think at the poor guy who published the HomePod firmware 😱), and it would be so nice to feel the same magic again during a keynote...



Nǐ hǎo Walk More 1.2

After an amazingly quick Sunday app review, Walk More 1.2 is here. Download it for free and tell your friends about it!

This new version introduces two localizations, Simplified Chinese and Italian, and the possibility to brag about your steps count via the iOS share sheet.

A quick note that will probably be of interest only for other fellow developers: before submitting, I've noticed a warning in iTunes Connect regarding my in-app purchases. Turns out that consumable IAPs that remove ads need to be replaced, since Apple wants that kind of behavior to be restorable and available across devices, which completely makes sense.
So, I kept the good and great "tip" in-app purchases (changing their tiers to the alternate categories with round values in the process) and replaced the "small tip" with a new "remove ads" non consumable IAP before submitting version 1.2. The approval process went smoothly, even though after submitting I worried about the lack of a restore button, usually requested for restorable purchases (I'll add it in the next version, just to be safe).

After this minor update, I have quite a few ideas for Walk More's future, but they'll be put in the parking lot™️ for a while: my August will be completely focused on the development of Tasktic 2.0.



Core Data + cloud sync = dilemma

My friend Becky recently wrote a post about the dilemma she's facing with a new, interesting app she's making.

She likes Core Data, and would like to use it for her project; she also wants to add sync capabilities, as that's a requirement for most modern apps. 

Here lies her dilemma. And my dilemma. And many developers' dilemma... There's no clear path towards a Core Data app with cloud sync.

Becky doesn't want to use Core Data + iCloud since it's deprecated. I might add, I don't want a friend to use it, because I value her sanity... when I was setting up Tasktic's sync mechanism, I spent 4 months and 3 complete rewrites before realizing my code wasn't the problem: it was the actual API that was an almost un-debuggable black box that sometimes, very rarely but still too often, lost an object during the sync process with apparently no reason, and no way to get it back.

A few weeks ago, I suggested Ensembles to Becky, since it was the solution I adopted for Tasktic and given how well it behaved for me, restoring my sanity after those awful 4 months. But the free version of Ensembles still uses Core Data + iCloud under the hood*, so it's not very future proof given the deprecation mentioned above, and on top of that there's a more modern, faster solution provided by Apple that everybody want to use: CloudKit.

CloudKit is very tempting because everyone has experienced how fast and reliable it is with and for macOS and iOS; the most important thing for an app that sync is to never, ever lose users' data, and CloudKit passes that test with flying colors.
It is also very modern, with private/public data, web support via CloudKitJS, and most important, it is what Apple has chosen for the future, and following Apple's lead is always a good idea.

The thing is, in order to get CloudKit to play nice with Core Data, you have to write most of the sync logic yourself, converting NSManagedObjects to CKRecords, handling updates, reacting to duplication, etc. It can be done, and many developers do it "by hand".

As Becky notes, it can also be done via libraries like Seam3, which is currently the best open source implementation I found (and I looked really long and hard) of a Core Data - CloudKit bridge, albeit only if you don't have many-to-many relationships in your schema...

The fact is, I really don't want a dependency for my sync code anymore, especially when starting a new project. If I were willing to accept the risk of my sync code being abandoned someday in the future, I might as well look into Realm (not that such a loved mobile stack is going anywhere, but as we've seen in the past, companies get acquired, or sometimes move on to different projects...).

Where does this leave us? To Apple, of course.

Apple made such an amazing object graph and persistence framework with Core Data, and a fantastic syncing backend with CloudKit. They never connected those dots officially, though.

Becky's post reminded me of something I really wanted (needed) for a really long time: an Apple sample project showing their idea of the best, most modern and Swifty implementation of Core Data for local persistence + CloudKit for sync implementation.

This is a step they really should take: while it's great that they provide sample projects for ARKit, data persistence and sync is top priority for a lot of developers, and it would only be appropriate for Apple to show how they think a "great" implementation should look like.

So, if you have a friend who works at the best fruit company in the world, pass along the message: the indie developer community, and especially us beginners, would love some help in this area!


* This is true only if you want to stick with native cloud solutions, like I prefer, otherwise you can also pair Ensembles with your own backend or use Dropbox: the great thing about Ensembles is that it's actually backend agnostic, but for CloudKit you need Ensembles 2, which isn't free and so it's not an option for most indie developers like myself.



An iPad, multiple users

This year Apple gave *a lot of love* to iPads: we're all in awe for how well they've implemented drag and drop, and I'm personally even happier for system-wide markup. 

The new iPad Pro 10.5" is probably the best incarnation of the most versatile tablet form factor, and the combination of a Dock and an app switcher that both feel very Mac-like and platform native at the same time made this WWDC one of the best Apple events ever for iPad users.

There is one thing, though, that iOS still misses, and it's something the operating system always had under the hood: the ability to allow multiple users to use the same device with a separate environment, giving each person in a family access to her own data, apps and settings.  They made something last year for education, but it was pretty limited in scope and a bit different from regular users' needs.

I am not saying that adopting multiple logins would be an easy feat for Apple, nor that it would be viable on all devices: since iOS apps save data inside their own app containers, I guess it would be a serious challenge for Apple engineers and app developers, and many devices haven't enough disk space to allow the comfortable coexistence of different people on one device. The list of problems wouldn't stop there: Touch ID would certainly be a requirement for quick user switching, inter-user document sharing would soon emerge as a need... the list of challenges would be long indeed.

Maybe more important than the technical reasons, which I believe Apple would be able to overcome in a reasonable amount of time if they decided to put their technical resources at work, I've read in the past that our favorite fruit company would never allow multiple users on the same iOS device, since iPhone and iPads are very personal appliances, and it's also good for business to have each family member to buy a separate one. This is an argument I don't buy: while it actually makes perfect sense for every person who can afford it to have a personal smartphone, for many households a tablet covers completely different needs, and actually most families can get by with just one iPad, and they are doing it right now.

I actually believe allowing multiple users on iPads would be great business for Apple, given how many old tablets are still around since they are already so good people don't see the need to update: make iOS 12 accept multiple users just on iPad Pros (they started at 32 gigs from the beginning and all have Touch ID and a lot of processing power), and you'll give families the most compelling reason to buy a much more expensive device (the 10.5" Pro costs almost twice as much as the new iPad, which by the way is almost too good for that price point, posing a challenge right there for Apple revenue, since it could be very tempting for most users to renounce Pencil support and some other advanced features in order to spend significantly less money).

This ship has sailed for iOS 11, but the silver lining is that now Apple has almost a year to make it happen the right way, just like they did with drag and drop.



App Store reviews, no authentication required

 A few weeks ago I've realized that Apple made a huge improvement to the App Store user review system, and I haven't seen it mentioned anywhere: we can now leave ratings and reviews without authentication! No password required, no Touch ID... just tap Write a review or simply the stars.

Maybe this has been around for a while and I didn't notice, but if you haven't realized this was possible too, there's never been a better time to leave a review for your favorite apps! 


Walk More


Walk More

As I announced earlier this week, I submitted a new app to Apple.

Walk More: powerful pedometer for step counting is my fourth app and it is available for download.

Walk More is a simple iPhone app with a dynamic dark look and lively orange accents. It helps you to keep track of:

  • Every step you take when you have your iPhone with you.
  • The distance you walk (in miles or kilometers).
  • How many stairs you climb (iPhone 6 or newer required).

You can set a daily goal, see your progress inside the Notification Center widget and review your statistics and top results with the help of simple graphs.

Walk More is free, and you should download it right now: seeing your progress every day can really help you achieving a healthier lifestyle!


WWDC 2017


WWDC 2017

Some thoughts on yesterday's Keynote and Platform State of the Union:

  • Appocalypse intro video: not particularly funny, but the ending message "Keep making apps. The world is depending on you" was a nice touch and a good way to kick off a 2+ hours developer (-ish) event.
  • tvOS: as expected, just the Amazon Prime announcement, but I'm pretty sure a 4K Apple TV is coming this fall, so yesterday wasn't this platform's day...
  • WatchOS 4: the new Siri face is very Googley, and the trippy one was designed by the same team who picked the name for macOS High Sierra; but the night notification containing a specific nudge ("you need a 12 minutes brisk walk to reach your goal") to fill the rings is a very nice touch.
  • macOS High Sierra: I kept thinking they were replaying the 2014 WWDC naming video, but they actually went with macOS version 4:20 🙄. Anyway, not a lot to see on a mature operating system (though, a tablet mode for iPad Pro connected to Macs would have opened the doors to some cool new workflows), but that huge blow at Google with Intelligent Tracking Prevention is Apple at its best: protecting its customers’ privacy. It’s worth noting that starting next year Apple will begin abandoning support for 32 bit apps (which is already true in iOS 11).
  • Macs: Kaby Lake across the line is good news, albeit a little late; getting iMacs to be able to execute (and create) VR content was long overdue. The iMac Pro sure will be a beast, and it's priced accordingly; I'm very happy to see Apple commit to a niche pro machine, but I have no doubt that its specs confirm that they were determined to drop the Mac Pro 'til a few months ago... and it's a good thing they reversed that decision, because a 5.000 $ (more likely, a 6.500 $) pro machine without user replaceable parts makes very little sense to me... It would have been cool if they went with a bigger, curved screen for the pro model (32 inches? 34?), but at this point it’s pretty safe to assume that curved Macs won’t be a thing.
  • Metal 2: the interwebs picked a better name, Heavy Metal. It seems really nice, but I bet VR developer would have liked at least a mention of OpenGL.
  • A wireless keyboard with numeric keypad: finally, we have the technology 😱. Sadly, it's so advanced this futuristic device has to cost 129 $...
  • Apple Pay: direct money transfers between users just raised the level of the ocean: it was VCs funding Venmo & co. crying.
  • Siri (and machine learning, machine learning, machine learning everywhere): I think they are being cautious touting new Siri capabilities at this stage, but I'm pretty optimistic. The translation part was cool. I would have expected a few more new intents, but I got what I wanted 🤐, so I'm cool…
  • iOS 11 on iPhone: I like the new lock screen, and this could be their chance to make it a bit customizable (change the default calculator app, place a HomeKit button in the main view...). I expected a more substantial, system-wide redesign, but as they made clear in the Platform State of the Union, the Music-style big headlines are now available to everyone almost for free, and Apple uses them in most of their apps (they should fix this, though...), setting the new platform standard. The car DND is a very nice and safe idea.
  • Augmented Reality: very cool demos (the table one was amazing, but my arms hurt just watching the presenter hold that iPad for so long), I’ve never seen this resolution and realistic effect in HoloLens videos. This should be one of the major headlines today: Apple went from 0 to 11 (see what I did there? It’s the joke of the week!) keeping their work completely secret. This should probable silence (it won’t) all those critics voicing concern about Cupertino's position in AR and VR (which too they acknowledged more than ever in the Mac part, confirming they are aware that it's one of the next big things, though maybe less huge than many expected).
  • iPad 10.5": I would have expected something a bit bolder on the design front, or at least a few new colors, but it's still a great device. I use my mother's 12.9 iPad Pro pretty often, and while I like it, it's really, really big and heavy. This will probably be the best iteration ever of the original form factor, which happened to also be the perfect one. The six-core A10X is cool too.
  • iOS 11 on iPad: this is a huge step forward. Obviously, it's not like computers never had drag and drop and file managers before 💁‍*, but they seem really well implemented, and drag and drop is also really easy to adopt on the developer side. I also liked the Dock implementation and the new app switcher. All those features and the system-wide markup capabilities really got me excited about using the iPad more... I think that 12.9" will be the first device I'll install the beta on, when the next version will be released (I'm not that young and reckless anymore...).
  • HomePod: first, I dig the name, and I don't think the price is excessive (I paid that exact amount in 2006 for the iPod Hi-Fi, and this thing does a couple of things more...). I'm curious to see how it sounds, and also to see it in person, because I'm not particularly impressed by its design. Given what they showed feature-wise, I don't think it's a device I'm interested to buy at this time, but of course they would be the only company I trust with a microphone in my home.
  • Swift Playgrounds on iPad: really neat stuff that I should probably check out.
  • Xcode 9: Apple's IDE in my opinion was the absolute star of the Platform State of the Union. They seem to have fulfilled almost every possible wish a developer could have had: new source editor, faster indexing and compile times, clearer warnings (no dots anymore!), amazing refactoring capabilities, wireless deployment to test devices, Swift 4 adoption not mandatory when opening a Swift 3 project. I'm in love 😍, and I can't install it because my 2008 Mac Pro can't run Sierra or Fully Baked Sierra 😭.

I can only express my congratulations to the teams at Apple that made all this (and the many things I forgot to mention) possible. Thank you!

With so many sessions bookmarked to watch, this will be a fun week...


* Squarespace doesn't let me use the boy emoji...