PodSearch

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.