Developing Perspective

#197: Speculative Development.


00:00:00   Hello and welcome to Developing Perspective. Developing Perspective is a podcast discussing

00:00:04   news of note, anonymous development, Apple, and the like. I'm your host, David Smith.

00:00:08   I'm an independent iOS developer based in Herner, Virginia. This is show number 197.

00:00:12   Today is Friday, October 3rd. Developing Perspective is never longer than 15 minutes, so let's

00:00:18   get started. All right. So I'm going to be talking today about what I call, I guess,

00:00:26   speculative development and the role

00:00:29   that it can kind of play in keeping you, as a developer,

00:00:32   sane and happy, as well as potentially creating

00:00:34   opportunities for yourself down the road.

00:00:37   And this is drawing from-- I always

00:00:39   like to try and draw it from topical experiences

00:00:41   that I'm having as a developer.

00:00:43   And so today I'm going to be talking about my experience

00:00:46   with an app I just released called Emoji++.

00:00:49   So back this summer, when Apple announced

00:00:52   that you could do custom keyboards,

00:00:55   Like I've said many times on the show, whenever a new API,

00:00:58   a new major piece of functionality comes out,

00:01:00   I always try to think, well, what would I do with that?

00:01:02   What could I do with that?

00:01:03   How could I make use of this hot new technology in a way

00:01:07   that-- what could I build now that I previously wouldn't

00:01:11   have been able to build?

00:01:12   Because that's ultimately the question that is most

00:01:14   interesting with major iOS updates.

00:01:16   Like, it's all the compatibility stuff.

00:01:17   There's the things that are getting better and better.

00:01:19   But what's really interesting is the things

00:01:21   that are completely new that you just couldn't do before.

00:01:24   And keyboards is definitely one of those things.

00:01:26   You just couldn't do keyboards before.

00:01:28   Now you can.

00:01:29   And I always love trying to also wrap my hands

00:01:31   around these new technologies to make sure

00:01:33   that I have a good understanding of how the platform works,

00:01:36   that I have a good understanding of most of the parts about it.

00:01:39   And in general, I would say I do.

00:01:40   Like if it's everything that isn't related

00:01:42   to graphics and games, I have a pretty good understanding

00:01:45   about how it works on iOS, just from having

00:01:46   done this so many times.

00:01:48   And so when I saw a keyboard, I was like, what would I do?

00:01:50   What about the current text input methods

00:01:53   I not like on iOS?

00:01:55   And the honest answer for text is I don't really have any many complaints.

00:01:59   The iOS 8 keyboard is great for me.

00:02:01   I like the little predictive thing at the top.

00:02:03   I've played around a little bit with some of these ones since they've come out with

00:02:06   like the swipey things and some people swear by them.

00:02:09   They don't really do it for me, but I think a lot of that's just muscle memory and if

00:02:12   I switched, I'm sure I could get used to it, but I don't really feel compelled to switch.

00:02:16   But I did think about one thing that always kind of annoyed me and that was how the way

00:02:21   the emoji keyboard worked on iOS. Yep, this is going to be me talking about emoji, which

00:02:27   if you're not familiar with, emoji are those little, these tiny little, I don't know how

00:02:33   to say it, these little pictures of funny, silly, interesting things that you can send

00:02:38   as part of text messages or as part of tweets or emails or whatever. And there's a really

00:02:45   powerful way to convey meaning concisely. So what I love about emoji is that you can

00:02:50   sends someone a thumbs up. And a thumbs up carries with it a lot of good meaning without

00:02:56   having to like deal with all the nuance and connotation of actually writing it out and

00:03:00   message out in prose. It just be like, yeah, I acknowledged I hear you coming soon. Hear

00:03:06   that. Yes, you're awesome. Like there's so many different meanings that you can kind

00:03:09   of put on it that I really like it like it for communication. And I'm good friends with

00:03:13   with a guy named Casey Liss, you may have heard of,

00:03:16   who loves emoji and has perhaps raised my level in terms

00:03:24   of emoji use.

00:03:26   But I always hated the emoji keyboard on iOS,

00:03:29   because it was built in this kind of just mind-bending way,

00:03:32   where it has these five pages or tabs,

00:03:35   and then within those tabs, there's up to 10 sub-pages

00:03:39   that you swipe through.

00:03:41   And so if you don't know exactly where you're looking for,

00:03:43   it's almost impossible to find anything.

00:03:45   And even if you do know what you're doing,

00:03:47   you're probably sitting there swiping like five or six times

00:03:49   to find it.

00:03:50   And fair enough, over time this gets better,

00:03:53   because the emoji you actually use

00:03:55   end up on your recently used page,

00:03:57   and so you can find them there.

00:03:59   But that's kind of awful.

00:04:00   That's kind of a hack.

00:04:01   And so I was like, well, how could I make this better?

00:04:06   It's kind of silly.

00:04:07   Emoji is silly.

00:04:08   It's fun.

00:04:08   But it's something that I thought

00:04:12   would be worth trying to tackle.

00:04:14   And it's a nice, focused, simple problem.

00:04:16   So I figured, let's try this.

00:04:18   Now, the tricky thing, of course, with that

00:04:20   is that I knew previously Apple has stopped

00:04:24   approving emoji-related apps, as far as I know.

00:04:27   I'm not completely confident on that.

00:04:28   But I know there was a period where emoji apps were

00:04:30   everywhere.

00:04:31   And they were ultimately kind of scammy,

00:04:33   because all they really did was enable the emoji keyboard,

00:04:37   initially was only available, I think,

00:04:38   in Japanese localizations or something like that.

00:04:41   It wasn't really doing what it said on the tin.

00:04:46   It wasn't giving you an emoji keyboard so much

00:04:48   as enabling a system feature.

00:04:50   And so after a while, Apple said,

00:04:51   you know, we're just going to enable the emoji keyboard

00:04:54   by default, which it does now.

00:04:55   And we're not going to allow these apps that are just

00:04:57   kind of trying to present them as though if you get this app,

00:05:01   then suddenly you get emoji when in reality you've

00:05:04   had an emoji keyboard all along.

00:05:06   And so that as a developer, especially

00:05:08   as an independent developer, when

00:05:09   I see those types of tensions, like I have this idea.

00:05:12   I have this thing that I think would be cool and fun to build.

00:05:15   But at the same time, I know that there's

00:05:18   a reasonable chance that this may not get through App Review,

00:05:21   that Apple has in the past said this type of app is not OK.

00:05:26   And obviously, this is a new context.

00:05:27   This is completely, in some ways,

00:05:32   It's a completely unplowed field about what

00:05:36   Apple is going to allow, how you're

00:05:39   going to have to structure an app so that it would be approved.

00:05:42   And so whenever I'm in this situation--

00:05:44   it's happened many times before--

00:05:46   I always have to think about how can I kind of speculatively

00:05:49   build this app?

00:05:50   How can I build this feature or build this thing in such a way

00:05:55   that I'm not going to spend way too much time working on it,

00:05:58   ultimately to find that it ultimately gets rejected,

00:06:02   which has happened to me before, that I've had an idea,

00:06:04   I've put it out there, and it gets rejected.

00:06:06   And it's tragic when you hear these stories happen.

00:06:08   It's like there was a guy recently

00:06:10   who built a launcher app as a today widget,

00:06:13   and he was just rejected and pulled from the store.

00:06:16   And that stuff happens.

00:06:17   And it's just part of the deal of being in the app store

00:06:20   is that Apple makes the rules, and they enforce the rules,

00:06:23   and they're their rules, and that's fair enough.

00:06:26   So anyway, this is what I run into.

00:06:30   And so what I decided to do with Emoji++ is I was like, OK,

00:06:34   this is a simple enough app.

00:06:35   I'm just going to kind of build it.

00:06:36   Build a basic-- I hate the term minimal viable product,

00:06:39   because I think it has a lot of connotation on it

00:06:42   that I don't think is necessarily helpful.

00:06:44   But I try and build something that

00:06:46   is useful and straightforward, which I think

00:06:50   is a much more constructive way to say that.

00:06:52   If I build something that's useful and straightforward that

00:06:54   addresses this need and problem, and I'll put that in the store,

00:06:57   and I'll see what Apple does.

00:06:59   And so I did that.

00:07:00   And my concept, if you don't have the app,

00:07:02   it's pretty straightforward.

00:07:03   But rather than having this weird paging interface,

00:07:06   I have all the emoji in one big list.

00:07:07   And then I have a jump bar on the side

00:07:09   to quickly navigate around the categories, which

00:07:11   in my experience is so much faster and so much simpler

00:07:14   because I can swipe up and down a scroll view in iOS

00:07:20   like the Dickens.

00:07:21   I mean, I'm very good at that.

00:07:22   I've been doing it now for six years.

00:07:24   I have incredible speed and control

00:07:26   as flipping things around.

00:07:27   And my eyes are very good at scanning through and seeing

00:07:30   you, oh, there's the eggplant.

00:07:32   Oh, there's the cactus.

00:07:33   Oh, here's the smiley face with the one eye closed.

00:07:37   Like, whatever it is that I'm looking for,

00:07:39   I can very quickly find it.

00:07:41   And so I went and I built that.

00:07:42   And that process was interesting.

00:07:45   Any time you use a new API, you always

00:07:47   run into odd issues, things that you wouldn't have expected.

00:07:51   Early on in iOS 8's betas, the simulator and debugging

00:07:56   interactions were kind of broken.

00:07:58   But they actually work really well now.

00:08:00   So that's thumbs up for tools there.

00:08:03   But the process of getting to that point,

00:08:07   it took a little while, but it got there.

00:08:10   And the app works now.

00:08:12   And so I got it ready roughly for iOS 8.

00:08:15   When they announced the actual gold master of that,

00:08:21   and iPhone 6 and 6 Plus, I did another round of testing,

00:08:24   made sure it worked reasonably well on the bigger screens.

00:08:27   Which actually, in this case, actually works kind of nicely

00:08:29   because it's a universal app.

00:08:31   It works on the iPad as well.

00:08:32   So most of that was for free.

00:08:34   It was just testing.

00:08:35   And I submitted it.

00:08:37   At this point, I probably only spent a few-- honestly,

00:08:40   a few days of work to get it to this point.

00:08:43   Because like I said, I'm being a little bit cautious.

00:08:45   I'm being a little bit speculative

00:08:47   about my investment into this.

00:08:49   Because if I'd gone and spent weeks or months

00:08:51   on polishing and doing everything

00:08:53   you could imagine with this app, one thing, hey,

00:08:56   the app might have actually ended up being worse,

00:08:58   because it would have had too many features, which

00:09:00   kind of eliminates the whole purpose in the first place.

00:09:02   And two, I could have spent a lot of time

00:09:04   that ultimately I may not have any return for,

00:09:07   if it just ends up being rejected or stuck in App Review

00:09:09   or something like that.

00:09:11   So the app goes into App Review.

00:09:13   And it's sat there for about a week and a half

00:09:17   or something, like most people have been seeing recently

00:09:19   with App Review, which is kind of just part

00:09:21   for the course this time of year.

00:09:22   But it's a little frustrating sometimes.

00:09:25   But then it got its first rejection.

00:09:27   And well, it got its only rejection, thankfully.

00:09:29   But it got rejected.

00:09:30   And there's a line in the App Store policy

00:09:35   that in the current review guidelines

00:09:37   that keyboards have to include numerical keys, which

00:09:42   is just in the guidelines.

00:09:43   And I thought I'd address that in some ways,

00:09:47   maybe perhaps kind of tongue in cheek,

00:09:49   because the emoji keyboard does include the emoji numbers, which

00:09:53   which are the numbers inside of blue boxes.

00:09:56   But I don't think that was actually

00:09:57   really what they meant.

00:09:58   And so fair enough, they said, that's in the guidelines.

00:10:01   You don't seem to do that.

00:10:03   So fair enough.

00:10:04   Actually, when I saw a couple of people that had that type

00:10:10   of rejection, I went in and added that,

00:10:13   had my build already.

00:10:14   As soon as I got my rejection, I resubmitted

00:10:16   with a build that includes the actual number characters,

00:10:19   just so that they're there.

00:10:20   And then I waited another week.

00:10:22   And then yesterday happened, and the app got approved.

00:10:27   It went out into the world.

00:10:28   And the response has been kind of remarkable.

00:10:30   It's for something that I honestly

00:10:32   wasn't sure there'd be a market for, because it's

00:10:35   kind of whimsical, and it's kind of silly.

00:10:38   And it's something that's tied into the way that I use my phone,

00:10:42   and I didn't really know if anyone would actually

00:10:44   find that nice.

00:10:45   But so far, the response has been kind of remarkable

00:10:48   and really cool.

00:10:48   It's been linked up to in a lot of places,

00:10:50   a lot of places that make me really proud to hear people saying that they like it.

00:10:56   And that's genuinely cool.

00:10:59   I've been doing this long enough that at some point you can kind of get numb to the reception,

00:11:04   and that's kind of a defense mechanism that you kind of have to build because inevitably

00:11:09   with the good come the bad, and the bad can be really biting and really affect you.

00:11:15   And so it's definitely something that you build a thick skin

00:11:19   about, but when things like this happen

00:11:21   and people really seem to genuinely find it useful

00:11:24   and really enjoy it, it's very rewarding.

00:11:26   And it's kind of a reminder of why

00:11:28   I do this in the first place.

00:11:30   That feeling and that experience is far more important and part

00:11:35   of what motivates me to do what I do

00:11:37   than any of the other aspects, the business aspects

00:11:40   or the lifestyle aspects of being an independent developer.

00:11:43   It's things like this in emoji where people are just like,

00:11:46   this is great.

00:11:46   Now I can communicate better with my significant other.

00:11:51   Or I just have fun.

00:11:52   I could put a smile on someone's face.

00:11:54   That's far more important and far more ultimately rewarding.

00:11:58   But then the downside, of course,

00:11:59   of speculative development is that it has a couple of issues.

00:12:02   Like there weren't so many bugs.

00:12:04   There were a couple of things that I wasn't expecting.

00:12:06   There's a weird issue that if you have guided access,

00:12:09   the accessibility feature turned on,

00:12:11   and your keyboard doesn't request full access,

00:12:13   which I don't because I don't want to send your keystrokes

00:12:16   to the internet.

00:12:17   There's apparently a weird interaction

00:12:19   where it won't load, which I will be filing a radar about.

00:12:22   And hopefully Apple will resolve in a way that makes sense.

00:12:25   Because I really would prefer to not have to request full access

00:12:27   because I like knowing that there's nothing I can do that

00:12:30   is accidentally leaking someone's private information

00:12:33   out into the world.

00:12:34   That's the whole point of not having

00:12:37   to request guided access.

00:12:38   So I'll be submitting a radar about that.

00:12:41   And there was an issue with managing your favorites

00:12:43   and a few other bugs.

00:12:44   But now that I have the base and I put it out into the store,

00:12:47   I know it's approvable.

00:12:49   Apple has already demonstrated that to me.

00:12:51   I know there's a market for it.

00:12:53   And so now I can iterate very quickly.

00:12:54   And within the first 12, 18 hours,

00:12:57   I just plowed through on getting the update out

00:13:00   that addresses the 99% issues that people are having.

00:13:03   It makes the UI a little tighter.

00:13:05   It's one thing I love is when you put an app out

00:13:08   and you have a couple of designers.

00:13:09   Like obviously this can get a little tricky.

00:13:11   But having designers who are then

00:13:13   going to be able to be like, you know,

00:13:14   if you did this one little thing in this one little place,

00:13:17   your app would look a lot better.

00:13:18   And that kind of feedback is really helpful for someone

00:13:20   like me who isn't really a designer.

00:13:23   And so that's what I did.

00:13:24   And the next bug fix update is up and waiting for Apple.

00:13:27   Unfortunately, it might be about a week until it comes out.

00:13:30   But that's the process I went through.

00:13:33   And I would encourage you, if you're

00:13:35   listening to this as your developer,

00:13:37   And you're struggling with what you-- like getting started.

00:13:41   And you're something I hear talked to a lot of people

00:13:43   that are struggling with this first thing.

00:13:47   This approach of more speculative development

00:13:49   is something that you can be more thoughtful about.

00:13:55   And just try.

00:13:56   Just build something and see if it works.

00:14:00   And who knows?

00:14:01   Maybe it'll get linked up on Daring Fireball

00:14:03   and be up in the top charts in the store.

00:14:07   I don't know.

00:14:08   Sorry, that sounds a little bit glib.

00:14:11   But you never know where it's going to go.

00:14:14   But you know it definitely won't go anywhere if you don't try.

00:14:18   And so be thoughtful about the amount of energy and effort

00:14:20   that you put into it.

00:14:22   But if you are thoughtful in that way,

00:14:26   ultimately I think you'll find that it can be kind of fun.

00:14:30   And you never know where that's going to go.

00:14:33   All right.

00:14:33   That's it for today's show.

00:14:34   As always, if you have questions, comments, concerns,

00:14:36   or complaints. I'm @_davidsmith on Twitter, or you can email me, david@developingperspective.com.

00:14:41   Hope you have a great week, happy coding, and I hope you enjoy your emoji. Bye.