Status

Pro-tip: if you’re localizing your app yourself and you need to know what Apple calls a certain thing in that language (i.e. “Smart Albums”), just find a support article that mentions it and change your locale at the bottom of the page.

Status

I’ve been having quite a lot of fun localizing Snapthread with the help of some very generous translators. I’m copy & pasting the translations manually and it’s definitely hitting the “mindless data entry” sweet spot for me. Very relaxing.

Status

As I ponder App Store business models, my mind keeps coming back to this: making Snapthread free with a tasteful watermark in the corner, with an in-app purchase to permanently remove it. People who already paid for the app would be grandfathered in. Thoughts?

Status

The Falcon Heavy launch ? was one of the most incredible things I’ve ever witnessed and I was able to watch in on my phone, in HD, through my AirPods, while snuggling my son to sleep. ?

Status

iMovie hasn’t been updated for iPhone X. Also, I’m pretty sure it has to be using separate storyboards for iPhone and iPad, if it uses them at all. ?

Numbers

It’s been six days since I launched Snapthread 1.5, so I thought I’d share how it went in terms of downloads and revenue.

What I did differently

When I first launched Snapthread back in September, I did so with a blog post and a couple of tweets. Unsurprisingly, it did pretty poorly, with only a download or two per day. Right before Thanksgiving I decided to put it on sale for 99 cents which caused a modest bump in downloads for 4-5 days, but nothing spectacular.

Of course, Snapthread itself wasn’t particularly compelling at that point, since it only supported portrait photos and videos.

For version 1.5, I upped my game a little bit. I put together a new website, created new, more professional-looking screenshots, put together a press kit, set up a Search Ads Advanced campaign, tweeted about it, published a blog post, and e-mailed six media contacts. I also submitted the App Store Editorial form.

How it went

On Monday and Tuesday, several of my awesome Twitter acquaintances tweeted about Snapthread (some of whom have > 10,000 followers). On Wednesday, MacStories published a review. I was confused and excited when it continued to climb the charts in the Photo/Video category on Thursday, not realizing that another article had been published on iMore that morning. Snapthread’s ranking peaked at #108 before falling rapidly off the chart.

Snapthread was also posted to Product Hunt, but didn’t receive enough upvotes to trend.

Honestly, I still feel like a “nobody” in the iOS development world, so getting as much attention as I did for something I created was great fun. But did any of it translate into big downloads and revenue? Not really.

On the day the MacStories article was published, I made about $140. The next day, $103. Yesterday, $36.

What went wrong?

My gut feeling is that it’s just really, really hard to get noticed. Here are a few other guesses:

  • The app just isn’t good enough.
  • People don’t want to spend $2, or it doesn’t provide $2 worth of value.
  • Some folks don’t like Live Photos, or don’t see any use for them.
  • I didn’t e-mail enough people.
  • I didn’t have any videos showing how the app works.

I also didn’t advertise on Facebook or anywhere else because I honestly can’t afford it. I threw a few bucks into a Search Ads campaign which has so far resulted in 1,319 impressions, 22 taps and 1 conversion.

What’s next?

Next, I keep working to make Snapthread so darn good that it can’t be ignored. I chose this life for fun, not profit, so I’m going to keep on having fun and hope that someday I’ll make a profit.

Status

I honestly long for the days I can open up my Xcode projects on my iPad and edit them. A toddler won’t let you hide behind a laptop for long. It’s way easier to carry an iPad around the house and make a little progress whenever I can.

Status

TIL that requesting an AVAsset for a video in a user’s library returns an AVURLAsset unless the video is slow motion, in which case it returns an AVComposition. Guess I should have done more testing with slo-mo videos!

Assumptions vs. Complexity

At one point in episode 112 of Under the Radar (Ideal vs. Pragmatic), Marco and David talk about a dilemma that developers sometimes face: the choice between making an assumption, and exploding complexity. I thought I’d write about some of the times I encountered that fork in the road while building Snapthread, and how I decided to handle it.

My first opportunity to explode complexity reared its head the moment I selected File —> New Project in Xcode. I was immediately presented with the option to use Core Data. I stared at the empty checkbox. Did I want to persist data in Snapthread? Should my users be able to save their projects in order to return to them later?

Data persistence adds a huge layer of complexity to even the simplest apps. If I had decided to let users save their projects, I would have had to save an enormous amount of information in order to later reconstruct a video. And what would happen when I made the app universal? People would expect their projects to sync. I’m writing this post in Writemator 1.0, which doesn’t yet sync via iCloud, and I already wish it did.

In the end, I assumed that Snapthread’s users could complete their work in a single, short app session. They would open Snapthread, throw together a quick video in a matter of minutes, save or share it, and move on. Of course with this approach, Snapthread will never be a pro-level video editor, but that’s fine with me. It saves me a lot of work, and further emphasizes that Snapthread is meant to be fast and casual.

I made two more assumptions later on in Snapthread’s development: 1) that once I positioned the app as a visual studio for Live Photos, people would primarily use it for Live Photos, and 2) that if users did merge standard videos, those videos would be taken with Apple devices. Scaling and translating videos to work in any of 5 possible aspect ratios requires a lot of conditional branching statements. Each possible orientation (portrait, upside down portrait, landscape home button right, landscape home button left, and then all of those options again for the front camera…) ends up needing different translation values in order to position the video correctly. By assuming that a video’s original aspect ratio and pixel dimensions fall within a narrow range of choices, I prevented that tangle of if-elses from becoming completely unmanageable.

Honestly, I think one of the only safe assumptions you can make in software development is that at some point, someone is going to use your product in a way you didn’t anticipate. You can then choose to either address those edge cases, or say “sorry, you’re out of luck.” For instance, apparently you can’t add a soundtrack from your music library in Snapthread if your phone is jailbroken. There’s nothing I can do about that, and if there was, I probably wouldn’t do it.

I also think that if faced with the choice between making an assumption and exploding complexity, you should almost always choose the former. Incorrect assumptions can often be remedied, but it’s hard to dial back complexity. Just look at all the extra crap Facebook has added to Messenger in the past few years. Even if they wanted to simplify the app again, it can’t be easy to tear all that stuff out.

Anyway, it’s something to think about. What are some assumptions you’ve made while developing your apps?

Link

Snapthread on Product Hunt

Snapthread on Product Hunt

Someone was kind enough to post Snapthread to Product Hunt, and upvotes are of course appreciated. One of the challenges of launching (or re-launching) an app is maintaining some kind of momentum. Without it, the app will have a difficult time climbing the charts or gaining any additional exposure. I’m sure Snapthread’s downloads will fall off a cliff, perhaps as soon as tomorrow, and will settle into a 1-2 sales per day rut. I’m hoping to stave off that inevitable decline for a few more days, if possible!

Link

Snapthread on MacStories

MacStories Review of Snapthread

John Voorhees reviewed Snapthread over at MacStories, and it totally made my day.

Relatedly, for the first time in my life I feel comfortable telling people I meet that I make apps. “Independent app developer” is finally starting to roll off my tongue (and fingers) a little easier. Like, this is really happening…this is me…this is what I do. It just feels so darn cool, and also a bit surreal. Thank you to everyone who has offered kind words and encouragement over the past few years, as well as promoted my work. I wouldn’t be here, feeling cool, without you. ❤️

Snapthread 1.5

Snapthread 1.5 is now available! This update brings support for videos and Live Photos taken in landscape orientation. It also features a new icon and a number of small improvements designed to make the movie-creating process as fast, flexible, and simple as possible:

  • You can now square-crop your videos and adjust the cropping area of individual clips.
  • Your final video can be exported in any of the following aspect ratios: 3:4, 4:3, 9:16, 16:9, 1:1.
  • Video clips in the opposite orientation of the one you selected will be letterboxed or pillarboxed by default. You can change this behavior on the new Settings screen.
  • There is now an option to automatically save your video to your Photo Library when you tap the Share button.
  • You can now 3D Touch a photo or video on the video selection screen to preview it before selecting it.
  • You can now mute all of the clips at once from the music selection screen.

With this update, Snapthread becomes the best app for combining and sharing Live Photos. Personally, it has completely changed the way I think about and take Live Photos. I’m much more likely to keep a subpar photo now if the underlying video is good. And since Live Photos also capture the moment before I take the picture, I find myself mashing the shutter button while Charlie is saying something cute, knowing that I likely captured most, if not all of it.

Anyway, I hope you like the update and I’m looking forward to getting started on the iPad version in March!

Status

Every once in awhile I have to fight off the urge to go through my blog and delete old posts that I consider stupid or poorly written. I have to remind myself that they’re all part of the journey; I’m a better writer now than I was four years ago, and a better programmer too.

Snapthread Roadmap

Landscape support is coming to Snapthread on Monday. It seems like such an obvious thing, and I’m sure anyone who hasn’t been following Snapthread’s development is wondering why on earth I didn’t support landscape videos to begin with. The truth is, this app seems to have taken on a life of its own, and has whisked me far away from the path of my original intentions. What started as an app to merge Snapchat videos is now on its way to becoming a complete video studio for Live Photos.

I didn’t anticipate that, but I’m excited. Really excited. To me, Snapthread 1.5 is really Snapthread 1.0. The beginning of a new app.

I have so many ideas for the future, but for the next point release I’m waffling between these two priorities: revamping the title card system, and making the app universal.

Currently, title cards are extremely boring and limited. However, they’re also not an essential feature, and the app still does something really useful without them. So, I’m leaning towards focusing on the iPad version for the time being. I’m also really hoping that I’ll generate enough revenue over the next few months to hire a designer to help me with some fun backgrounds for titles. Perhaps making the app universal would also boost sales and help fund that.

Anyway, here’s a list of features I think might be cool additions to Snapthread:

Planned before 2.0

  • iPad support
  • New and improved title cards (multiple title cards that can be rearranged, have fun backgrounds and fonts, etc.)
  • For the initial view for video selection to be similar to Photos’ “Moments” tab, to make it easier to find what you’re looking for

Wishlist for the future

  • Video filters
  • Stickers maybe?
  • Localization
  • Ability to select a particular time range of background music
  • A way to either manually auto-generate or perhaps have the app surprise you with a video based on a “moment” in your photo library. Similar to Photos’ “Memories” feature.

I’m committed to improving Snapthread as it’s become one of my own most frequently-used apps. I love making compilations of Live Photos and videos of Charlie to post on Instagram or send to my parents, who only get to see him in person a handful of times per year. I hope others will get as much enjoyment from it as I do, and will consider it $2 well spent.

I think I’m going to take the month of February off from programming, and focus on blogging, taking care of myself, and spending more quality time with my family. I’m looking forward to relaxing, writing, and chatting with you all via Twitter, e-mail, or Micro.blog.