By Casey Liss
The Future of Apple Pay

In lamenting his recent litany of replacement credit cards, Dr. Drang makes an interesting prediction regarding the future of Apple Pay:

As I said after the September keynote, I like everything about Apple Pay and hope it’ll reduce the credit card fraud problem, but despite the cooperation of many banks I find it hard to believe Apple Pay will become ubiquitous. Apple users make up only a fraction of credit card users, and the banks will be forced to come up with their own solution. When that happens, if it’s done right, support for Apple Pay will fade.


I’ve written about Workflow recently, and how I’ve really enjoyed playing with it and seeing what I could accomplish. In speaking about it on a recent episode of ATP, I was asked what problems I was really solving with Workflow. I had answers, but admittedly, none of them were very good.

Now, I have a better example.

As with all egomaniacs podcasters, I check our download statistics regularly. We use a Perl script that John wrote that will aggregate our numbers and emit JSON. We can then put this URL into Panic’s wonderful app, Status Board, and see a graph of our recent numbers

It should go without saying all these numbers are made up for the purposes of this post.

Fake Download Graph

That’s all visual, and is great to show trends. Sometimes, I like to know actual numbers. Last night, it occurred to me I could parse the JSON that we use for that graph using Workflow, and have it perform the calculations for me. I wanted to calculate the lifetime average, as well as the average for the last 10 episodes.

The JSON that generates that graph, and that I used for Workflow, looks approximately like the following:

{
  "graph" : {
    "refreshEveryNSeconds" : 900,
    "title" : "ATP",
    "datasequences" : [
     {
       "datapoints" : [
         {
           "value" : "123456",
           "title" : "88"
         },
         {
           "value" : "126543",
           "title" : "89"
         }
       ]
     }
   ]
  }
}

You can get more information about the JSON schema on Panic’s site.

The workflow I wrote, without the requisite JSON URL, is here, but I’d like to replicate it below as best I can:

  1. Start with the URL of John’s script
  2. Translate the contents of that URL into a Workflow dictionary
  3. Get the value for the key graph
  4. Get the value for the key title
  5. Get the value for the key datasequences
  6. Get the value for the key datapoints
  7. Set that item (the array of datapoints) as the variable Episodes
  8. Count the number of items in that array
  9. Set that count to the variable Count
  10. Start with the number 0
  11. Set that number to the variable Sum
  12. Start by getting the variable Episodes
  13. Repeat with each episode:
    1. Get the value for the key value
    2. Perform an addition with the variable Sum
    3. Store the sum in the variable Sum
  14. Start by getting the variable Sum
  15. Perform a division with the variable Count
  16. Format that number to have only one decimal place
  17. Set that average to the variable Lifetime
  18. Start with the number 0
  19. Set that number to the variable Sum
  20. Start by getting the variable Episodes
  21. Repeat 10 times:
    1. Get the variable Count
    2. Perform a subtraction with the index of this loop
    3. Perform a subtraction with the number 1
    4. Set this to the variable Item Number
    5. Get the variable Episodes
    6. Get the item at index Item Number from the list
    7. Get the value for the key value
    8. Perform an addition with the variable Sum
    9. Store the sum in the variable Sum
  22. Get the variable Sum
  23. Perform a division with the number 10
  24. Format the number to only have one decimal place
  25. Set that average to the variable Last Ten
  26. Start with the text: Average Downloads\nLast 10: {Last Ten}\nLifetime: {Lifetime}
  27. Store that text in the variable Message
  28. Show an alert with the body Message

That is, admittedly, quite a few steps. The rough equivalent of the above, as written in Javascript, is below. The Javascript is quite a bit easier for me to understand — and write — than what I’ve done in Workflow.

Nevertheless, like I said in my previous post about Workflow, part of the appeal to me is making something complex work with relatively rudimentary tools. That’s exactly what I’ve done above.

In combination with Status Board, I can quickly and easily get either qualitative or quantitative data. Status Board provides me with a visual representation, while Workflow gives me quantitative information.

I am still really impressed with the power of Workflow, even if it comes at the price of being clunkier to work with than a true programming environment.


Holidays 2014

Erin and I always enjoy the holiday season; this year was no exception. Though we both come from rather tight-knit families, we’re busy, just like everyone else. I love the holidays because it compels us all to slow down and spend time with one another.

This year, the holidays were even better than usual for a couple reasons. For one, my parents have retired just 45 minutes west of us. For the first time ever, we could celebrate both holidays with both sides of the family, without a 6-10 hour car ride between.

But most importantly, this holiday was amazing thanks to our new arrival. Having geographically distant relatives meet Declan was amazing. Everyone’s reaction was unique, which made every introduction that much more special.

Here are a few of my favorite photos from this holiday season:



Workflow for iOS

After hearing about it repeatedly from Federico, I finally took the time to try out Workflow, a new app for iOS. Workflow allows you to — guess what — create and run workflows on your iPhone or iPad. These can automate any sort of task, but what amazes me about Workflow is the amount of power that is hiding just beneath the surface.

I downloaded Workflow not really knowing what I wanted to do with it. I had a hammer but distressingly few nails.

Every week I download the released versions of both of my podcasts, to keep on my NAS, because I am a pack rat and love myself too much. While this isn’t a particularly involved task — I just have to go to the website and copy the link to the mp3, and then use DS Download to download them.

Taking Analog as an example, here’s how I accomplished it:

In short:

  1. Go to the URL that will auto-redirect to the latest episode
  2. Get the contents of that URL (i.e., get the HTML)
  3. Get all the links (<a />) out of that HTML
  4. Scan each link for the word “libsyn”
  5. Use that to open another app. I’ll then either copy it to the clipboard or open the app to download it.

This probably saves me just a couple seconds each week; yet, I’m excited to be able to do it.


Additionally, I have a bookmarklet I use to generate Amazon Associates links from the active page in Safari. However, it’s a little clunky trying to copy and paste the result of that bookmarklet. So, I wrote a workflow. This one I can engage using Workflow’s very clever extension:

You can find that workflow here. Take note that unless you want to line my pockets with my affiliate link, you’ll want to change my Tracking ID to yours.


I’ve found myself really enjoying using Workflow, and I’ve been struggling to put my finger on precisely why. What it boils down to is that Workflow becomes a game of engineering. It’s an engineering challenge to do difficult and complex tasks with the most basic and limited of tools.

To be clear, the app is extremely advanced, and I can’t believe some of the things I’ve seen it do. Yet compared to having a full programming environment at your fingertips, Workflow is extremely crippled. I imagine it’s like trying to paint with bricks instead of brushes. To create something advanced with such limited tools is a challenge that I enjoy. Lately, I’ve found myself playing more with Workflow than I have with Crossy Road.


Appearance: Fracture Blog

After mentioning some of my adventures in photography now that Declan is here, I was asked by Drew at Fracture to answer a few questions about what I’ve learned.

You can check out the brief interview over at the Fracture blog.

Do yourself a favor and order a Fracture. They print photos onto glass, and the results are beautiful. I’ve gotten a couple already and they’re awesome. I’m paid to say that on ATP, but not here, so you know I really mean it.


Clarkson on Manuals

I’ve spoken about my love of manual transmissions in the past. Drivers like myself that prefer them are a dying breed. Jeremy Clarkson, of Top Gear, has written a post with some thoughts of his own:

It was convenience that killed off the LP, and yet more convenience that heralded the demise - in about a month - of the CD. Because when a better idea comes along, it’s incredible how quickly it takes off. One minute, you had a phone on your hall table. The next, you didn’t. Because it was in your pocket, or on your wrist.

Oh, I know there will be some snuffly noses and damp handkerchiefs from the purists. But look at it this way: when we are all driving hybrid cars that can find their way around by themselves and sipping fuel in the same way that a vicar sips his tea at an old lady’s funeral, there’s nothing to stop people who crave the past driving a big V8 with a manual 'box and a longwave radio.

In the same way that today the horse is completely useless. You can’t even eat it. But the countryside is full every weekend with people using them just for fun.

In my brain, I know that Jeremy is right. Advancements such as the dual-clutch gearbox have nearly all the benefits of a traditional manual transmission, with almost no drawbacks.

My heart, however, will always love a traditional manual. I will always love the challenge of gracefully using three pedals with only two feet. What I said in 2010 still holds true, four years later:

Thanks to Aaron McLeod for sending me the link.

Quick programming note: eagle-eyed bat-eared (?) listeners of Analog(ue) #18 will recognize this as the post that I didn’t think was worth posting. Enough of you were kind enough to ask for it, so, here it is. :)


Tacky Lights from the Sky

As previously mentioned, Richmond takes Christmas lights really seriously. One of my favorite houses is Christmas on Wendhurst. The owners are really nice, and the display is always really well done.

This year, someone took a drone out and filmed the Wendhurst house. The results are as cool as you’d expect:

See if you can spot what the neighbors do to their house in the video. It’s quite funny. If you can’t, here is a shot from a year ago.

Additionally, some of the facts and FAQ answers on the Christmas on Wendhurst site are really astounding. A few highlights:

  • Over 170,000 lights
  • Set up starts in early September; teardown ends in February
  • Their electric bill is an additional $1,000

Fast Text Financials

In the past, I’ve seen some developers — most notably Jared Sinclair — open up regarding the living they’ve made off the App Store. I’ve always found these sorts of posts fascinating (see also Pomplamoose’s recent tour dissection). Here’s the lifetime financials of my recently discontinued app, Fast Text.

Income

Year Total Apple Payments
2010 $43.10
2011 $118.65
2012 $89.76
2013 $295.36
2014 $282.52
Total $829.39

It’s worth noting that Fast Text didn’t debut in the App Store until late June 2010. Additionally, it was only updated a few times. The only “major” update was to add support for sending e-mails (in addition to text messages). Otherwise, the app has mostly remained stagnant since 2010.

Expenses

Year Item Cost
2010 Apple iOS Developer Membership $99
2010 Opacity Express $40
2011 Apple iOS Developer Membership $99
2012 Apple iOS Developer Membership $99
2013 Apple iOS Developer Membership $99
2014 Apple iOS Developer Membership $99
Total $534

I used Opacity Express in order to generate my awesome icon. Otherwise, the only thing I paid for was the annual Apple iOS Developer Program membership.

I don’t consider WWDC as an expense related to Fast Text, though I’ve gone from 2011-2014. Of those four times, only once have I paid my own way; the rest of the times work paid for me to go.

Analysis

Let me start by saying that I earned $295.39 from Fast Text during its lifetime. That certainly isn’t bad, but broken down a bit, the picture is less rosy.

Let’s take the total duration of time Fast Text was in the store as 4.5 years, though it was actually slightly less. With that in mind, let’s look at some averages:

Yearly Profit: $65.64
Monthly Profit: $5.47
Weekly Profit: $1.26
Daily Profit: $0.18

That… isn’t that much. Surely more than nothing, and I’m thankful to finally be in the black. However, that almost wasn’t the case.

In 2013 and 2014 both, Fast Text was mentioned on ATP. That led to huge spikes in downloads:

Sales Chart

Before those two mentions, Fast Text was not actually profitable at all. In fact, it wasn’t profitable until at least its third year in the App Store, after the first spike.

The only easy and semi-direct comparison I have is Bugshot, Marco’s far-more-useful-but-also-$0.99 app. It earned Marco quite a lot more money — over $3500 — in just a few weeks.

To Be Clear…

  • The app was $0.99 for its entire run. The price was never changed.
  • I didn’t market the app outside of a couple mentions on ATP.
  • I didn’t put near enough care into it, hence it getting discontinued.
  • The app was really simple. Far simpler than many other $0.99 apps.
  • Not updating your app is undeniably not the path to financial success.

My experience may not be yours. It may be better. It may be worse. If nothing else, it’s just another data point.

Burn It Down

On the latest episode of Analog(ue), we discussed self confidence. One of the facets of this discussion was that I’m reticent to join Flickr and put my photographs online, because I have so many friends that are way better photographers than I am. I don’t feel like my photos are up to snuff.

Matt Gibson had a bit to say about that feeling:

…that’s one of the major differences between a good photographer and a bad photographer: developing the discernment you need to throw away the rubbish. To show people only your best photos.

Matt makes a really great point.

I’ve been trying to get better about “burning”, as Matt calls it, less-than-perfect pictures. I’ve already been taking the same approach with blog posts. I have several posts I’ve written — even completed — but not published.

Being that self-critical can be difficult, but it makes me a better writer, and a better photographer.


Fast Text Discontinued

After four years, five months, and twelve days, I have removed Fast Text for sale from the App Store. I pulled it this past Wednesday.

Fast Text is an app that, when I released it, I was very proud of. When I started, I didn’t know any Objective-C, but I somehow learned enough to get Fast Text into the App Store. In fact, that was Fast Text’s real purpose: to allow me to say “why yes, I do have an app in the App Store”. As an added bonus, it allows me to quickly send recurring messages (“On my way”, “Leaving now”, etc.) to Erin.

Fast Text has served both of these purposes, but it has gone on to overstay its welcome.

It is no longer an app that I am proud of. Fast Text hasn’t been updated since March of 2013. It hasn’t been updated for iOS 7, much less iOS 8 nor the new iPhones 6. Fast Text is quite obviously from a bygone era. I don’t know when I’ll have time to properly update it, and to continue to charge even just $1 for it is disingenuous.

Furthermore, now that I have some amount of "fame", I can’t help but feel that I’m subtly hinting to people that perhaps I’m not very good at being a developer. That I don’t really know what I’m talking about. That I’m a fraud.

Problems

Ever since iOS 7 was announced, I got questions about when Fast Text would be updated to support the new look and feel. Given that the app is entirely vanilla UIKit, updating for iOS 7 doesn’t really amount to much. However, the new message screen had some rotation bugs, which I really wanted to fix. I started down the road of converting it to Auto Layout, but ran into a world of problems.

They are likely problems of my own creation, but for a project that I have precious little time to work on, they seem insurmountable.

Races

As time went on, everyone joked about whether Overcast — an entirely new app — would be released before I shipped the Fast Text update for iOS 7.

Overcast won.

The joke then moved on to “will the iOS 7 update come out before iOS 8?”.

iOS 8 won.

At some point, the jokes got really old; likely because of the guilt I felt about the situation. As with all good jokes, they struck home because they were justified.

Eventually, I stood back, looked at the situation, and realized enough was enough. I should stop kidding myself, realize I won’t ever find the time to update it, and just move on.

Why not make it free?

I’ve been asked several times — most notably by John during the latest episode of ATP, why I wouldn’t just make Fast Text free?

I certainly could, but I’m not sure what that really accomplishes. Yes, the app still works, but it doesn’t represent something I really want to attach my name to anymore. I’d rather it not exist than for it to continue to exist in its current form.

Why not open source it?

Candidly, I have nothing to gain by doing so. I don’t think the community does either.

Why not pull a Marco?

After ATP, I actually got a couple of propositions from individuals wanting me to sell. While extremely flattering, I don’t really see the point. It would be nice to have a little extra cash in my pocket, but surely I value Fast Text more than anyone else does.

Additionally, for better or worse, I don’t want to see it live on under anyone else’s control. I’d rather Fast Text cease to exist than become a completely different entity.

Thanks

To any of my customers over those four years who bought Fast Text, thank you. Every single sale made me smile, and not (usually) because I was getting ~$0.70. It was extremely nice to know that something I did, all by myself, including the horrendous icon, was worth even just a little of someone’s hard-earned money.

For those of you that may have bought it on a lark, just as a way to throw a little cash in my pocket, thank you. It is wholly unnecessary, but I appreciate it. I hope my silly little app provided at least a little bit of use to you.


I may write another app in the future, but to be honest, it’s not likely. For now, I’m just going to continue to pour my energy into Erin, Declan, this website, ATP, and Analog(ue). That’s more than enough to keep me busy.