Status

For the past few months I’ve been grumbling about the fact that Apple no longer sells official silicone cases for the iPhone X. My Rose Red one is peeling badly, so I started looking at Apple’s iPhone XS cases (they fit the X, but there’s a slight gap below the camera bump because the XS’s bump is a few millimeters taller). I was about to buy a green one when I thought, why should I buy a $40 case for a phone I may replace this fall?

Browsing Amazon, I found these $12 silicone cases by SURPHY and decided to give one a try. I ordered a yellow one and was surprised when the color actually matched the photo on the product page. What I like most about this SURPHY case (besides the price and the color accuracy), is that there’s nothing printed on it—not even a logo. It feels the same as Apple’s cases and has the same soft lining. If you have an X or an XS and are looking for a cheap silicone case to get you by, I recommend this one!

WWDC 2019 Developer Wishlist and Keynote Predictions

WWDC is now just two weeks away, so I thought I’d share what I’m hoping for in the way of developer tools/APIs.

UIKit Updates

  • A standard system font picker
  • A standard system color picker
  • An easier way to implement multi-column layouts that doesn’t involve nesting UISplitViewControllers
  • A keyboard navigation system for iOS that would allow users to navigate table views and collection views using the arrow keys
  • Greater variety of stock UI components and customization options for components on iOS (i.e. stop making us reimplement an expanding table view cell with a rotating arrow, or a circular progress indicator, or write dumb hacks like adding a blank UIImage as a navigation bar’s “shadow” just to get rid of that line beneath it)
  • More standard system icons that can be used both inside and outside of tool bars and navigation bars (like, on regular UIButtons)
  • A visual redesign of all current stock components on iOS, which, in general, are boring, ugly, and inaccessible
  • More Apple frameworks classes should be made Codable-compliant (i.e. UIColor).
  • I want to be able to force a dark appearance for all elements in my app. Snapthread’s never going to have a “light mode,” but I want to make use of iOS 13’s dark mode appearance for things like action sheets, pop ups, picker views, switches, etc regardless of the user’s display setting.
  • A cleaner way to check if a device is in landscape orientation than checking the orientation of the status bar
  • Support for rearrangeable buttons in a toolbar/nav bar on iOS

Xcode Improvements

  • Interface Builder improvements: basically, every visual customization that is possible for a UI component should be editable in Interface Builder. This includes layer customizations like corner radius, border, and drop shadow.
  • There should be more information than just a progress bar when uploading to App Store Connect from Xcode. At least Application Loader tells you the upload speed and how many MBs are left.
  • Closing the new Music app should not be a requirement for installing Xcode.
  • A way to hide/dismiss warnings in Xcode

Photo and Video

  • Developer access to the more recent Apple-made Core Image filters, such as Silvertone, Dramatic, Vivid, etc
  • A “What’s New in AVFoundation” session…there hasn’t been one since 2016
  • There are rumors that Apple will enable developers to train machine learning models on device. I’d like to see examples of that applied in photo/video contexts.

These are just my wishes… now for a few predictions.

WWDC Keynote Predictions

There are rumors that Apple is planning to grant developers access to its real-time document collaboration API. I think this is going to be a big talking point, along with the ability for apps to have multiple “instances” open at the same time (i.e. being able to compare two Microsoft Word documents in split view on iPad). I’m guessing there’s going to be more than one demo showing off these features, and so my prediction is that Microsoft is going to demo a new Office update, and Adobe will be there to show off real-time collaboration in XD or something like that (somebody’s gotta compete with Figma, right?). Or Affinity maybe? I imagine some sort of photo editor or design/drawing app will at least be shown to demo the new floating panels on iPad.

I have no doubt that Tim Cook, or whoever is doing the watchOS presentation, will mention Apple’s ECG app—how it’s already saved lives and will continue to roll out to more countries. None of the new rumored health apps seem demo-worthy, but there’s rumors of new Siri intents, and I’m betting at least some of those are going to get demoed on the watch—event ticketing, flight/gate information, etc.

I have no clue what third party Marzipan apps we’ll see onstage. Darkroom seems like a good candidate for Mac, as well as Ferrite and LumaFusion. Some weather apps might be interesting, but not that interesting. I’m stumped. Instagram? Instagram for iPad and Mac? (lololol) Games don’t make much sense because engines like Unity already enable devs to make cross-platform games.

Perhaps the biggest mystery of all is how Apple is going to fit all of this into a ~2 hour keynote. Close your eyes for a moment and think these words in Tim Cook’s voice: “iOS 13, with a gorgeous new dark mode…” I mean, you know they’re going to want to spend 15 minutes just talking about dark mode. Judging by Bloomberg and 9to5Mac’s rumor dumps, they’re only going to have about two. There’s just too much to cover. Apple has shown that they can put together a really tight keynote though, so my prediction is that we’ll see another fast-paced, throw-a-bunch-of-features-on-a-slide-and-move-on presentation.

What about you? What are your predictions? Feel free to share your own thoughts/blog posts with me on Twitter @bhansmeyer, or Micro.blog @becky.

Snapthread 2.0 is Now Available!

Snapthread 2.0 is live on the App Store as of yesterday, and so far I’m very happy with how it’s been received. I thought I’d write a bit about some of the new features, and my ideas for the app going forward.

I already wrote about Snapthread’s new data recovery feature, which, to be honest, has lifted an emotional burden that’s been weighing on me ever since I got my first negative review. I feel like I can finally relax and just focus on the cool features I want to add instead of obsessing over every little crash, a few of which have been out of my hands.

Another one of my design goals for 2.0 was to make the app even more user-friendly. It’s possible that Apple will make iOS 13’s default stock buttons look more like…well, buttons… but I didn’t want to wait until June to find out. So, I brushed up on my very basic graphic design skills and got to work making some buttons in Affinity Designer. They have gradients, and drop shadows, and noise, and I think they look nice. The dark gray buttons you see in the app have an image background that has been sliced so that it can easily expand to fit its contents. On iPad, most buttons have both an icon and a text label.

I also moved several buttons to new locations. It bothered me that the top navigation bar had an unbalanced number of icons on each side, so I decided to take two common actions, share and reset, and move them closer to the bottom of the screen. I also heard from some users who wanted a separate “save” button apart from the one in the share sheet, so I added that as well. To regain some space for the video preview, I moved the aspect ratio button to the navigation bar.

Earlier I wrote about how I wanted to refactor the entire app to use container view controllers. Instead of popping up a new modal view controller every time the user selected an editing tool, I wanted to gracefully transition between view controllers by fading them in and out. Now, the app’s main view controller has three containers: a small one at the top for displaying banners and progress bars, a middle one for displaying video content, and a bottom one for displaying various controls. For the iPad version, a fourth container runs vertically along the right side. I’m still working on making the code cleaner (it’s kind of a tangled mess of delegates right now), but it works, and it feels much snappier to me.

Prior to 2.0, there was no way to tell which clip in your timeline was currently playing. Now when you tap the play button, every thumbnail in the timeline darkens slightly except for the currently playing clip. There was also no way to know what a clip’s duration was while you were trimming it…now, there’s a handy label with that information (there’s still more I need to do to make trimming a better experience, but this should help at least a little!). You can now adjust the crop rectangle of landscape and portrait videos when you’re not using letterboxing; previously, that feature was only available if you selected a square aspect ratio. And speaking of square videos: they can now be letterboxed as well. Before, if you added a square video or photo to your project it would force the aspect ratio to be square.

I use a ridiculous hack to get a dark appearance for this action sheet. I’m hoping iOS 13 will eliminate the need for that!

The iPad version now includes a bunch of keyboard shortcuts. A full list of them can be found over at Snapthread’s spiffy new website. One of my wishes for WWDC is for a way to use the keyboard to navigate a collection view. In other words, you could use the arrow keys to say, zip through your photo library and select/preview images and videos. There’s currently no way to implement that (at least that I can figure out), so you still have to reach up and poke the screen to select your clips.

Last but not least, you can now rotate photos and videos, add text overlays, add a bounce effect (from within the Loop tool), and add filters. There’s a mix of Apple’s built-in filters and a few I created myself, named after towns in Nebraska. I also did my best to recreate Apple’s Silvertone filter, as it’s not available to developers (at least not that I could find!). Creating Core Image filters by chaining a bunch of adjustments together is kind of fun, and I definitely plan to add more filters to the list.

I have a long list of improvements to make and features I’d like to add to Snapthread in the future. Some of them I’d like to keep under wraps (just in case they don’t work out, ha), but others are just more basic things you would expect from a video editor: stickers, speed adjustments, an optional Ken Burns effect, etc. I’d also like to make improvements to some of the existing tools before going wild and adding more. For instance, adding text overlays can be a little janky at times. iCloud downloads can be canceled but not restarted, which is frustrating. Trimming could be more precise. The crop tool could allow zooming.

Now, it might be that none of that seems particularly remarkable, and you might wonder why Snapthread 2.0 is a big deal at all, as most video editing apps already have the same basic tools (and more!). It’s a big deal to me because I’m only one person, because I’m still mostly a beginning programmer, and because I really care about it. It might be a big deal to you because it’s one of only two or three apps on the store that merge Live Photos, and now, it’s better than ever. 😎

Link

App Store Pricing

App Store Pricing (it’s not a free market!) (2008)

This past week I came across this old post by David Barnard from 2008 and ended up reading it several times (I didn’t really start reading dev blogs until ~2013, so I’m sure I missed many gems like this). Between this and all of the discussion about how Marzipan may negatively affect users’ pricing expectations, I feel…well, I feel fired up, actually.

More than ever I realize that it’s futile to try to compete on price. So if you’re an indie dev, and your non-subscription-based app is priced under $5, I want you to go into App Store Connect and bump that baby up to the next price tier. See what happens. If the world doesn’t end and your sales don’t nosedive, bump it up again. What you’re doing is not evil or greedy, neither is it comparable to Adobe doubling the price of their Photographer bundle. That’s apples and oranges. And if someone says, “I was planning to buy your app at $3.99, but there’s no way I’m paying $4.99,”…forget ’em.

$5 should be the absolute rock bottom price for a quality indie app, full stop. So, for whoever might need to hear this: stop kidding yourself, you’re not going to make it up in volume, raise your dang prices, thank you and good night.

5 Localization Resources for Indie Devs

Let me first say two things. First, these tools aren’t very helpful if you have a lot of text in your app. By “a lot,” I mean long sentences, tutorials, lengthy error messages, etc. Second, my app has enough text that I had to ask for help. I can’t afford translation services, but I have three wonderful volunteers who have helped me make Snapthread available in Spanish, Italian, and French.

That said, I usually find the following resources helpful whenever I attempt to translate single words and short phrases on my own.

1. Babble-on’s “Missing Apple iOS Localization Term Glossary”

A long name for a great resource containing nearly 300 common words and phrases found in iOS apps with translations in the following languages: English, French, Spanish, German, Italian, Portuguese, Japanese, Korean, Dutch, Russian, and Chinese (Simplified & Traditional).

2. Linguee

Linguee is a language dictionary available in quite a few languages. One of the neatest features of Linguee is that if you search for a term, it lists other websites where that term was translated under the heading “External sources.” There it shows a side-by-side of the website’s text in both languages, with your term or phrase highlighted. Linguee warns that these external sources are not reviewed, but you can look at the URLs and judge for yourself. For instance, if I search for “photo library” in the English-German dictionary, I can find instances of its translation on websites from Corel, Sony, Snapfish, and more.

3. Boomerang by Illuminated Bits

Boomerang is an iOS app by Ish ShaBazz and Heidi Helen Pilypas. It helps automate a common task: using Google Translate to translate something to another language, and then translating the result back into the original language, just to double check. I like to use Boomerang as my final check after translating a word or phrase.

4. Apple’s Support Documents

If you’re wondering what Apple calls some of its own features, apps, and technologies in other languages, you might try checking out the help pages at support.apple.com. At the bottom of every page is a country name with a flag icon next to it (mine says “United States”). Selecting it allows you to choose another language to display the page in. Often, the names of features, apps, menus, and buttons will be capitalized, or in a bulleted or numbered list so they’re easy to find.

5. Other Apps: Beg, Borrow, and Steal

Look, being an indie with a shoestring budget is hard. If you’re looking for really common words or phrases like “Exporting,” “Frequently Asked Questions,” or “Restore Purchases,” consider finding a big name app that already did the work for you. This requires a good memory (or a lot of screenshots), as you’ll need to change your device language, navigate through your chosen app, write down (or screenshot) the translation of any strings you need, and then make your way through Settings to switch back to your native language. It’s not for the faint of heart!

Conclusion

If you want to do a really thorough job localizing your app, you’ll probably need to enlist the help of a professional translation service (you might also consider bribing a bilingual friend). A really thorough job would involve translating your app subtitle, description, keywords, screenshots, and every string in your app, including VoiceOver strings. However, if your app is mainly driven by icons and gestures with very little text, the resources and ideas above may be helpful to you!

Data Recovery in Snapthread 2.0

tl;dr: The Codable protocol truly is great for lightweight data storage.

For me, the hardest part about being an app developer has been hearing from users who have lost work (and precious time) due to bugs in my app. Video editing apps in general are notorious for crashing, and I believe it’s partially due to Apple’s poor documentation of AVFoundation and its myriad error codes. There’s also a foggy concept of “media pipelines” that are managed by iOS itself, are used for playing and exporting media, are completely undocumented, and are limited in number based on, from what I can tell, device chip. If you exhaust those pipelines, stuff just doesn’t work. It’s frustrating.

I’ve been largely resistant to the idea of adding project management to Snapthread. It’s an added layer of complexity that feels beyond the scope of Snapthread’s mission to be a light, casual video editor. Perhaps worst of all, it invites a developer’s most dreaded user expectation: syncing. I knew I had to find a way to save users’ work without building a big, heavy data layer.

I decided to explore the Codable protocol, and slowly began conforming all of my model data to it. I quickly ran into some roadblocks, but nothing too serious. First, UIColor and CMTime do not conform to Codable. However, CMTime can be made to comply with a little tweaking, and UIColor just needed a wrapper struct. For title cards, I needed to store a thumbnail image and possibly a custom background image. I tried converting them to a Base64 string and saving them that way, and it worked great!

I decided not to cache any other media files like photos, videos, or music. Instead, I simply save identifiers that will allow Snapthread to refetch them. Since they’ve already been recently downloaded from iCloud (or were already local on device), refetching takes a trivial amount of time. Additionally, nearly all edits a user makes to a video clip are stored as parameters and applied at the time the final video is composited, so no actual permanent changes are made to the original files.

Another problem I ran into was protocols not playing nicely with Codable (because they don’t conform to themselves…whatever that means). I ended up creating some base structs for my protocols as a workaround. I hate adding extra layers of abstraction like that, but it worked, and now all of my model classes like Clip, StillPhoto, and Title, all of which conform to a protocol called Threadable, can easily be encoded from an array of Threadable.

I used a helper class called Storage by Saoud M. Rizwan to easily cache the user’s current project by saving and retrieving a single .json file to/from the Documents folder. Snapthread caches the project every time a change is made and only deletes the cached data when the user saves or shares the video. Therefore, if the app crashes (or is force quit) before the video is exported, it will offer to recover the project when the app is opened again.

I’m really hoping this cuts down on the number of frustrated users. Personally, I don’t mind if an app crashes as long as I can resume what I was doing with little to no effort. This should allow Snapthread users to do that.

Journey to 2.0: Market Appeal

Snapthread’s journey to version 2.0 has been one of gradually broadening market appeal. If you recall, version 1.0 was an extremely niche product, aimed at people who took lots of short, vertical videos and wanted to merge them together. Over time I added the ability to merge Live Photos, and then added support for landscape videos. I thought I’d market Snapthread as a cool app for stitching Live Photos together, but quickly learned that even Live Photos are pretty niche.

Recently, after spending a couple hours studying the top charts in the Photo/Video category, I realized that Snapthread could be a great, useful app for just about everybody. In the reviews of some top video editing apps, users bemoaned shady subscription practices, being constantly nagged to buy in-app purchases, and being asked to give 5-star ratings in order to use features (for the record, it’s impossible for devs to unlock features based on star rating). I don’t do any of those things with Snapthread. In fact, Snapthread doesn’t collect any analytics, store any user data, or contain any subscription options. Just a plain old “premium unlock” IAP and, in 2.0, a tip jar.

Based on my research, I know there are some things I need to do to help Snapthread gain exposure. I need to add “Video Editor” to Snapthread’s name to help it show up in search results. I need to add “slideshow maker” to its keywords, because apparently people are hungry for simple slideshow creation apps. Despite Apple’s guidelines, I need to add device frames and descriptions to my App Store screenshots, because that’s what all my competitors do (including Clips by Apple).

I also need a new elevator pitch. The app isn’t “just” for Live Photos anymore. So what is Snapthread? Snapthread is a simple, casual video editor and slideshow maker that works with videos, still images, and Live Photos. It’s fun, fast, and user-friendly.

So how will Snapthread 2.0 compare to Clips, which is free?

  • Snapthread supports multiple aspect ratios (portrait, landscape, or square); Clips only supports square.
  • Snapthread imports Live Photos as videos; Clips treats Live Photos as still images.
  • Snapthread allows you to mute, loop, bounce, rotate, trim, and crop clips; Clips supports muting and trimming.
  • Snapthread doesn’t have project management or an in-app camera.
  • Clips has Live Titles, selfie scenes, animated title posters and stickers; Snapthread has non-animated title posters.
  • Both apps only support one music track per video.
  • Neither app has options for transitions between videos (i.e. wipe, cross-dissolve, etc.)

I’m going to do my best to continue to improve Snapthread with things like stickers and transitions, and the ability to select a specific portion of a music track.

This shift in thinking about Snapthread has been exciting for me, and I’m really looking forward to marketing it as a mass market product.

Status

I was reminded how important documentation is today after spending fifteen minutes trying to figure out why a certain code path wasn’t being reached.

If you shuffle between UIImage, CIImage, and CGImage a lot, you might be tempted to access the handy “.ciImage” property of a UIImage. However, that property definitely does NOT have a value if you initialized your UIImage from a CGImage, and you need to use a CIImage initializer instead. Thanks, Apple docs!

Journey to 2.0: Container View Controllers

One of the major structural changes I need to accomplish for Snapthread 2.0 is switching to the use of container view controllers. For those who don’t know, container view controllers allow you to embed one or more view controllers inside a parent view controller, which can then manage transitions between its children. UINavigationController and UITabBarController are examples of container view controllers in UIKit, but you can also create your own.

I’ve never used custom container view controllers before, so of course I hit Google to see what I could find. John Sundell has a great introduction to the topic and I really liked the series by Mike Woelmer as well. (Edit: I also meant to include this fantastic article by Ben Sandofsky) The first thing I learned was that if you want to be able to switch between child view controllers, you should probably set them up in code instead of Interface Builder, which only allows a single embed segue between parent and child. I wasn’t ready for that though, so I decided to take a baby step and find a situation where a single parent-child relationship made sense.

Snapthread’s main view controller is…well, massive. I’m too embarrassed to tell you how many lines of code it is, but after combing through it, I realized at least 400 lines were devoted to setting up the AVPlayer, handling play/pause events, observing the status of the current AVPlayerItem, scrubbing, adding the watermark, etc. Clearly, the video player was a good candidate for having its own view controller.

So, I created a VideoPlayerViewController class and began copy and pasting everything relevant to setting up the AVPlayerLayer, displaying time elapsed/remaining, scrubbing, etc. In Interface Builder, I added a new view controller and copied over the video preview view, which is a custom UIView class that resizes its own AVPlayerLayer, and the player controls.

I deleted the video player and controls from my main view controller and replaced it with a container view from the Object Library. I hooked it up to my new view controller using an embed segue.

Next, I had to figure out how to communicate between my main view controller and the video player. Communicating between the player and its parent was easy; I just set up a delegate with methods for responding to changes in AVPlayerItem status and duration (if it exceeds a certain duration, the UI displays a warning that the user needs to purchase Premium in order to export). I set the delegate using prepare(for segue:), which is called when the child VC is embedded.

There were times when I needed to tell the player to do something from the main view controller, however, such as hide its controls or clear its watermark. I wasn’t quite sure how to handle that. Using notifications was one option, but it just didn’t feel right for some reason. I ended up storing a reference to my VideoPlayerViewController and referencing it directly. That’s probably bad practice, but I’m pretty sure it’ll be okay, as I don’t plan on using that particular video player with any other view controller.

Overall, I feel slightly more comfortable using container views now, and I think I’m ready to tackle the next step: transitioning between child view controllers. I plan to post more about new things I’m learning; each of those posts will be prefaced by “Journey to 2.0” if you’re interested (or want to ignore them, lol).

Organizing 2019 with Capsicum

I’ve never been a heavy user of task management apps. I use Reminders for things like our shared shopping list and occasional to-dos and make checklists in Notes for features I want to add to Snapthread. I don’t use a bug tracker, I don’t track any of my habits, and I don’t do any daily journaling. There are many beautifully-crafted apps that are well-suited to accomplish each of those tasks, but the cognitive load involved with getting started is just too much for me right now. That’s why I was excited when developer Ish ShaBazz and designer Heidi Helen Pilypas announced that they were creating a new kind of digital planner called Capsicum.

Screenshot of Capsicum's daily view

Capsicum is like a daily planner, to-do list, habit tracker, and notebook all rolled into one. It takes me back to the days when I would linger in that corner of Barnes & Noble near the registers, the one with all the notebooks and calendars and Moleskines, and drool over all the beautiful planners I couldn’t afford. Capsicum is all about customization and aesthetics: you can choose a cover for your planner, select a primary color and style for the decorative “tape” that divides each section, choose from a fun variety of fonts for headings, and more.

Maybe that’s what I love most about it—the skeuomorphic design. When you open your planner, it literally looks like a paper planner (well, if a paper planner could magically show you the local weather forecast at the top of the page!). When you flip between days, it uses that nice page curl animation. The tabs that allow you to switch between daily, weekly, and monthly views look like real notebook tabs. It’s delightful!

I joined the Capsicum beta early on in its development, but couldn’t quite figure out how it could fit into my daily life. Then, a few weeks ago, something finally clicked.

Habit Tracking

I had been feeling a bit discouraged about how little time I had to blog, work on Snapthread, and generally do things that I enjoy. However, I was simultaneously encouraged that I was finally able to complete a year-long Bible reading plan in 2018. It then dawned on me that if I was able to inch my way through the Bible a few chapters at a time for 365 days, I could similarly work toward other goals in my life by completing a bunch of really small tasks.

I set up a list of things I wanted to track in the Habit Tracking section of Capsicum—things that would improve my health, like eating fish (apologies to my vegetarian readers) and flossing my teeth, and things that would make me feel happy and accomplished, like writing code and blog posts. I don’t have any particular goals in mind, I just want to track how often I do all of those things and see if the numbers themselves might either motivate or encourage me. So far it’s motivated me to open Xcode and make little tweaks to Snapthread, even if just for five or ten minutes, nearly every day this month. It may not be much, but it’s something I can feel good about.

Screenshot of habit tracking in Capsicum
Yes, I changed my notebook color just for this screenshot

Anecdotes

I don’t think Ish and Heidi meant for Capsicum to be used as a daily journal, but I’ve found myself jotting little anecdotes in the Notes section below my daily to-do list. They’re mostly funny things Charlie said or did, and honestly I’m not really sure why I’m doing it because there’s no easy way to go back and view them. However, I’ve failed at every other attempt to use an app like Day One or even a paper journal, so, I guess it’s better than nothing!

App Development

It’s not that I don’t try to keep track of bugs and feature requests for Snapthread. It’s that they’re stupidly spread out in a bunch of different places. Some of them are e-mails flagged as important, others are scribbled in a paper notebook next to my recliner, and still others live in a checklist in Notes. Yeah. It’s ugly, folks. I decided to consolidate that mess into two checklists in the “Loose Leaf” section of Capsicum. That way, they live extremely close to my daily to-do list, which is just a couple tabs away. I can simply look at my feature request list, break a feature down into bite-sized tasks, and add those tasks to my to-do list.

To-Dos

I really love Capsicum’s daily, weekly, and monthly views. The daily to-do list is nice enough, but when I switch to the weekly tab I can see all the things I accomplished (or didn’t) for the entire week. The monthly tab allows me to set goals for the month and see a list of birthdays. Capsicum will optionally migrate unfinished tasks to the next day which is handy for filling me with shame (How many more days will I push off writing that thank you card to my aunt? 😭).

What I’ve learned from using Capsicum throughout the past few weeks is that I value the simplicity and convenience of having all these functions in one place over the robust feature sets of separate apps. It makes me happy to hear that Ish and Heidi are planning to add even more “modules” to Capsicum in the future.

Capsicum is available as a $1.99/month or $19.99/year subscription, with a 14-day free trial. From what I understand, you are not automatically charged at the end of the trial, so you can check it out without worrying about canceling if it’s not for you. If it is for you, make sure you give it some App Store rating/review love! It helps us indies out a lot.

2.0 Design Goals

Happy New Year! 🎊 I hope 2019 is off to a good start for you. I’ve been slowly getting back into coding since my daughter was born, sneaking in 30 minutes here and there in the evenings after the kids are asleep. I’m hoping to get Snapthread 1.9 submitted soon; it contains bug fixes, rudimentary support for still photos, the ability to loop clips, and makes the app compatible with the new iPad Pro screen sizes.

That said, I’m already thinking about Snapthread’s big 2.0 update. I don’t usually do “major releases” because I prefer to get new features out quickly, but now feels like the right time to slow down and really do a lot of work and polishing. A big update also invites more press coverage, is an opportunity for marketing, and can get Apple’s attention…gotta work toward that Apple Design Award, you know. 😜

My design goals for Snapthread 2.0 are simple and twofold:

  1. Improve accessibility. This will involve making my buttons even more button-y and using text labels in addition to icons for added clarity.
  2. Consolidate functions. Currently, every tool for editing a clip opens up its own modal view, with its own video preview. My goal is to make the clip editing interface more modular, swapping out tools below the same preview so that all editing (muting, cropping, trimming, looping, etc.) happens in the same view controller.

There are many more additional improvements that I’m hoping to cram into 2.0…but we’ll see. Some of them include: video transitions, the ability to add text to clips, Ken Burns effect for still photos, non-buggy support for time-lapse and slow motion videos, and auto-saving of recent projects to guard against losing work. I also want to continue improving the title card selections.

In order to finish 2.0, I’m going to need a good task management app. After watching the beta evolve over the past year, I believe Capsicum by Illuminated Bits may be the best app for helping me accomplish my goals this year. My next post will be all about how I plan to use it!

iPad Pro (2018) Impressions

(to the tune of Rudolph the Red-nosed Reindeer)
You know ‘Ticci and Gruber, @panzer and Ritchie
Marco and Jason, Joe and Rosemary
But do you recall, the most famous YouTuber of all?
MKB(in)HD, had a very shiny Pro…

Um, so, yeah. A bunch of great iPad Pro reviews/impressions have trickled out over the past few weeks—so many in fact that I was hesitant to even write my own. I agree with much of what has already been expressed: the hardware is great, the software has numerous pain points, and the answer to “can this device replace your laptop?” is the same as it’s always been, which is “yep, maybe, probably not.” Yep for a ton of people that use computers for light work and entertainment, maybe for professionals in certain fields or with particular priorities and workflows, and probably not for the rest.

As an iOS developer, I’m forced into the “probably not” category until something resembling Xcode makes its debut on iOS. However, as a blogger, amateur photographer, and consumer of fine internet content (gross, sorry), the iPad meets my needs just fine. Here’s my thumbs up/thumbs down for the third generation iPad Pro.

My Config

I ordered a 12.9” Pro, 256GB Wi-Fi only model in silver to replace my iPad Air 2. I also bought an Apple Pencil, Smart Keyboard Folio, and an additional rose gold case made by Ztotop which, for $30, is really pretty darn good. It’s sturdy, attaches via magnets like Apple’s cases, is as thin as possible, and comes in colors other than black and white.

Thumbs Up 👍🏻 

As a stay-at-home mom with a two year old and a two month old, the device I use as my primary computer has become a matter of accessibility. What allows me to sneak in tasks quickly? What can I carry around easily with one hand? What makes me seem more approachable and doesn’t create a physical barrier between me and my kids? An iPad is the best fit for this season of my life, so I’m overjoyed that Apple’s latest offering is smaller and more capable than ever.

First off, this device is aces for editing photos. I helped my sister-in-law “fix” her family Christmas card photo this year by lengthening someone’s shirt to cover their midriff. The Apple Pencil made a precise edit like that ridiculously easy. I also edited our own family Christmas card photo, as well as an entire photo book’s worth of pictures of the kids to send to my parents. I know someone’s said this before, but it almost feels like working in a darkroom, dodging and burning the old-fashioned way.

Yesterday my mom asked for a picture of the kids in their Santa jammies in front of the Christmas tree. It worked out better for me to snap a quick portrait of them during the day, but I still wanted to add some colorful bokeh from the tree at night (at which point I sadly realized my camera lens does not create perfectly round bokeh). I used Affinity Photo on my iPad to create this composite, which, while far from perfect, is still pretty cute:

Penny was less than enthused

Messing around with photos on my iPad has made me dream of an iPad model with an even better camera than the iPhone line-up. A “medium format” camera, if you will. Maybe Apple could even offer its own magnetic lens attachments. Shooting and editing using the same big, gorgeous display would be kinda cool I think. /end dream sequence

iOS 12 has improved the experience of transferring photos to an iOS device by leaps and bounds. It used to take forever to load hundreds of thumbnails from an SD card. Now, it’s really pretty snappy. I took a ton of photos at our family Thanksgiving with my Canon DSLR and within seconds was skimming through them on my iPad using the SanDisk USB-C card reader I bought for my MacBook Pro.

My favorite photo editing apps at the moment are Lightroom, Snapseed, and Affinity Photo. I’m also looking forward to the recently-announced Darkroom for iPad, which is currently in beta. Photoshop coming to iPad is more exciting for the role it might play in shaping the OS’s future than for its actual features.

Writing on an iPad Pro is pleasant. I’m currently typing this post in iAWriter using the Smart Keyboard Folio. I like the feel of the folio’s keys, and the dull “thwop” they make when you press them. The viewing angles for the 12.9” model are comfortable (a few people have complained that the angles on the 11” are too steep), and I don’t mind having the keys facing outward when in “tablet mode.” In fact, like Myke Hurley, I rather enjoy drumming on the keys and using them as a sort of fidget toy/musical instrument. (Where do I pick up my #MykeWasRight sticker?)

There’s a lot more to like about the iPad Pro, especially if you’re upgrading from an iPad Air 2 like I did. The display is top-notch, ProMotion is one of those things you don’t understand how you lived without, and the Apple Pencil is downright magical. It’s much heavier than the Air, of course, but still light enough to comfortably pick up with one hand. If you love iPads, don’t own last year’s generation, and have the dough: what are you waiting for? You should buy one.

Thumbs Down 👎🏻 

Look, I’ll be straight with you. This keyboard case is boring as heck. I ended up sticking a small Apple logo sticker on one side along with an ATP sticker to spruce it up a bit. The lack of color options (and case options in general) made me pretty crabby on pre-order day and honestly, I’m still pretty annoyed about it. Like, what is Apple thinking? The creative professionals they’re seemingly targeting with the iPad Pro line are exactly the kind of people who like to buy unique accessories that fit their personality. I just don’t get it.

This is what life with a two year old looks like.

There’s actually very few things I need to do that I can’t do on my iPad. In fact, I can rattle them off rather quickly: I can’t use my preferred banking app, Banktivity, because its iPad app doesn’t allow me to import OFX files; I can’t compare or copy and paste between two Microsoft Word documents side by side (or have multiple tabs of any app besides Safari); I can’t create a slideshow for my church’s weekly service because the presentation software, Proclaim, doesn’t have a full-featured iOS app; and finally, I can’t work on Snapthread.

Of course, there are also a number of tasks that are just plain clumsy on iOS, like discovering keyboard shortcuts (and, as John Gruber recently pointed out, basic functions like “Undo”), shuffling files between apps, managing fonts, and multitasking. All of these things can be improved via software update, and hopefully iOS 13 will address at least a couple of them (though I don’t know about you, but I’m trying to temper my expectations for June).

It’s clear to me that I’ve only scratched the surface of what the iPad Pro can do. Some of that is because the device’s performance potential exceeds its software’s capability. Most of it, however, is that I just don’t know what I’m doing. Matt Cassinelli’s video on iPad gestures is somewhere on my “watch later” list, but aside from that I feel overwhelmed by the number of iPad productivity tips out there.

On a Mac, you can poke around in the menu bar and find all sorts of interesting and useful functions. On an iOS device, exploring isn’t quite as easy, and functions are far from consistent across applications, making it much more difficult (in my opinion) to become an iPad expert than a Mac power user. That’s frustrating.

And then there’s this: to really thrive, the iPad needs a richer ecosystem of pro applications. Besides filling the obvious holes in its software line-up like Logic and Final Cut Pro (also Aperture 4ever ❤️), Apple needs to offer developers more capable APIs and continue to improve its App Store guidelines and practices.

For example: improve the revenue split, aggressively purge scammy apps from the store, stop nitpicking every little thing from developers with a good track record (alternatively, make the guidelines more clear), continue to explore new business models, and make it a helluva lot easier for developers to implement subscriptions. To an outsider like me, this doesn’t seem like rocket science. Perhaps it’s just poor organization, or utter cluelessness, or maybe it’s a stubborn unwillingness to even acknowledge (let alone address) these issues because it might negatively affect the bottom line. Whatever the case, it’s holding iOS back.

I long for a day when iPad reviews aren’t by necessity reviews of iOS. A day when we’re just bickering over specs, colors, ports, and keyboard layouts. Some say we’ll never see such a day while Tim Cook is at the helm. I prefer to remain optimistic. 2019 will be the year, I just know it. 2019, y’all. You’ll see.

I think.

Well, I mean, maybe.

Penny Rose

Nothing reminds me of the steady, relentless march of time so acutely as having a newborn baby (well, except maybe having a blog that I don’t update often enough 😅).

Penelope Rose Hansmeyer was born on October 15 via a scheduled cesarean section. For those interested, she was 7 pounds, 8 ounces and 19 inches long. Everything to do with her birth went incredibly smoothly—a stark but welcome contrast to my son’s birth two and a half years ago! And speaking of Charlie: he’s adjusted really well so far to having a baby sister. He calls her “Baby Penny” and likes to pet her hair (which, holy cow, she has a lot of hair!).

I’ve been incredibly blessed not to experience some of the darker challenges of motherhood, such as postpartum depression and difficulties with breastfeeding. Charlie was a terrible sleeper which resulted in us co-sleeping for over two years, and I guess time will tell with Penny, but overall I just feel overwhelmingly happy with my little family and our humble little life.

I just looked back at my post about Charlie’s birth and realized he was born shortly before the Apple special event which introduced the iPhone SE and 9.7″ iPad Pro. It’s fitting, then, that Penny was also born shortly before a special Apple event. I didn’t quite get my order in before the shipping dates slipped, but I’m looking forward to receiving a silver 12.9″ iPad Pro with Apple Pencil sometime before the 20th. It sounds like an amazing upgrade from my iPad Air 2, and I can’t wait to share my impressions with you.

In the meantime, though, I’m gonna cuddle with this little pumpkin. 😊