#64: Footnotes on Side Projects and iCloud Data Sync 
   
 
 
	 00:00:00
     ◼ 
      
     ►  
     Hello, and welcome to Developing Perspective. Developing Perspective is a podcast discussing 
     
     
  
 
 
	 00:00:05
     ◼ 
      
     ►  
     news of note in iOS development, Apple, and the like. I'm your host, David Smith. I'm 
     
     
  
 
 
	 00:00:09
     ◼ 
      
     ►  
     an independent iOS developer based in Herner, Virginia. This is show number 64, and today 
     
     
  
 
 
	 00:00:13
     ◼ 
      
     ►  
     is Friday, July 13th. Hopefully it's not a bad luck episode. As always, Developing Perspective 
     
     
  
 
 
	 00:00:19
     ◼ 
      
     ►  
     is never longer than 15 minutes, so let's get started. 
     
     
  
 
 
	 00:00:22
     ◼ 
      
     ►  
     All right, first, a footnote to yesterday's topic, where I was talking about the importance 
     
     
  
 
 
	 00:00:26
     ◼ 
      
     ►  
     of having side projects. 
     
     
  
 
 
	 00:00:28
     ◼ 
      
     ►  
     And well, I guess two interesting footnotes to that. 
     
     
  
 
 
	 00:00:31
     ◼ 
      
     ►  
     The first is I ship my side project. 
     
     
  
 
 
	 00:00:33
     ◼ 
      
     ►  
     It's called Quick Capture for Cheddar. 
     
     
  
 
 
	 00:00:35
     ◼ 
      
     ►  
     It's in review right now, and I'll, of course, 
     
     
  
 
 
	 00:00:37
     ◼ 
      
     ►  
     let you know when it ships. 
     
     
  
 
 
	 00:00:39
     ◼ 
      
     ►  
     And it's just, like I said, it's a tool for quickly capturing 
     
     
  
 
 
 
	 00:00:43
     ◼ 
      
     ►  
     And it's a tool that I've done before for email-based things. 
     
     
  
 
 
	 00:00:46
     ◼ 
      
     ►  
     But now that I'm using Cheddar, it 
     
     
  
 
 
	 00:00:47
     ◼ 
      
     ►  
     was a great little thing that I wanted 
     
     
  
 
 
	 00:00:49
     ◼ 
      
     ►  
     to use for just kind of brain dumping 
     
     
  
 
 
	 00:00:50
     ◼ 
      
     ►  
     and doing them, I guess, in a GTD sense. 
     
     
  
 
 
	 00:00:52
     ◼ 
      
     ►  
     They'd call it a mental sweep or whatever. 
     
     
  
 
 
	 00:00:54
     ◼ 
      
     ►  
     But anyway, that's-- so I've shipped it. 
     
     
  
 
 
	 00:00:56
     ◼ 
      
     ►  
     which is always great. But as I was shipping it, it reminded me that I didn't mention one 
     
     
  
 
 
	 00:01:00
     ◼ 
      
     ►  
     thing that's a very important part for me of side projects. And this is a term or topic 
     
     
  
 
 
	 00:01:07
     ◼ 
      
     ►  
     that I learned when I used to do Scrum, which is one of the agile methods. And I'm not sure 
     
     
  
 
 
	 00:01:12
     ◼ 
      
     ►  
     if it's actually related to Scrum or if it was just a term we used in a company where 
     
     
  
 
 
	 00:01:16
     ◼ 
      
     ►  
     I learned to use Scrum, if that makes sense. But basically, what I learned there was the 
     
     
  
 
 
	 00:01:23
     ◼ 
      
     ►  
     concept of a time box. And a time box is essentially what you do if you have say you have a classic 
     
     
  
 
 
	 00:01:30
     ◼ 
      
     ►  
     problem, a pretty standard problem in software development, you say, I want to build X. Well, 
     
     
  
 
 
	 00:01:36
     ◼ 
      
     ►  
     how long do you think X will take to build? And whether that's in calendar time, man hours, 
     
     
  
 
 
	 00:01:41
     ◼ 
      
     ►  
     whatever, but it's like, how long does that take? And you know, it's a huge problem. Developers 
     
     
  
 
 
	 00:01:47
     ◼ 
      
     ►  
     are notoriously bad at estimating how long things take. It's almost impossible to really 
     
     
  
 
 
	 00:01:53
     ◼ 
      
     ►  
     put some handles on that and say, "Okay, well, this is going to take a day. This is going 
     
     
  
 
 
	 00:01:58
     ◼ 
      
     ►  
     to take a week. This is going to take a month. This will take a year." I mean, who knows? 
     
     
  
 
 
	 00:02:02
     ◼ 
      
     ►  
     And so one of the things we used to do for tasks that had many undefines, that were sort 
     
     
  
 
 
	 00:02:10
     ◼ 
      
     ►  
     of almost, I guess you could say, they're experimental or exploratory, is that rather 
     
     
  
 
 
	 00:02:15
     ◼ 
      
     ►  
     Rather than taking the usual process of saying, 
     
     
  
 
 
	 00:02:18
     ◼ 
      
     ►  
     OK, this is a task. 
     
     
  
 
 
	 00:02:19
     ◼ 
      
     ►  
     I'm going to estimate it at eight hours, 
     
     
  
 
 
	 00:02:21
     ◼ 
      
     ►  
     put it in the backlog, pick it up. 
     
     
  
 
 
	 00:02:23
     ◼ 
      
     ►  
     What we would do is we'd say, we're going to do two things. 
     
     
  
 
 
	 00:02:27
     ◼ 
      
     ►  
     We're going to do a spike on the task, 
     
     
  
 
 
	 00:02:30
     ◼ 
      
     ►  
     and we're going to time box it. 
     
     
  
 
 
	 00:02:31
     ◼ 
      
     ►  
     And I'm going to unpack those two terms. 
     
     
  
 
 
	 00:02:33
     ◼ 
      
     ►  
     So a spike, what we meant is-- you'll often 
     
     
  
 
 
	 00:02:36
     ◼ 
      
     ►  
     hear people use the word minimum viable product. 
     
     
  
 
 
	 00:02:40
     ◼ 
      
     ►  
     It's similar to that in some ways. 
     
     
  
 
 
	 00:02:41
     ◼ 
      
     ►  
     But the goal is to be narrow and deep 
     
     
  
 
 
	 00:02:44
     ◼ 
      
     ►  
     rather than wide and broad and shallow. 
     
     
  
 
 
	 00:02:49
     ◼ 
      
     ►  
     And by that, I mean it's really focusing in the concept 
     
     
  
 
 
	 00:02:53
     ◼ 
      
     ►  
     of what it is you're trying to accomplish 
     
     
  
 
 
	 00:02:55
     ◼ 
      
     ►  
     and making that so narrow that you can make tremendous process 
     
     
  
 
 
	 00:02:59
     ◼ 
      
     ►  
     in terms of speed. 
     
     
  
 
 
	 00:03:00
     ◼ 
      
     ►  
     And as an example, in this application I wrote, 
     
     
  
 
 
	 00:03:03
     ◼ 
      
     ►  
     in Quick Capture, I-- 
     
     
  
 
 
	 00:03:05
     ◼ 
      
     ►  
     so you make all these-- you just throw away 
     
     
  
 
 
	 00:03:07
     ◼ 
      
     ►  
     all kinds of things that could distract her 
     
     
  
 
 
	 00:03:09
     ◼ 
      
     ►  
     and make it more difficult. So I say, OK, 
     
     
  
 
 
	 00:03:11
     ◼ 
      
     ►  
     I'm not going to do an iPad version now. 
     
     
  
 
 
	 00:03:16
     ◼ 
      
     ►  
     It'll just be iPhone only. 
     
     
  
 
 
	 00:03:18
     ◼ 
      
     ►  
     I'm going to punt on a couple of things 
     
     
  
 
 
	 00:03:20
     ◼ 
      
     ►  
     that could otherwise take more time or be more complicated. 
     
     
  
 
 
	 00:03:25
     ◼ 
      
     ►  
     So for example, rather than having a Settings app built 
     
     
  
 
 
	 00:03:28
     ◼ 
      
     ►  
     into my application, I'm going to use a Settings bundle. 
     
     
  
 
 
	 00:03:31
     ◼ 
      
     ►  
     Perfectly valid, in many ways even more consistent 
     
     
  
 
 
	 00:03:33
     ◼ 
      
     ►  
     with the HIG and all that. 
     
     
  
 
 
	 00:03:36
     ◼ 
      
     ►  
     But it means that I just put together a P list 
     
     
  
 
 
	 00:03:39
     ◼ 
      
     ►  
     but the few notes and entries. 
     
     
  
 
 
	 00:03:42
     ◼ 
      
     ►  
     And there we go. 
     
     
  
 
 
	 00:03:43
     ◼ 
      
     ►  
     I got my Settings app in a few minutes. 
     
     
  
 
 
	 00:03:46
     ◼ 
      
     ►  
     And it's kind of focusing down your efforts 
     
     
  
 
 
	 00:03:48
     ◼ 
      
     ►  
     into really the core functionality, the problem 
     
     
  
 
 
	 00:03:51
     ◼ 
      
     ►  
     you're trying to solve. 
     
     
  
 
 
	 00:03:53
     ◼ 
      
     ►  
     And by doing that, you really help yourself 
     
     
  
 
 
	 00:03:55
     ◼ 
      
     ►  
     really drive quickly towards the goal of actually shipping 
     
     
  
 
 
 
	 00:04:00
     ◼ 
      
     ►  
     And then time boxing. 
     
     
  
 
 
	 00:04:01
     ◼ 
      
     ►  
     And this is probably more important. 
     
     
  
 
 
	 00:04:03
     ◼ 
      
     ►  
     And the reason I brought it up was this morning 
     
     
  
 
 
	 00:04:06
     ◼ 
      
     ►  
     when I was in the shower, and I was thinking about what 
     
     
  
 
 
	 00:04:08
     ◼ 
      
     ►  
     I said yesterday. 
     
     
  
 
 
	 00:04:08
     ◼ 
      
     ►  
     And I was like, you know, I didn't mention time boxing. 
     
     
  
 
 
	 00:04:12
     ◼ 
      
     ►  
     And time boxing is a great concept. 
     
     
  
 
 
	 00:04:15
     ◼ 
      
     ►  
     And basically what time boxing is, is rather than saying, 
     
     
  
 
 
	 00:04:18
     ◼ 
      
     ►  
     how long do I think this thing will take, 
     
     
  
 
 
	 00:04:21
     ◼ 
      
     ►  
     it's how much time am I willing to spend on this, 
     
     
  
 
 
	 00:04:26
     ◼ 
      
     ►  
     which is a different question. 
     
     
  
 
 
	 00:04:27
     ◼ 
      
     ►  
     It's more a question of the perceived value of your time, 
     
     
  
 
 
	 00:04:33
     ◼ 
      
     ►  
     the perceived value of the task, and what it accomplishes. 
     
     
  
 
 
	 00:04:36
     ◼ 
      
     ►  
     And so rather than having it be how long is this going to take, 
     
     
  
 
 
	 00:04:40
     ◼ 
      
     ►  
     I say, OK, I'm going to give myself a certain amount of time 
     
     
  
 
 
	 00:04:43
     ◼ 
      
     ►  
     to work on this. 
     
     
  
 
 
	 00:04:44
     ◼ 
      
     ►  
     And for the purposes of this task, 
     
     
  
 
 
	 00:04:46
     ◼ 
      
     ►  
     I was like, I'm going to give myself about 16 hours, 
     
     
  
 
 
	 00:04:49
     ◼ 
      
     ►  
     about two days of regular work. 
     
     
  
 
 
	 00:04:53
     ◼ 
      
     ►  
     And if I can't get something done in that amount of time, 
     
     
  
 
 
	 00:04:56
     ◼ 
      
     ►  
     I'll need to re-evaluate. 
     
     
  
 
 
	 00:04:58
     ◼ 
      
     ►  
     And the purpose of doing that is that it's not so much 
     
     
  
 
 
	 00:05:01
     ◼ 
      
     ►  
     that you are limiting yourself in what you do, 
     
     
  
 
 
	 00:05:05
     ◼ 
      
     ►  
     but you're limiting almost your room for catastrophe. 
     
     
  
 
 
	 00:05:09
     ◼ 
      
     ►  
     You're limiting your ability to get stuck in a rut 
     
     
  
 
 
	 00:05:14
     ◼ 
      
     ►  
     or stuck in a place where you end up spending 
     
     
  
 
 
	 00:05:17
     ◼ 
      
     ►  
     way too much time on something. 
     
     
  
 
 
	 00:05:19
     ◼ 
      
     ►  
     So you kind of end up avoiding going down 
     
     
  
 
 
	 00:05:22
     ◼ 
      
     ►  
     bunny-- what do you call it? 
     
     
  
 
 
	 00:05:23
     ◼ 
      
     ►  
     Like rabbit holes or bunny trails 
     
     
  
 
 
	 00:05:25
     ◼ 
      
     ►  
     or all kinds of things like that, where you say, OK, 
     
     
  
 
 
	 00:05:29
     ◼ 
      
     ►  
     I'm going to give myself 16 hours to work on this. 
     
     
  
 
 
	 00:05:31
     ◼ 
      
     ►  
     And that's it. 
     
     
  
 
 
	 00:05:32
     ◼ 
      
     ►  
     And after 16 hours, I need to either decide if I'm going to keep going, and if I am, I 
     
     
  
 
 
	 00:05:36
     ◼ 
      
     ►  
     need to give myself another time box. 
     
     
  
 
 
	 00:05:38
     ◼ 
      
     ►  
     I'll say, "Okay, I'm going to give myself another eight hours, another day, whatever." 
     
     
  
 
 
	 00:05:42
     ◼ 
      
     ►  
     Or I'll say, "You know, I thought it would be fun. 
     
     
  
 
 
	 00:05:44
     ◼ 
      
     ►  
     Turns out, 16 hours in, I've got like nothing done, and it's a mess." 
     
     
  
 
 
	 00:05:50
     ◼ 
      
     ►  
     Maybe this is not for me. 
     
     
  
 
 
	 00:05:51
     ◼ 
      
     ►  
     I'll just, you know, can the project or put a shell of it or, you know, see what I want 
     
     
  
 
 
 
	 00:05:56
     ◼ 
      
     ►  
     And for me, I found that to be really productive in keeping me focused. 
     
     
  
 
 
	 00:06:01
     ◼ 
      
     ►  
     It's kind of like the Parkinson's law, 
     
     
  
 
 
	 00:06:03
     ◼ 
      
     ►  
     if you're not familiar with it, is essentially 
     
     
  
 
 
	 00:06:06
     ◼ 
      
     ►  
     the time it takes to complete a task 
     
     
  
 
 
	 00:06:09
     ◼ 
      
     ►  
     will always grow to fill the time allocated to that task. 
     
     
  
 
 
	 00:06:13
     ◼ 
      
     ►  
     Or put another way, if you give yourself 10 hours 
     
     
  
 
 
	 00:06:16
     ◼ 
      
     ►  
     to do something, it'll take 10 hours. 
     
     
  
 
 
	 00:06:17
     ◼ 
      
     ►  
     If you give yourself 20 hours to do something, 
     
     
  
 
 
	 00:06:19
     ◼ 
      
     ►  
     it'll take 20 hours. 
     
     
  
 
 
	 00:06:20
     ◼ 
      
     ►  
     And to a certain degree, that's just 
     
     
  
 
 
	 00:06:23
     ◼ 
      
     ►  
     the way the human nature works. 
     
     
  
 
 
	 00:06:26
     ◼ 
      
     ►  
     And so by pulling that down and rather than saying, 
     
     
  
 
 
	 00:06:28
     ◼ 
      
     ►  
     I'm going to start this project and I'll be done when I'm done, 
     
     
  
 
 
	 00:06:31
     ◼ 
      
     ►  
     you say, "I've got 16 hours. I've got two days. I better get working. I better make 
     
     
  
 
 
	 00:06:35
     ◼ 
      
     ►  
     a lot of progress on this very quickly. Otherwise, I'm going to be stuck. Or otherwise, I'm going 
     
     
  
 
 
	 00:06:39
     ◼ 
      
     ►  
     to have to abandon it." And that urgency is great. And in this case, it's like, I worked 
     
     
  
 
 
	 00:06:44
     ◼ 
      
     ►  
     on shipping an app. It took about 16 hours. I think I've maybe gone slightly over. I think 
     
     
  
 
 
	 00:06:48
     ◼ 
      
     ►  
     16 hours happened, maybe two hours before I shipped. But at that point, it was mostly 
     
     
  
 
 
	 00:06:52
     ◼ 
      
     ►  
     the time I had left was sort of the marketing stuff, taking the screenshots and trimming 
     
     
  
 
 
	 00:06:57
     ◼ 
      
     ►  
     them and writing the copy for the website and things. 
     
     
  
 
 
	 00:06:59
     ◼ 
      
     ►  
     So it wasn't like-- there weren't development tasks in that way. 
     
     
  
 
 
	 00:07:03
     ◼ 
      
     ►  
     And so at that point, I was like, well, I'll just give myself the next two hours, which 
     
     
  
 
 
	 00:07:06
     ◼ 
      
     ►  
     that's the point. 
     
     
  
 
 
	 00:07:07
     ◼ 
      
     ►  
     The goal is not that I'm cutting myself off then, but it's being mindful of that so that 
     
     
  
 
 
	 00:07:12
     ◼ 
      
     ►  
     it's not like in two weeks from now, I'm like, huh, maybe this wasn't the best use of my 
     
     
  
 
 
 
	 00:07:18
     ◼ 
      
     ►  
     Maybe I've kind of gotten sucked into something. 
     
     
  
 
 
	 00:07:20
     ◼ 
      
     ►  
     And you can apply time boxing to a lot of concepts where it can be to small tasks, it 
     
     
  
 
 
	 00:07:25
     ◼ 
      
     ►  
     It can be to projects, it can be to an update. 
     
     
  
 
 
	 00:07:28
     ◼ 
      
     ►  
     It can even be on really small things. 
     
     
  
 
 
	 00:07:29
     ◼ 
      
     ►  
     Sometimes I do it-- and this is kind of borrowed 
     
     
  
 
 
	 00:07:32
     ◼ 
      
     ►  
     from the Pomodoro technique, which if you're not 
     
     
  
 
 
	 00:07:34
     ◼ 
      
     ►  
     familiar with it, just search Pomodoro technique, which 
     
     
  
 
 
	 00:07:37
     ◼ 
      
     ►  
     is very much you kind of focus your time in, 
     
     
  
 
 
	 00:07:39
     ◼ 
      
     ►  
     I'm going to work for 25 minutes and then take a break, 25 
     
     
  
 
 
	 00:07:41
     ◼ 
      
     ►  
     minutes and take a break. 
     
     
  
 
 
	 00:07:43
     ◼ 
      
     ►  
     And what often I find works really well for me 
     
     
  
 
 
	 00:07:45
     ◼ 
      
     ►  
     is sometimes I'll be like, I think this feature is worth it. 
     
     
  
 
 
	 00:07:48
     ◼ 
      
     ►  
     I think this feature is fun. 
     
     
  
 
 
	 00:07:50
     ◼ 
      
     ►  
     I think people would like it. 
     
     
  
 
 
	 00:07:51
     ◼ 
      
     ►  
     Maybe I'll give myself a couple of hours and just try it 
     
     
  
 
 
	 00:07:54
     ◼ 
      
     ►  
     and focus on just getting the barely working 
     
     
  
 
 
	 00:07:58
     ◼ 
      
     ►  
     and then see if it is actually fun to see if it is actually useful like 
     
     
  
 
 
	 00:08:01
     ◼ 
      
     ►  
     matchy per my phone and play with it 
     
     
  
 
 
	 00:08:03
     ◼ 
      
     ►  
     and this is a reason i often really don't get into a lot of like photoshop 
     
     
  
 
 
	 00:08:06
     ◼ 
      
     ►  
     pixel perfect mock-ups and all those kinds of things that a lot of 
     
     
  
 
 
	 00:08:10
     ◼ 
      
     ►  
     some people like 
     
     
  
 
 
	 00:08:11
     ◼ 
      
     ►  
     for me it's like 
     
     
  
 
 
	 00:08:11
     ◼ 
      
     ►  
     i'd just want to feel it and touch it and often to say okay 
     
     
  
 
 
	 00:08:15
     ◼ 
      
     ►  
     you know i think this new feature would really work i think people would really 
     
     
  
 
 
	 00:08:18
     ◼ 
      
     ►  
     like this maybe i'll just throw together 
     
     
  
 
 
	 00:08:20
     ◼ 
      
     ►  
     and time box and say hey i'm gonna spend an hour on this and in an hour i look at 
     
     
  
 
 
	 00:08:24
     ◼ 
      
     ►  
     at it and I'm like, "Wouldn't you? Now I can make a better decision." Because the goal 
     
     
  
 
 
	 00:08:28
     ◼ 
      
     ►  
     is that at the end of it, I have more information to make a better decision about how I spend 
     
     
  
 
 
	 00:08:32
     ◼ 
      
     ►  
     my time. So anyway, those are just a few footnotes on side projects. If you didn't listen to 
     
     
  
 
 
	 00:08:37
     ◼ 
      
     ►  
     yesterday's show, "63 Side Projects of Internationalization," definitely give it a listen. I'll have a 
     
     
  
 
 
	 00:08:43
     ◼ 
      
     ►  
     link in the show notes to it or just developingperspective.com or search "Developing Perspective 63." And, okay, 
     
     
  
 
 
	 00:08:50
     ◼ 
      
     ►  
     So the second topic I was going to talk to today is iCloud and iCloud syncing. 
     
     
  
 
 
	 00:08:57
     ◼ 
      
     ►  
     And specifically talking a little bit about a process that I'm about to begin for my recipe book of taking the app and making it sync across servers. 
     
     
  
 
 
	 00:09:07
     ◼ 
      
     ►  
     And it's a core data-based application, sort of my first gut. 
     
     
  
 
 
	 00:09:12
     ◼ 
      
     ►  
     And when I first started this, my initial thought was, "Oh, I'll just do this with iCloud. That's what iCloud's for. 
     
     
  
 
 
	 00:09:18
     ◼ 
      
     ►  
     this great thing and I was at WWDC and he was like, add three lines of code to your 
     
     
  
 
 
	 00:09:23
     ◼ 
      
     ►  
     persistent SOAR coordinator and you're done. 
     
     
  
 
 
	 00:09:26
     ◼ 
      
     ►  
     I'm like, sweet, that's great. 
     
     
  
 
 
	 00:09:28
     ◼ 
      
     ►  
     You plug it in, you kind of, even you obviously realize actually it's not 
     
     
  
 
 
	 00:09:32
     ◼ 
      
     ►  
     three lines of code, you have to do a bunch of other stuff, but you get it all working 
     
     
  
 
 
	 00:09:35
     ◼ 
      
     ►  
     and it's kind of a mess and it sort of works and sometimes it doesn't and then you read 
     
     
  
 
 
	 00:09:40
     ◼ 
      
     ►  
     blog posts and you go to talks by people who are smarter than you, spend a lot more 
     
     
  
 
 
	 00:09:44
     ◼ 
      
     ►  
     more time on it and all the trouble they're having with core data and iCloud. iCloud seems 
     
     
  
 
 
	 00:09:51
     ◼ 
      
     ►  
     like if you can do all your syncing in the key value store, you're golden. The key value 
     
     
  
 
 
	 00:09:57
     ◼ 
      
     ►  
     store is, works perfectly and flawlessly. And I've done that in my applications. I've 
     
     
  
 
 
	 00:10:01
     ◼ 
      
     ►  
     done some stuff, you know, preferences syncing, a little bit of data syncing, but not really 
     
     
  
 
 
	 00:10:05
     ◼ 
      
     ►  
     like data, just sort of user information. All that stuff works amazingly on core data. 
     
     
  
 
 
	 00:10:09
     ◼ 
      
     ►  
     It's ridiculously fast. It never seems to get out of sync, doesn't really seem to have 
     
     
  
 
 
	 00:10:14
     ◼ 
      
     ►  
     any problems. And I think a large part of that is that it has a server reference model 
     
     
  
 
 
	 00:10:21
     ◼ 
      
     ►  
     rather than a sort of this weird transaction log approach that they use for core data where 
     
     
  
 
 
	 00:10:29
     ◼ 
      
     ►  
     they're like replaying logs from side to side, from side to side. Anyway, but that's not 
     
     
  
 
 
	 00:10:34
     ◼ 
      
     ►  
     really the point. The point is that at this point I'm kind of weary to go down the path 
     
     
  
 
 
	 00:10:39
     ◼ 
      
     ►  
     using iCloud for my core data sync for my users. 
     
     
  
 
 
	 00:10:45
     ◼ 
      
     ►  
     And this is where I think the more interesting part-- 
     
     
  
 
 
	 00:10:47
     ◼ 
      
     ►  
     Apple, I'm a freeloader in that model on Apple. 
     
     
  
 
 
	 00:10:53
     ◼ 
      
     ►  
     Apple is the one who's building this infrastructure 
     
     
  
 
 
	 00:10:55
     ◼ 
      
     ►  
     and building this platform and this way for users 
     
     
  
 
 
	 00:10:58
     ◼ 
      
     ►  
     to sync information back and forth. 
     
     
  
 
 
	 00:11:00
     ◼ 
      
     ►  
     And that's great. 
     
     
  
 
 
	 00:11:01
     ◼ 
      
     ►  
     And I'm glad they provided, and that's cool. 
     
     
  
 
 
	 00:11:05
     ◼ 
      
     ►  
     But the problem is Apple's not my customer in that. 
     
     
  
 
 
	 00:11:08
     ◼ 
      
     ►  
     my end user is Apple's customer, and I'm doing this thing via Apple that my customer is going 
     
     
  
 
 
	 00:11:15
     ◼ 
      
     ►  
     to rely on, but if something goes wrong, they're going to blame me, not Apple, but I can't 
     
     
  
 
 
	 00:11:20
     ◼ 
      
     ►  
     fix it, only Apple can. And so that's a bit of an awkward situation. And it's got me thinking 
     
     
  
 
 
	 00:11:26
     ◼ 
      
     ►  
     about two other products. There's one called Parse, and there's one called Simperium. Again, 
     
     
  
 
 
	 00:11:31
     ◼ 
      
     ►  
     I'll have links in the show notes. And their business, their businesses who exist for the 
     
     
  
 
 
	 00:11:37
     ◼ 
      
     ►  
     sole purpose of taking iOS applications and helping you sync data between them. Parse 
     
     
  
 
 
	 00:11:43
     ◼ 
      
     ►  
     does a bit more than that. That's pretty much all Simperium does. And they charge you for 
     
     
  
 
 
	 00:11:46
     ◼ 
      
     ►  
     it. They'll charge me a couple hundred dollars a month or whatever it is. And I like that. 
     
     
  
 
 
	 00:11:51
     ◼ 
      
     ►  
     I like that I'm not a freeloader there. I'm a customer. If something's wrong, I call up 
     
     
  
 
 
	 00:11:56
     ◼ 
      
     ►  
     Simperium and say, "Hey, I do this, this, and this, and I don't get the right data out." 
     
     
  
 
 
	 00:12:02
     ◼ 
      
     ►  
     or this merge fails in a weird way, why is that? 
     
     
  
 
 
	 00:12:05
     ◼ 
      
     ►  
     And it's their job, and their existence and their success 
     
     
  
 
 
	 00:12:09
     ◼ 
      
     ►  
     is based on them giving me a really good answer to that, 
     
     
  
 
 
	 00:12:12
     ◼ 
      
     ►  
     for why does it do that? 
     
     
  
 
 
	 00:12:13
     ◼ 
      
     ►  
     Oh, huh, that's a bug. 
     
     
  
 
 
	 00:12:15
     ◼ 
      
     ►  
     Or, hm, you're doing it wrong. 
     
     
  
 
 
	 00:12:16
     ◼ 
      
     ►  
     Let me see your code. 
     
     
  
 
 
	 00:12:18
     ◼ 
      
     ►  
     In a way that Apple just isn't. 
     
     
  
 
 
	 00:12:20
     ◼ 
      
     ►  
     I'm not Apple's customer. 
     
     
  
 
 
	 00:12:22
     ◼ 
      
     ►  
     I'm a freeloader there, in a true sense. 
     
     
  
 
 
	 00:12:24
     ◼ 
      
     ►  
     I don't mean that in a derogatory sense of, oh, 
     
     
  
 
 
	 00:12:26
     ◼ 
      
     ►  
     I'm freeloading. 
     
     
  
 
 
	 00:12:27
     ◼ 
      
     ►  
     But that's just the reality of it. 
     
     
  
 
 
	 00:12:29
     ◼ 
      
     ►  
     I'm not Apple's customer. 
     
     
  
 
 
	 00:12:32
     ◼ 
      
     ►  
     I'm just kind of taking advantage of something they do. 
     
     
  
 
 
	 00:12:35
     ◼ 
      
     ►  
     And so for something like Data Sync, for something-- 
     
     
  
 
 
	 00:12:39
     ◼ 
      
     ►  
     there are so many different problems that can go wrong. 
     
     
  
 
 
	 00:12:41
     ◼ 
      
     ►  
     I mean, there are hundreds of things 
     
     
  
 
 
	 00:12:42
     ◼ 
      
     ►  
     that can go wrong with Sync. 
     
     
  
 
 
	 00:12:45
     ◼ 
      
     ►  
     That makes me feel really nervous. 
     
     
  
 
 
	 00:12:47
     ◼ 
      
     ►  
     And I feel like I'm going to use Core Data, 
     
     
  
 
 
	 00:12:48
     ◼ 
      
     ►  
     and I'm going to use iCloud in my syncing solution. 
     
     
  
 
 
	 00:12:53
     ◼ 
      
     ►  
     But it'll be like I'll use iCloud 
     
     
  
 
 
	 00:12:54
     ◼ 
      
     ►  
     to sync super simple things. 
     
     
  
 
 
	 00:12:57
     ◼ 
      
     ►  
     Like I have a collection of images 
     
     
  
 
 
	 00:12:59
     ◼ 
      
     ►  
     that you-- sort of each recipe, for example, 
     
     
  
 
 
	 00:13:01
     ◼ 
      
     ►  
     can have some pictures associated with it. 
     
     
  
 
 
	 00:13:04
     ◼ 
      
     ►  
     Perfect thing for iCloud sync. 
     
     
  
 
 
	 00:13:06
     ◼ 
      
     ►  
     They're all uniquely identified by the MD5 of the file name 
     
     
  
 
 
	 00:13:11
     ◼ 
      
     ►  
     of the file. 
     
     
  
 
 
 
	 00:13:13
     ◼ 
      
     ►  
     Just throw those in, make them share documents, 
     
     
  
 
 
	 00:13:15
     ◼ 
      
     ►  
     and as best I understand, iCloud should sync them. 
     
     
  
 
 
	 00:13:17
     ◼ 
      
     ►  
     If somehow they don't sync, if a file ends up missing, 
     
     
  
 
 
	 00:13:20
     ◼ 
      
     ►  
     OK, not great for the user, but not the end of the world. 
     
     
  
 
 
	 00:13:24
     ◼ 
      
     ►  
     It's not like corrupting data in the same way. 
     
     
  
 
 
	 00:13:26
     ◼ 
      
     ►  
     But anyway, those are just some thoughts 
     
     
  
 
 
	 00:13:28
     ◼ 
      
     ►  
     had that I was kind of like, huh. 
     
     
  
 
 
	 00:13:31
     ◼ 
      
     ►  
     I had this anxiety about using iCloud for syncing. 
     
     
  
 
 
	 00:13:35
     ◼ 
      
     ►  
     And I think it was a sort of-- it crystallized in my head 
     
     
  
 
 
	 00:13:37
     ◼ 
      
     ►  
     that's like, I'm not Apple's customer for this. 
     
     
  
 
 
	 00:13:40
     ◼ 
      
     ►  
     I'm using this very complicated, sophisticated networking system 
     
     
  
 
 
	 00:13:45
     ◼ 
      
     ►  
     that has really no accountability. 
     
     
  
 
 
	 00:13:49
     ◼ 
      
     ►  
     That there's no one at Apple who I can call and be like, hey buddy, 
     
     
  
 
 
	 00:13:53
     ◼ 
      
     ►  
     I'm paying you a bunch of money. 
     
     
  
 
 
	 00:13:54
     ◼ 
      
     ►  
     You better make this work. 
     
     
  
 
 
	 00:13:55
     ◼ 
      
     ►  
     And if you don't, I'm going to take my business elsewhere. 
     
     
  
 
 
	 00:13:58
     ◼ 
      
     ►  
     There's nobody I can do that with. 
     
     
  
 
 
	 00:14:00
     ◼ 
      
     ►  
     And so that's just kind of-- it kind of makes me nervous 
     
     
  
 
 
	 00:14:03
     ◼ 
      
     ►  
     and kind of makes me worried. 
     
     
  
 
 
	 00:14:04
     ◼ 
      
     ►  
     And so that's where I'm going to be going. 
     
     
  
 
 
	 00:14:05
     ◼ 
      
     ►  
     I think I'm going to start with Simperium and try it. 
     
     
  
 
 
	 00:14:07
     ◼ 
      
     ►  
     If that doesn't work, I'll go to Parse probably. 
     
     
  
 
 
	 00:14:10
     ◼ 
      
     ►  
     But it's kind of great. 
     
     
  
 
 
	 00:14:12
     ◼ 
      
     ►  
     And there's all these other options and things 
     
     
  
 
 
	 00:14:14
     ◼ 
      
     ►  
     that it could potentially open up by doing this. 
     
     
  
 
 
	 00:14:17
     ◼ 
      
     ►  
     A lot of these things have web APIs that if I wanted to, 
     
     
  
 
 
	 00:14:21
     ◼ 
      
     ►  
     I could also write a web application that 
     
     
  
 
 
	 00:14:22
     ◼ 
      
     ►  
     ties into the same data, or all kinds of other things 
     
     
  
 
 
	 00:14:25
     ◼ 
      
     ►  
     that are just not possible within Apple's closed model. 
     
     
  
 
 
	 00:14:28
     ◼ 
      
     ►  
     So anyway, a few thoughts. 
     
     
  
 
 
	 00:14:29
     ◼ 
      
     ►  
     I hope you have a good weekend. 
     
     
  
 
 
	 00:14:32
     ◼ 
      
     ►  
     That's it for today's show. 
     
     
  
 
 
	 00:14:34
     ◼ 
      
     ►  
     As always, if you have questions, comments, concerns, by all means hit me up on Twitter. 
     
     
  
 
 
	 00:14:40
     ◼ 
      
     ►  
     I'm @_davidsmith on Twitter. 
     
     
  
 
 
	 00:14:43
     ◼ 
      
     ►  
     And the Twitter feed for this show is @devperspective. 
     
     
  
 
 
	 00:14:47
     ◼ 
      
     ►  
     And otherwise, I hope you have a good weekend. 
     
     
  
 
 
	 00:14:49
     ◼ 
      
     ►  
     I'll see you next week, and happy coding. 
     
     
  
 
 
 
	 00:14:52
     ◼ 
      
     ►  
     [BLANK_AUDIO]