Looking Ahead

It’s been quite a summer. This pregnancy has been pretty miserable compared to my first; a combination of loosening ligaments and chronic lower back/hip issues has made walking extremely painful, and it’s been hard for Charlie to understand that I can’t play with him exactly like I used to. On the other hand, baby is healthy and the end is in sight with only 8 weeks to go!

Snapthread’s revenue dropped off considerably about two weeks ago, so I’m particularly eager to transition to a freemium model to see if that helps. In the free version you will be able to export videos up to 30 seconds long, with a watermark. You can create a longer movie and preview it, but if you try to share it, you’ll get a prompt to upgrade (before that there will be a noticeable warning in the UI when the duration limit is exceeded). This approach will give people a good sense of what the app can do, and while I realize I could probably get a higher conversion rate by being a little more limiting, I’d rather attract and retain a large user base. With all of the feature ideas I have, it’s very possible that more things will wind up behind the paywall in the future.

Speaking of features, I thought I’d list some of the things I’d really like to add to Snapthread as time goes on. Some of these I’ve mentioned before and others are new ideas.

  • The ability to add text and stickers to clips
  • The ability to select a specific section of a song
  • The ability to adjust the crop rectangle of clips for any aspect ratio, not just square
  • Support for still photographs (ideally with a Ken Burns effect)
  • Basic video adjustments: contrast, brightness, saturation, color balance, etc.
  • An option for at least one type of transition (fade, dissolve, etc)
  • A simpler way to loop a video multiple times (this is currently possible by just adding the same clip more than once)
  • The app should cache the most recent project so it can be restored in case of a crash
  • A way to “intelligently” auto-generate a video from a recent Moment

Honestly, that’s probably a couple year’s worth of features right there, at the rate that I’m able to work on it. 

I once stated that Snapthread’s mission was “to provide the fastest, most intuitive way for people to merge Live Photos and videos for the purpose of compiling and sharing their memories,” and to that end I want to make sure that any features I add don’t clutter up the interface. It will be a careful balancing act but I already have plans to streamline the clip-editing UI so that it’s easier to perform multiple edits quickly.

Anyway, I feel like I’m just rambling now, so: look for Snapthread 1.8 to arrive around the time iOS 12 is publicly released (with a pretty new icon, too!). After that, it’s anybody’s guess as to when I’ll be able to get another version out (besides bug fixes) because Baby Girl Hansmeyer will be here October 15th! 

Status

I always figured I’d make a whole bunch of apps that would each generate a little income, like David Smith. Instead, it’s become increasingly clear to me that Snapthread should be my main gig. I have so many feature ideas for it, and I think there’s a lot of potential for growth and improvement!

Apple, Marzipan, Delight

Note: This is not a recipe. For desserts, please see: Marzipan Apple Pie or Apfel-Marzipan-Kuchen

Here’s two opinions. They aren’t necessarily my opinions, but I know many of you share them.

  1. The visual design of iOS has grown stale and is in need of an overhaul.
  2. Marzipan apps, while better than Electron apps, still don’t feel like they “belong” on the Mac. They don’t feel like “real” Mac apps.

Let’s talk about these things.

I think iOS 7 was an important design reset for iOS. I also think that it’s taken WAY too long to walk it back, in terms of intensity, to something more reasonable, accessible, and beautiful. 

Before the rumor broke that iOS 12 was going to focus primarily on stability and performance, I think many people, including myself, were hoping for a major UI makeover. In addition to a system-wide dark mode, some folks were hoping for a fresh look for first party apps like Reminders and Notes, and others wanted to see updated appearances for controls like UIButtons, UISwitches, and UIPickerViews.

I’ve watched a good number of WWDC 2018 sessions and if I had to pick an overall theme for this year’s conference, it would be “Delight Through Interactions.” So many of the sessions are all about how we can make our apps better by leveraging fluid, reversible, and interruptible gestures and animations, how we can extend them by making them more useful across platforms, and how we can improve their performance by writing efficient code that scales. (Note: I could have selected like five different sessions to link to for each of those phrases. I just picked my favorites)

Hmm. A focus on delightful gestures, low latency transitions, and cross-platform usability? That almost sounds like Apple is working on some special new hardware. It also sounds like its preparing us to port our apps to Marzipan. In the absence of major API changes and with the focus on how apps should behave, we’re left wondering whether or not Apple still has the same opinions about how apps (and the OS as a whole) should look.

Here’s my theory: Apple is working on a significant design overhaul for iOS 13, and it will address many of the issues people currently have with Marzipan.

Why did macOS get Dark Mode before iOS? That’s weird, right? These days, macOS typically follows in iOS’s footsteps. On the other hand, why should Apple designers waste time creating “dark” versions of every UIKit control now when they’re just going to have to re-do it to match iOS 13’s new look?  

Anatomy of a Mac App

Tuesday morning I asked Twitter what makes a Mac app a Mac app. I was genuinely curious, because I’ve been using Macs for 15 years and didn’t feel like I had a complete sense of what differentiates a native app from a non-native one. Greg Pierce (developer of Drafts) helpfully referred me to a section of Apple’s Human Interface Guidelines that lists four main characteristics of a Mac app: flexible, expansive, capable, and focused.

I got many other answers as well, including one that referred me to a list that Steve Troughton-Smith crowdsourced a few days ago. Here’s that list, plus a few extras in bold:

  • Menu bar and window toolbars
  • Sidebar/source list
  • Preference windows
  • Touch Bar support
  • Contextual menus
  • Tooltips
  • Multi-column tables
  • Field editors
  • AppleScript
  • Tabbed windowing
  • Multiple windows
  • Standardized color picker and font panels
  • Pop-up menus
  • Time machine/versioning
  • Compact control sizes
  • Resizable split views
  • Outline views
  • File-system access
  • Scroll bar elasticity (often missing in non-native apps)
  • Selectable text where you would expect 
  • Customizable toolbars
  • Honors general system preferences (e.g. button color prefs) and default apps 
  • Support for Services
  • Drag and drop support

Writing about Marzipan for 9to5Mac, Guilherme Rambo notes:

“Other Mac-like elements that can be used by iOS apps on macOS are contextual menus, the menu bar, translucent sidebars (such as the one in the News app), window toolbars and the Touch Bar. These elements have been exposed to the iOS apps through new classes in the version of UIKit available on the Mac.”

That knocks a few items off the list, at least! Many of the other things listed would greatly improve iOS apps as well. After all, there’s nothing that should prevent iOS apps from also being flexible, expansive, capable, and focused. Which brings me to…

WWDC 2019

Here’s some things I’m hoping to see at WWDC 2019:

UIFontPicker
This could be in the same, hopefully refreshed, style as UIPickerView and UIDatePicker. There could be a standard version that would automatically list all installed fonts, with a way to customize which fonts are listed. This could be easily hooked up to a label or text view as well.

UIColorPicker, UIColorPickerController, and UIColorPickerDelegate
UIColorPicker would be more modular and would require manually setting up a delegate. UIColorPickerController would contain the boilerplate delegate methods and would be an entire view controller dedicated to color selection.

iOS Time Machine versioning support
This might be too much to ask for next year, but I’m imagining this being announced at the same time as a new hardware accessory similar to the AirPort Time Capsule that would enable wireless iOS backups to a local physical drive.

iOS support for rearrangeable UIButtons in a toolbar/nav bar
This could be as simple as a new boolean: isMovable. I’m guessing UIButtons and UIBarButtonItems are going to look a heck of a lot more like buttons in iOS 13.

Auto-generated tooltips
Tooltips in Marzipan apps could be drawn directly from accessibility hints or labels.

Consistent, system-wide, default keyboard shortcuts for iOS 
I don’t even use a hardware keyboard with my iPad, but this still pains me to think about.

Dark Mode
Oh, and maybe the custom accent colors from Mojave? Because why not?

Final Thoughts

I noticed some fussing about the scaling of apps ported to the Mac using Marzipan, which are apparently rendered at 1.3x and downscaled, or something like that. I’m guessing that’s going to become a non-issue eventually, between the iOS redesign which may allow for a smoother translation between touch-optimized and mouse-optimized (compact) controls, and the likely-to-be-increased screen resolutions of new devices released this September. But what do I know? (Hint: not much, lol)

Anyway, I’m really excited about Marzipan. I think it’s a great idea, and I can’t wait to see what waits for us in Phase 2 of the project and beyond. Ultimately, I think it will make both iOS and macOS more useful, powerful, and delightful, without taking away anything that people love from either platform.

What do you think? Will iOS get a re-design next year? Will the Marzipan project ultimately improve both macOS and iOS in tandem? Feel free to share thoughts with me on Twitter, or better yet: write your own blog post.

Status

One thing I struggle with as I attempt to transition from a beginner to intermediate-level iOS developer is learning language conventions. For instance, I can take just about any Objective-C code and do a word-by-word translation to Swift that will compile and run, but it won’t be very “Swifty.” (An aside: I actually really enjoy translating old Apple sample projects written in Objective C) It’s like my knowledge of German: I kinda remember the vocabulary and sentence structure, but a native speaker would probably laugh and say “that’s technically correct, but we would never say it that way.”

Anyway, I’d love if someone started a blog where they went through a generalized programming problem and stepped through how to solve it in Objective-C and then Swift, taking into account the “spirit” of both languages. I would glean a lot from a comparison like that.

Status

“Layout-driven design” from WWDC Session 233 (Adding Delight to Your iOS App) kinda blew my mind. If you’ve seen the session or know what I’m talking about: do you use this approach?

Status

Looking forward to installing the iOS 12 beta on my iPad Air 2, iPhone 5S, and maybe iPhone 6S. I’ll report as to whether or not I notice any performance improvements (I realize the early betas aren’t really optimized). ?? #WWDC

Regarding Free Trials in the App Store

With the recent launch of The Developers Union there has been renewed discussion about whether or not Apple should allow developers to offer free trials of their apps on the App Store. I wanted to offer a few thoughts from a beginner’s perspective.

My app, Snapthread, is a utility. In general, utilities aren’t great candidates for subscription pricing. So while devs do have the option to offer a free trial for their subscription-based apps, the only way to offer a trial experience for paid upfront apps is to implement some type of in-app purchase to unlock full functionality or upload a separate, “lite” version to the store. There’s really no good way for non-paying users to experience your app in its full glory without significant compromises.

The in-app purchase method works well enough for a lot of folks, especially if they implement it from the beginning. Unfortunately, Snapthread has been a paid app since it launched, meaning it has a chunk of users who have already paid for its features in full.

If I want to switch to a reduced functionality, in-app purchase model, I have a lot of hoops to jump through. First, I have to decide what goes behind the paywall. Do I add a watermark to the videos? Do I limit the number of clips the app will merge at one time? Once I choose and implement some restrictions, I then have to write a bunch of in-app purchase code to remove them.

But what about those users I mentioned who have already paid for Snapthread? For them, I have to perform receipt validation. There are two options: to validate receipts locally on device, which requires some sort of cryptography-related mumbo jumbo that I don’t understand, or validate using my own server.

Look, I don’t have any computer science background. I can barely describe to you in my own words what a server even is, let alone set up my own. I’m not saying Apple should make this easier just for someone like me. I’m under the impression that all of this is a pain in the butt even for people who understand it perfectly well. (A quick note: this isn’t a request for explanations regarding receipt validation. If you have a beginner level tutorial you’d like to send my way, that’s fine, but otherwise I’ll be okay. Really.)

What I’m saying is: Apple could make this a heck of a lot easier on everyone by allowing for time-limited free trials. There could be a simple list in Settings of all the trial apps you’ve downloaded, and how much time you have remaining on each. When a trial expires, maybe you’d see a pop-up when you launched the app asking if you’d like to buy or delete it. If you chose to delete it and later returned to its App Store page, there would no longer be a trial option.

Developers could choose from some pre-set trial lengths, and trials in general would be completely optional. It would take a lot of work on Apple’s end to do this—to bolt this on to the App Store’s crusty old backend. But holy cow would it be helpful for folks like me!

An interesting question for discussion: if Apple did something like this, should users be allowed to submit app ratings or reviews during the trial period? Can they do so now, with subscription trials?

Status

The great promise of blogging hasn’t failed. The freedom of expression, of owning your creative work, and the notion that if you persist in sharing good quality writing (photography, poetry, etc.), you too can achieve the success of someone like John Gruber—is still true today.

A Micro.blog App Idea

Yesterday I realized that I would really love a standalone app for publishing to Micro.blog that was focused on WordPress. The app itself would be structured very simply: it would open to a list of posts that you have published to Micro.blog (so, this could be all of your posts, or just your “microblog” category depending on how you have it set up). From there, you could edit or remove posts, with the option to remove them from both WordPress and Micro.blog. You could also filter the list by drafts, published, and scheduled, and, of course, write a new post.

The post editor would be very WordPress-centric, allowing you to add tags and assign categories and post types.

Basically what I want is the official WordPress app’s post editor combined with a list of my own Micro.blog posts. No timeline, no replies, just my own personal stuff.

I don’t have time to make this, and I’m not sure the audience for it would be very big. I’m sure most people prefer the combined publishing/timeline viewing experience. I think there could be a place for a focused, clutter-free blogging app though. Preferably with a sweet dark mode, Markdown support (for people who use it–I don’t), rich text or HTML support, and a way to get photos/images to and from your WordPress site’s media library.

Actually, now that I read through that list of features, I’m pretty sure my iOS development skills aren’t advanced enough to even make something like this. But, a girl can dream, right?

Status

Snapthread to-do list:

  • Fix scaling/rendering/exporting issues that users have reported
  • Overhaul data model in preparation for improved title cards
  • Design new titles
  • Add support for still photos (may not ship with Ken Burns effect…hoping to add it eventually once I figure it out)
Status

Thanks so much for all the congrats and well wishes, everyone! If this were Twitter, I would fave all your replies to acknowledge them. Since that doesn’t work on Micro.blog, I’ll simply say: thanks! ☺️