PodSearch

ATP

26: Three Phones Ago

 

00:00:00 ◼   ► You guys should both turn off your hands and you should do the sweat lodge thing with me

00:00:02 ◼   ► and we'll start to have visions.

00:00:03 ◼   ► That'll be the best episode ever.

00:00:07 ◼   ► It is indeed the Friday night, the 9th of August and we are recording early because

00:00:12 ◼   ► one of the three of us is disappearing for a week again.

00:00:15 ◼   ► But after this, we should actually be recording on a regular schedule and everyone keeps bemoaning

00:00:20 ◼   ► the fact that our schedule changes a lot and I don't really blame them.

00:00:24 ◼   ► And people will ask, "Well, why don't you have the schedule on the website?"

00:00:28 ◼   ► And the problem is 99% of the time it's Wednesdays at 9 Eastern US time.

00:00:33 ◼   ► Well, that's not entirely true because we're only 25 episodes in, 26 now, and there's

00:00:39 ◼   ► been a lot more than a quarter of one episode that's been non-scheduled.

00:00:43 ◼   ► You know what I mean.

00:00:44 ◼   ► That's the default.

00:00:45 ◼   ► Wednesday at 9 is the default.

00:00:46 ◼   ► That is the default.

00:00:47 ◼   ► So when it's not the summertime and when everyone's not going on crazy vacations

00:00:50 ◼   ► all the time, well, at least when two of the three hosts aren't going on crazy vacations

00:00:54 ◼   ► all the time.

00:00:57 ◼   ► Your life is a crazy vacation.

00:00:59 ◼   ► Yeah, thank you.

00:01:00 ◼   ► Thank you.

00:01:03 ◼   ► The chat room wants me to comment-- thank you from Apollozac in the chat room-- wants

00:01:07 ◼   ► me to comment on the Beta Instapaper web redesign.

00:01:10 ◼   ► Do you guys see this yet?

00:01:11 ◼   ► I leaned to it earlier today.

00:01:12 ◼   ► I saw that it existed.

00:01:13 ◼   ► I haven't looked at it.

00:01:14 ◼   ► And you know what?

00:01:15 ◼   ► We haven't had--

00:01:16 ◼   ► There you go.

00:01:17 ◼   ► There's the topic.

00:01:18 ◼   ► There's one topic.

00:01:19 ◼   ► We haven't had enough reviews telling us that this is the Marco show.

00:01:20 ◼   ► I know, really.

00:01:21 ◼   ► So let's keep going.

00:01:22 ◼   ► Well, you guys aren't helping me out right now.

00:01:23 ◼   ► Here's something to talk about.

00:01:24 ◼   ► This has nothing to do with Marco.

00:01:26 ◼   ► This is somebody else's product now.

00:01:27 ◼   ► This is the first time that I don't have a new app

00:01:30 ◼   ► to announce on the show in weeks.

00:01:33 ◼   ► Oh, look at me.

00:01:33 ◼   ► I'm Marco.

00:01:34 ◼   ► I'm so smart.

00:01:34 ◼   ► I'll start writing one now.

00:01:35 ◼   ► By the end, you'll have something.

00:01:36 ◼   ► I was writing one earlier today.

00:01:38 ◼   ► Another new one?

00:01:39 ◼   ► No, the big one.

00:01:41 ◼   ► I've been working on it.

00:01:42 ◼   ► I've had a very solid week working on it,

00:01:44 ◼   ► doing a whole lot of low-level stuff.

00:01:48 ◼   ► I thought you were done with the low-level stuff.

00:01:50 ◼   ► Well, there's more.

00:01:52 ◼   ► I was done with part of it.

00:01:54 ◼   ► Oh, my goodness.

00:01:55 ◼   ► Anyway, so Instapaper Beta.

00:01:57 ◼   ► - Yeah.

00:01:58 ◼   ► I knew they were moving everything to AWS,

00:02:02 ◼   ► and now looking at what they've done,

00:02:05 ◼   ► they've been doing a heck of a lot more than that,

00:02:07 ◼   ► and I'm really happy to see this.

00:02:08 ◼   ► I mean, this was way faster than I expected

00:02:11 ◼   ► for this level of work.

00:02:13 ◼   ► And so they unveiled today a beta that's,

00:02:18 ◼   ► I would say about, it looks on the surface,

00:02:22 ◼   ► I haven't had that much time to poke around with it,

00:02:24 ◼   ► but it looks like it's probably about two thirds done,

00:02:27 ◼   ► or three quarters done even.

00:02:29 ◼   ► And it is really, really good.

00:02:33 ◼   ► And it's just the web interface right now.

00:02:35 ◼   ► They say updates for the apps are coming.

00:02:38 ◼   ► And I believe them, because I see this,

00:02:40 ◼   ► and they really delivered.

00:02:41 ◼   ► I mean, this is really good.

00:02:43 ◼   ► And the web interface, as I wrote in my little post about it,

00:02:46 ◼   ► the web interface was always my biggest embarrassment

00:02:49 ◼   ► about Instapaper, because I knew it was terrible.

00:02:52 ◼   ► It looked terrible.

00:02:53 ◼   ► It worked pretty poorly.

00:02:56 ◼   ► But not only am I a terrible web designer in most cases, but I also was not motivated

00:03:02 ◼   ► to ever improve it.

00:03:03 ◼   ► Because, well, the short version is all the money was in iOS.

00:03:08 ◼   ► And I always used iOS.

00:03:10 ◼   ► And so for something that made very little money directly with just the web interface,

00:03:17 ◼   ► and a web interface that I hardly ever saw, I just was not motivated to really ever improve

00:03:22 ◼   ► And that's one of the problems when you have a one person company.

00:03:29 ◼   ► One of the problems is like if that one person isn't that interested in working on something, it generally doesn't get done.

00:03:36 ◼   ► And so now it's multiple people doing what's right for the product and what's great for everybody instead of just what they want to work on.

00:03:42 ◼   ► And it's really looking good. What do you guys think?

00:03:46 ◼   ► I think it looks good. I will say I can only imagine how much of, I can't think of a better

00:03:53 ◼   ► word than a relief or perhaps a vindication that this is the first major change that I'm

00:04:00 ◼   ► aware of, Tint's to Paper, since you've sold it. And how good must that make you feel that

00:04:06 ◼   ► you now have a data point that says they're not going to ruin it? And not to say that

00:04:10 ◼   ► I expected Betaworks to, but now you have empirical evidence that says they're not going

00:04:15 ◼   ► ruin it and in fact it's already getting better. And that's got to make you feel,

00:04:17 ◼   ► pardon the really bad pun, but like a million bucks. You know, it must make you feel really

00:04:23 ◼   ► good that this is already trending up. Oh, totally. Because, you know, before,

00:04:27 ◼   ► when I was selling it, you know, when I was in the process of selling it, I thought, you know,

00:04:31 ◼   ► I talked about this on the show, so I'm not going to go into too much depth here, but I thought,

00:04:34 ◼   ► the worst that can happen really is that they neglect it. But I'm neglecting it. And I've been

00:04:40 ◼   ► been neglecting it for like a year or two, so the worst that can happen is that they

00:04:45 ◼   ► just keep neglecting it. So it's not that bad, because obviously I've been neglecting

00:04:48 ◼   ► it for a while and it's been okay. And now, yeah, now this is concrete evidence that they're

00:04:54 ◼   ► not just neglecting it. So like, that was the worst case scenario. Now, yeah, you're

00:04:57 ◼   ► right, it has, you know, everywhere to go now, it's going to go up. That doesn't

00:05:01 ◼   ► make sense. You know what I mean? Apply the appropriate metaphor, please.

00:05:07 ◼   ► John, would you like to absolutely destroy it now that we've both been talking positively

00:05:12 ◼   ► about it?

00:05:13 ◼   ► I didn't mind the old web interface that much.

00:05:15 ◼   ► It wasn't anything nice to look at.

00:05:17 ◼   ► It was just there and didn't really have much pizazz or style, but it did what it was supposed

00:05:22 ◼   ► to do.

00:05:23 ◼   ► And I used the web interface a surprising amount, because a lot of stuff that I would

00:05:26 ◼   ► instapaper were things that either I didn't want to watch on a phone or couldn't watch

00:05:31 ◼   ► on an iPad because they involved Flash, or it was like a 1080p trailer for a movie and

00:05:35 ◼   ► I wanted to see it on my big screen.

00:05:37 ◼   ► So I did spend a lot of time with the web interface, and it's just showing me a bunch

00:05:41 ◼   ► of links.

00:05:42 ◼   ► The only thing that really annoyed me about the web interface were encoding problems,

00:05:45 ◼   ► where you get a capital "A" with a hat on top of it or something when you have a double-encoded

00:05:51 ◼   ► UTF-8 thing that's poorly escaped.

00:05:53 ◼   ► But you never know whose fault that is.

00:05:54 ◼   ► I think I complained about it to Marco a couple times.

00:05:56 ◼   ► But other than that—

00:05:57 ◼   ► It was in the title, right?

00:05:58 ◼   ► I don't remember.

00:05:59 ◼   ► Yeah, probably in the title.

00:06:01 ◼   ► But the new web interface is nice.

00:06:03 ◼   ► It's a little bit like if you can kind of see, "Oh, I don't know which technologies

00:06:09 ◼   ► they're using, but those look like—I wonder if they use bootstraps for that.

00:06:13 ◼   ► And I think I've seen that icon set before."

00:06:16 ◼   ► But all the animations are nice, all the interface is nice.

00:06:18 ◼   ► And the fact that Instapaper's look was kind of black and white, I'm not going to

00:06:25 ◼   ► say it's easy for them to come up with a new design, but they didn't have to do

00:06:28 ◼   ► sorts of lavish graphics and custom images of wood at high resolution for all the sorts

00:06:35 ◼   ► of things. If that had been Instapaper's style, it would have been more difficult. Here, they

00:06:39 ◼   ► could go with a straightforward design with nice typography with black on white, and it

00:06:43 ◼   ► totally fits with the brand. So I give thumbs up to the web thing. I give it thumbs down

00:06:47 ◼   ► to all the instability that has gone on since you sold this thing. I don't know if it's

00:06:51 ◼   ► because of the AWS move or whatever, but I've hit read later or tapped it or held down on

00:06:57 ◼   ► it or done it in the different places that I do it and gotten either a really, really,

00:07:02 ◼   ► really long pause or a time out or a service is not available way more between the time

00:07:07 ◼   ► you sold it now than the entire rest of the history of Instapaper.

00:07:10 ◼   ► I'm assuming it's because they're moving into AWS, but that made me sad.

00:07:13 ◼   ► If I'm reading something and Instapaper is down, even if it's down for five minutes now,

00:07:17 ◼   ► I've got to remember five minutes from now to come back and hit the same link.

00:07:21 ◼   ► So I hope they get through that instability and we can get back up to the old Marco level

00:07:28 ◼   ► stability which was very rarely down and only occasionally slow.

00:07:33 ◼   ► Yeah, I haven't really asked them about that.

00:07:35 ◼   ► I've only hit a problem like once in this time and maybe it's just because when we're

00:07:38 ◼   ► hitting them, I don't know.

00:07:40 ◼   ► I would imagine one of the differences among us is that you probably wake up a lot earlier

00:07:44 ◼   ► than I do.

00:07:45 ◼   ► And so that might put you in a different usage zone.

00:07:49 ◼   ► But I've only hit a couple of problems, or like one problem

00:07:53 ◼   ► over the whole course of it.

00:07:55 ◼   ► But as far as I know, it's problems

00:07:57 ◼   ► that are probably because they were moving at AWS.

00:08:00 ◼   ► And I'm really surprised how quickly

00:08:04 ◼   ► they were able to do that move and how well it's gone.

00:08:08 ◼   ► Because so much of when I'm running servers

00:08:11 ◼   ► is about knowing the intricate details of exactly how much I

00:08:17 ◼   ► can get away with performance-wise in certain characteristics or on certain servers or in

00:08:22 ◼   ► certain software. And by shifting things to AWS, you dramatically change the foundation

00:08:28 ◼   ► of what everything is. Like the assumptions you've made about characteristics, like my

00:08:33 ◼   ► database servers were mostly SSDs. As far as I know, AWS still doesn't offer that, do

00:08:40 ◼   ► they?

00:08:41 ◼   ► Oh, I wouldn't know.

00:08:43 ◼   ► I don't know either, but certainly I know that if they do offer it, it's probably,

00:08:50 ◼   ► it probably isn't simple or maybe complete. But, so like, I would make assumptions like,

00:08:57 ◼   ► "Alright, well this server's gonna have, always have at least this much RAM. This server's

00:09:00 ◼   ► gonna always be 64-bit. This server's gonna always have really fast disks. And this one's

00:09:05 ◼   ► always gonna have tons of CPU cores." And so I was making all those assumptions all

00:09:09 ◼   ► all that time, and to shift it to a system that

00:09:14 ◼   ► works completely differently is a heck of a thing to do.

00:09:20 ◼   ► And I also had, I think, about 11 servers when I sold it.

00:09:25 ◼   ► And those were 11 pretty high-end servers.

00:09:27 ◼   ► The number of AWS instances required to replace them

00:09:30 ◼   ► has to be more than that.

00:09:33 ◼   ► And so that-- I can't even imagine

00:09:37 ◼   ► the scale of the work that is.

00:09:38 ◼   ► And the reason they did it was because they host all their stuff on AWS, so they know

00:09:42 ◼   ► it really, really well.

00:09:45 ◼   ► And so that's a very good reason to do it.

00:09:48 ◼   ► But I think it really shows how good they are that they were able to do that kind of

00:09:53 ◼   ► move with so little downtime, really, for what that is.

00:09:57 ◼   ► I mean, moving to not only a different host, like moving all of your servers to a different

00:10:02 ◼   ► host, not only that, but moving them to a different type of host, that's a big job.

00:10:07 ◼   ► The search still doesn't work in the beta 2, it just gives a 502 error so something's

00:10:12 ◼   ► not hooked up there.

00:10:13 ◼   ► But the search works in the old ones, so it's not like the search is down entirely.

00:10:17 ◼   ► I don't know if this is accurate or not.

00:10:21 ◼   ► Somebody on Twitter said that they're rewriting it in Python.

00:10:25 ◼   ► And I know that somebody had mentioned the possibility of that to me once, and I said,

00:10:31 ◼   ► "Yeah, do whatever you want, I don't care."

00:10:34 ◼   ► But they might be doing that also.

00:10:37 ◼   ► I haven't even asked them again, because I don't really

00:10:39 ◼   ► care, honestly.

00:10:41 ◼   ► I haven't really asked them, but that might be part of this.

00:10:46 ◼   ► Like maybe the beta is all a Python engine,

00:10:49 ◼   ► and the old site is still running the old PHP code.

00:10:52 ◼   ► I don't know.

00:10:53 ◼   ► Certainly I don't have any problem with that,

00:10:55 ◼   ► because I respect Python as a language.

00:10:56 ◼   ► I don't know it very well, but I've always

00:10:58 ◼   ► said that if I was going to learn another web scripting

00:11:00 ◼   ► language today, it would probably be Python.

00:11:02 ◼   ► So yeah, good for them. I think it's working really well.

00:11:05 ◼   ► Instapaper is a small enough application that it's not crazy to think of rewriting it,

00:11:10 ◼   ► because how many screens and how many features it has.

00:11:12 ◼   ► And it's hidden behind an API, like a web interface,

00:11:15 ◼   ► so as long as you maintain the same HTTP endpoints

00:11:19 ◼   ► and the same protocol between them, and they're redoing the native apps anyway.

00:11:23 ◼   ► But the point is, it's small enough that I feel like if they had a team

00:11:26 ◼   ► who knows how to use these technologies well, and they're like,

00:11:28 ◼   ► "I know exactly how I do Instapaper and how I would shard everything

00:11:31 ◼   ► I would implement all the different services, and there's like four things you can do with

00:11:34 ◼   ► it. You can read later. You got a text parser. You got this, you got that. There's enough

00:11:38 ◼   ► pieces where you can hold it all in your head. It's not like somebody said, "I'm going to

00:11:42 ◼   ► rewrite this operating system in Java." It's not that level of undertaking. So I think

00:11:48 ◼   ► it's a reasonable thing for them to do, especially if that's what they have the expertise in,

00:11:50 ◼   ► if they've already staffed up to do that.

00:11:52 ◼   ► Exactly. And you're right. The way I handed it off, the web code base is really, really

00:11:59 ◼   ► simple. And in fact, I handed it off in kind of a messy state,

00:12:03 ◼   ► because I was kind of halfway transitioned between two text

00:12:05 ◼   ► parsers.

00:12:06 ◼   ► So there was the old one and the new one,

00:12:08 ◼   ► both coexisting in various different places,

00:12:09 ◼   ► and it was kind of a mess.

00:12:12 ◼   ► So sorry to anyone over there, if you're listening,

00:12:15 ◼   ► if you had to clean that up.

00:12:18 ◼   ► But yeah, I mean, the web code base really

00:12:21 ◼   ► is not that complicated.

00:12:22 ◼   ► And so they can rewrite it in whatever they want,

00:12:26 ◼   ► and it's not really that big of a deal.

00:12:28 ◼   ► The iOS app, of course, is where most of the code is.

00:12:31 ◼   ► But you can't rewrite that in anything else except, I guess,

00:12:35 ◼   ► Xamarin?

00:12:36 ◼   ► What is that?

00:12:37 ◼   ► Zantac?

00:12:38 ◼   ► C#.

00:12:39 ◼   ► C#, yes.

00:12:41 ◼   ► It's good times.

00:12:42 ◼   ► You know, it's funny hearing you guys say that.

00:12:43 ◼   ► Oh, yeah, you can rewrite it.

00:12:45 ◼   ► No problem.

00:12:45 ◼   ► Because I keep flashing back to Spolsky's article

00:12:48 ◼   ► from years and years ago about rewriting something

00:12:51 ◼   ► and how no matter how simple you think it will be,

00:12:54 ◼   ► it always ends up being a terrible disaster.

00:12:56 ◼   ► I'm hugely paraphrasing of course, but it keeps reminding me of that.

00:13:03 ◼   ► The other thing I keep wondering or thinking to myself is, and I don't know if this is

00:13:07 ◼   ► a worthwhile topic or not, but at what point do you choose familiarity over anything else?

00:13:15 ◼   ► So in other words, they may be more familiar with AWS and Python, but no matter how you

00:13:21 ◼   ► slice it, they bought, Betaworks bought, something that was successful and functional.

00:13:27 ◼   ► And is familiarity more important to their team, which it appears it is, or is keeping

00:13:35 ◼   ► what works more important?

00:13:36 ◼   ► And I wrestle with this a lot when I write code, and you can also extrapolate this to

00:13:40 ◼   ► be, is writing code in a clear way better than writing code in a clever and perhaps,

00:13:48 ◼   ► Maybe not succinct is the best word, but you know if you could take a hundred fifty line function

00:13:54 ◼   ► Let's say and do some really clever stuff and get it down to 50 lines

00:13:58 ◼   ► but it's a lot harder to understand is that really a net win or not and

00:14:02 ◼   ► And to me as the older I get the more

00:14:05 ◼   ► I think you know familiarity really is important and really is worth fighting for and

00:14:11 ◼   ► I found that I'm using less clever tricks in my code than I would have in the past

00:14:16 ◼   ► because I don't know if I'm gonna remember what it was I was thinking in a month,

00:14:20 ◼   ► let alone a co-worker have any idea what I was doing in a week.

00:14:25 ◼   ► I don't know if you guys have anything interesting to add to that, but...

00:14:28 ◼   ► When you're buying a company or a product or whatever,

00:14:32 ◼   ► if you have the intention to go forward with that product,

00:14:36 ◼   ► to make new versions of that product, add features and everything,

00:14:39 ◼   ► you have to make sure that you have the ability to do that.

00:14:44 ◼   ► If you buy something in PHP and Objective-C and you have nobody who knows PHP and Objective-C

00:14:49 ◼   ► and nobody who knows iOS APIs, well, A, that was probably not a great idea to purchase

00:14:53 ◼   ► that, but B, you need to do one of two things.

00:14:56 ◼   ► Either get people those expertise or change it to something that your people already have

00:15:00 ◼   ► expertise in.

00:15:01 ◼   ► And like Marco said, with the iOS app, they're going to get people who are familiar with

00:15:05 ◼   ► iOS or they probably already have them.

00:15:06 ◼   ► You can't change the language, basically.

00:15:08 ◼   ► Maybe they could change it to C# or something like that, but in general, that decision is

00:15:12 ◼   ► made for them.

00:15:13 ◼   ► We bought an iOS app.

00:15:14 ◼   ► we've got to make sure we have people who understand the iOS APIs, and they probably

00:15:17 ◼   ► already do, so we're good there.

00:15:18 ◼   ► And on the website, they bought something that was written in PHP, but like I said,

00:15:22 ◼   ► it was small enough and simple enough that it's not that big a deal.

00:15:24 ◼   ► They could get expertise in PHP and go forward and enhance the application in PHP, but I

00:15:29 ◼   ► bet they already have people who know how to do web stuff in Python really well.

00:15:34 ◼   ► And they have to do something so that they can add features and enhance this application,

00:15:41 ◼   ► it's probably more efficient for them to rewrite the whole thing in Python, because they have

00:15:48 ◼   ► like an army of people who know Python, and they think they can rewrite it really quickly.

00:15:51 ◼   ► Like Marco does, he's got his framework for web applications and stuff like that.

00:15:55 ◼   ► He's got a box of tools in PHP, so when it comes time for him to do something on the web,

00:15:59 ◼   ► it's much faster for him to just take out his toolbox with these tools that he's worked on

00:16:02 ◼   ► and put something together. So they probably have a toolbox full of Python things, and they're

00:16:07 ◼   ► familiar with various Python frameworks, and they have their own in-house things,

00:16:10 ◼   ► things that would never say, like, "Oh, I know exactly how I do Instapaper. I do this,

00:16:13 ◼   ► that, and the other thing, and it's small enough that they can do it."

00:16:16 ◼   ► The Joel article was one of those things where he wanted to explain all the reasons why you

00:16:22 ◼   ► might not want to rewrite something, and he did, and I think he explained them pretty

00:16:25 ◼   ► well. But as time goes on and memories fade or whatever, it becomes like, "Oh, that's

00:16:32 ◼   ► the article where he said you should never, ever, ever rewrite anything," which of course,

00:16:34 ◼   ► any sort of absolutist position, like you should always rewrite or never rewrite, it's

00:16:37 ◼   ► not going to be—people are going to argue with it, and that's going to be the straw

00:16:40 ◼   ► man that they're going to disagree with.

00:16:42 ◼   ► I think he did a good job of highlighting why—like, the value in old code.

00:16:47 ◼   ► But every situation is different, and you have to decide, given your situation and the

00:16:52 ◼   ► parameters and the requirements that are put upon you and what you actually want to do

00:16:56 ◼   ► going forward, what you're going to do.

00:16:58 ◼   ► And so the thing I think he used as an example was Netscape being rewritten to become Mozilla

00:17:03 ◼   ► and everything.

00:17:05 ◼   ► First of all, no one's thinking, "Oh, Netscape is a simple application.

00:17:08 ◼   ► That won't be hard to read, right?"

00:17:10 ◼   ► Web browsers?

00:17:11 ◼   ► Those aren't complicated, right?

00:17:12 ◼   ► That'll be no problem.

00:17:13 ◼   ► They knew that it was complicated.

00:17:15 ◼   ► But with 20/20 hindsight, you can say, "Look, that codebase, that old Netscape codebase,

00:17:20 ◼   ► was not going anywhere.

00:17:21 ◼   ► It was basically going to be a dead end.

00:17:23 ◼   ► It would not exist today no matter how much work they put into it."

00:17:26 ◼   ► Even though there was tremendous value in, "Look at all the stuff we debugged, and look

00:17:29 ◼   ► at all those little tricky things we did to make sure that it worked with weird mail

00:17:34 ◼   ► because there was a mail client built into it and how it worked with NNTP and all these

00:17:38 ◼   ► nuances of talking to news servers and dealing with the web as it has existed in 1993.

00:17:43 ◼   ► All that stuff had value, but the value by now is either gone or pointless because

00:17:48 ◼   ► the web browsing engine world has gone so far. And if they hadn't rewritten it, they would be

00:17:52 ◼   ► completely irrelevant now. And as it stands, they probably are due for another rewrite or something

00:17:57 ◼   ► because their engine, Gecko and Mozilla and everything, is kind of looking like the old grandfather

00:18:02 ◼   ► grandfather next to WebKit and Blink and all these fancy new things.

00:18:05 ◼   ► So people are saying, "Now, Joel, you wrote that article, but look, if they hadn't rewritten

00:18:10 ◼   ► everything they'd be completely irrelevant, and they're almost irrelevant now even though

00:18:13 ◼   ► they did rewrite everything."

00:18:14 ◼   ► So the time comes when you need to cut your losses and move on, but I think the value

00:18:21 ◼   ► in that article is explaining why old code has good qualities that you might not see

00:18:29 ◼   ► when all you could see is how disgusting it is and how you wish you could rewrite it all.

00:18:32 ◼   ► Oh, yeah. I mean, there's definitely, like, a very common programmer immaturity that you

00:18:37 ◼   ► see where you, like, a programmer is assigned to take over a project, whether they were

00:18:41 ◼   ► hired in, like, as, like, a new lead on it or they're looking at someone else's code

00:18:48 ◼   ► who, you know, was previously there. Almost always, young programmers want to rewrite

00:18:53 ◼   ► it their way. And that's generally a pretty immature and inefficient position to take,

00:19:00 ◼   ► know, because it's easier for you to start poking around and say, "Oh, this whole thing

00:19:06 ◼   ► is a mess. This is not going to work. It's terrible. This previous person who wrote this

00:19:10 ◼   ► was an idiot, and we've got to rewrite everything from scratch." And, you know, you're right.

00:19:16 ◼   ► In the real world, like the Jell article is pretty good advice most of the time. Obviously,

00:19:23 ◼   ► there's exceptions to everything. The example he used of Netscape was, of course, a very

00:19:28 ◼   ► extreme example. Netscape is a, and was, a tremendous code base. It's absolutely tremendous,

00:19:35 ◼   ► doing so many things. And so obviously rewriting that was a pretty big ordeal. Rewriting a

00:19:42 ◼   ► pretty simple web service that doesn't do a whole lot on the web service end is not

00:19:46 ◼   ► that hard. And so, you know, I mean, I wrote Instapaper, the first version, in like one

00:19:52 ◼   ► night and built on it from there part-time, but the website was never really a big time

00:19:59 ◼   ► suck.

00:20:00 ◼   ► So rewriting that is very, very different from rewriting Netscape.

00:20:04 ◼   ► So two quick questions for you.

00:20:06 ◼   ► In a very qualitative and off-the-cuff way, would you say that it seems clear that the

00:20:14 ◼   ► Instapaper website, you would say, is not very complex?

00:20:17 ◼   ► And I'm thinking mostly about the text parser.

00:20:20 ◼   ► strikes me as though it would be pretty complex, but it seems to me like you're waving it

00:20:24 ◼   ► off as not that bad. Is that fair to say?

00:20:26 ◼   ► The text parser really isn't that bad. It's really not that complex. You would be surprised

00:20:31 ◼   ► how easy it is to do a pretty good job parsing out body text.

00:20:35 ◼   ► All right. And then with that in mind, how much code smell would you say the codebase

00:20:41 ◼   ► had? Like you said you were half-baked between a major rewrite, and that obviously induces

00:20:47 ◼   ► a little bit of stench, if you will, but would you say that generally speaking it was in

00:20:50 ◼   ► pretty good shape aside from that?

00:20:52 ◼   ► The text parser was in bad shape, but everything else was pretty solid, as far as I remember.

00:20:57 ◼   ► Honestly, I spent some little time working on the website. I barely even remember the

00:21:00 ◼   ► code, but yeah, it was...

00:21:03 ◼   ► We can tell.

00:21:04 ◼   ► Yeah. One thing that, one other direction I want to take this conversation briefly is,

00:21:09 ◼   ► there was this great article, I pasted the link in the chat room a few lines ago, by

00:21:13 ◼   ► by James Haig, and I'll put a link in the show notes.

00:21:16 ◼   ► And it's called Organizational Skills Beat Algorithmic Wizardry.

00:21:22 ◼   ► And he was first talking about, like, you know, all the crap about brainteaser tech

00:21:26 ◼   ► interviews, which are terrible. And then he has this one line that I love.

00:21:30 ◼   ► When it comes to writing code, the number one most important skill is how to keep a

00:21:34 ◼   ► tangle of features from collapsing under the weight of its own complexity.

00:21:39 ◼   ► And, you know, he goes on to say, to a great

00:21:43 ◼   ► extent, the act of coding is one of organization,

00:21:45 ◼   ► refactoring, simplifying, figuring out how to remove extraneous

00:21:48 ◼   ► manipulations here and there. And it's, that's a fantastic

00:21:53 ◼   ► bit of wisdom there, because so many times, what

00:21:57 ◼   ► makes me want to rewrite parts of my own

00:21:58 ◼   ► code or modules or even entire apps, which is

00:22:02 ◼   ► pretty rare, but, you know, what makes me want

00:22:04 ◼   ► to rewrite stuff like that is tricks and optimizations

00:22:08 ◼   ► and complexities that I implemented forever ago

00:22:10 ◼   ► and have since forgotten how they work.

00:22:13 ◼   ► And it's like you're competing with yourself from the future

00:22:18 ◼   ► when you're writing code.

00:22:19 ◼   ► And it's really, really easy to, oh, you see something here

00:22:24 ◼   ► that, oh, we could do this cool little thing if we just

00:22:27 ◼   ► add this little bit of complexity here,

00:22:28 ◼   ► this little weird hack here that it's not pretty,

00:22:32 ◼   ► but it'll work and it'll achieve this cool thing.

00:22:34 ◼   ► Well, then six months from now, you get to that.

00:22:36 ◼   ► you see that and you see, "Oh, I don't know how this works. This thing's a mess. We've

00:22:39 ◼   ► got to rewrite the whole thing."

00:22:42 ◼   ► Casey's question from before about doing clever things in code or whatever, I think most programmers

00:22:49 ◼   ► go through that phase of where you don't understand the clever thing, then you do understand the

00:22:52 ◼   ► clever thing, then you start to invent your own clever things. I try to get myself away

00:22:59 ◼   ► from looking at the code at that level because what I've found is that the most important

00:23:04 ◼   ► I have to ask about the block or the method or the whatever, the module or whatever class

00:23:11 ◼   ► that I'm looking at or whatever, is what is this code supposed to do?

00:23:17 ◼   ► And that question should be phrased in some very clever or flowery way and put into a

00:23:24 ◼   ► big giant poster shoved in front of you like the old IBM Think poster.

00:23:28 ◼   ► Because almost any time anyone is having a programming problem, aside from me having

00:23:33 ◼   ► to teach them how debugging works, which is surprising.

00:23:35 ◼   ► Our programmers don't know, and I don't know how they get their jobs done, is that question.

00:23:41 ◼   ► So say you're in there and you've got this clever bit that does some clever thing and

00:23:44 ◼   ► it's got some loops and some lines and some variables and you're like, "I don't know what

00:23:47 ◼   ► the hell this thing is doing."

00:23:48 ◼   ► If you know what the function it's in is doing, like I know the purpose of this function,

00:23:53 ◼   ► either because it's documented or it's named well or both or you just know what it is because

00:23:57 ◼   ► you wrote it recently and you say, "The job of this function is it takes this input, it

00:24:00 ◼   ► it gives you this output, I know what its job is, I know where it fits into the whole

00:24:04 ◼   ► block diagram of my thing."

00:24:06 ◼   ► And you're like, "Well, of course I know that.

00:24:09 ◼   ► I always know when I'm looking at a couple lines of function."

00:24:13 ◼   ► Of course, everyone knows what this function does.

00:24:15 ◼   ► But as you work on code for a long time, and especially if you're not constantly thinking

00:24:18 ◼   ► about this, you will find yourself in the midst of a function, and someone will ask

00:24:22 ◼   ► you, "What is this function supposed to do?"

00:24:24 ◼   ► It doesn't matter.

00:24:25 ◼   ► It gets called, and then I'm in here and I have to do this thing.

00:24:28 ◼   ► Like, "Wait, wait, wait, wait, no, it matters.

00:24:30 ◼   ► say it doesn't matter. This just gets called when this happens, and eventually, I'm very

00:24:34 ◼   ► deep in the call stack here, but this thing gets called, and I'm like, "What is this job?

00:24:37 ◼   ► What is this supposed to be doing? What is the job of this function?" It's like, "Well,

00:24:40 ◼   ► usually it just takes this and puts it there and processes this and turns it into that

00:24:43 ◼   ► and flips that on." But sometimes, if this thing is also on, and you're like, "Whoa,

00:24:47 ◼   ► if you can't explain to me what this function does," and it's like, what it does is affect

00:24:51 ◼   ► it by all this global state, and it's got lots of conditionals, and it behaves in several

00:24:56 ◼   ► different ways, and it's deeply intertwined with other things, and it's all mixed in with

00:24:59 ◼   ► the GUI and it depends on the state of the database or what orientation the device is

00:25:04 ◼   ► in.

00:25:05 ◼   ► You're like, "This function is not well.

00:25:07 ◼   ► You've lost sight of this."

00:25:08 ◼   ► In the beginning, maybe it was a simple function, but to make your application work, you continue

00:25:11 ◼   ► to screw up to the point where now I ask you, "What does this function do?"

00:25:14 ◼   ► And you have to tell me a story that's three hours long.

00:25:17 ◼   ► So that's your problem.

00:25:18 ◼   ► It's not the clever line where you're doing some sort of bit field masking and some sort

00:25:21 ◼   ► of clever thing where you're sharing some variable and trying to reuse memory from a

00:25:26 ◼   ► previous incarnation and do some caching.

00:25:28 ◼   ► That's not your problem.

00:25:30 ◼   ► Your problem is you don't know what the heck this freaking function does.

00:25:32 ◼   ► If you knew what it did, then by all means do the most crazy, clever, awesome way that

00:25:36 ◼   ► you could do it, and then have an awesome unit test to make sure that that crazy, clever

00:25:39 ◼   ► way works exactly the same as the boring way.

00:25:42 ◼   ► Then you're fine.

00:25:43 ◼   ► Then go nuts.

00:25:44 ◼   ► But that, I find, is the problem.

00:25:45 ◼   ► And that's just functional.

00:25:46 ◼   ► Keep moving up.

00:25:47 ◼   ► What is this class supposed to do?

00:25:48 ◼   ► How do these things interact with each other?

00:25:49 ◼   ► What's the relationship between these things in the program?

00:25:53 ◼   ► How many of them should there ever be?

00:25:56 ◼   ► What are the assertions you can make about them, about what states they should be?

00:25:58 ◼   ► If this one is in a state, then that one has to be in that state.

00:26:01 ◼   ► Those are the questions that you have to keep in your mind.

00:26:05 ◼   ► The broader you can get that picture nailed down, the simpler it is.

00:26:08 ◼   ► I don't know if you've had this experience, maybe with a really simple application or

00:26:11 ◼   ► something where you have—or maybe an application that you've written 100 times.

00:26:15 ◼   ► I bet people who are writing or teaching courses have this, where you're like, "I'm going

00:26:19 ◼   ► to do a canonical pet store example," or something.

00:26:22 ◼   ► If you have a design that really is the correct design from the beginning, coding itself becomes

00:26:26 ◼   ► mechanical, almost boring, because all you're doing is like, I know exactly what

00:26:29 ◼   ► this function has to do, what it has to do is not complicated, I'm gonna write it,

00:26:33 ◼   ► it's completely straightforward, maybe there's a couple of nuances and clever

00:26:36 ◼   ► ways to do it, but who cares, and it just falls out, your program just falls out of

00:26:40 ◼   ► you, because if you have the design correct, implementation is trivial, you

00:26:44 ◼   ► know, once you know any language more or less, or any API, that's rarely the case.

00:26:49 ◼   ► Usually you don't have the design done to that level, especially if you're doing

00:26:51 ◼   ► some of the first time, so you keep having to go back and revise and revise,

00:26:54 ◼   ► And if you don't constantly think about what is this thing supposed to do? What does this class do?

00:26:59 ◼   ► What does this function do? What does this method do? What is its job?

00:27:01 ◼   ► And the answer isn't simple enough you to say I know exactly what I have to do then you have a problem

00:27:05 ◼   ► Like that's why I think Margo's text parser is a reasonable thing to fiddle with because we know what its job does, right?

00:27:11 ◼   ► It takes a web page and it gives you back text

00:27:13 ◼   ► It doesn't have all the crap all around like you can write a fancier explanation, but that's what it does

00:27:17 ◼   ► It's simple input output operation. What happens in there can be extremely complex and cool and interesting or whatever

00:27:22 ◼   ► But in the grand scheme of things, that's a pretty simple function with very few side

00:27:27 ◼   ► effects.

00:27:28 ◼   ► Exactly.

00:27:29 ◼   ► Yeah.

00:27:30 ◼   ► And you're right.

00:27:31 ◼   ► When I'm talking about competing with yourself in the future and trying to understand what

00:27:34 ◼   ► you wrote and buckling under complexity, I'm not talking about how you shift the bits over

00:27:43 ◼   ► here within this function.

00:27:44 ◼   ► You're right.

00:27:45 ◼   ► I don't care.

00:27:46 ◼   ► I am talking about all the crazy—everything you said, the global state, things that are

00:27:50 ◼   ► weirdly intertwined, that have weird dependencies, that is like, you know, it works in your head

00:27:55 ◼   ► while you're writing it because you know all that stuff. It's in your memory. But then,

00:28:00 ◼   ► you know, in a month, you're going to forget how that works, and something's going to be

00:28:04 ◼   ► breaking in a weird way, or you're going to have to add something to it, and that's going

00:28:08 ◼   ► to break in a weird way, and you'll have no idea how this whole system works.

00:28:11 ◼   ► Yeah, you just want to get it to work. Like, when you know when you get in that state,

00:28:14 ◼   ► you're like, "I just want to hit the button and see that thing appear. Like, I just want it to

00:28:17 ◼   ► work, right? And so you're putting code, you're just putting code wherever you need to put

00:28:20 ◼   ► code to make it work. You land some place, some variables in set, you put the code right

00:28:23 ◼   ► there to say, "Set that variable right here," without thinking, you know, like, "Is this

00:28:27 ◼   ► the place where I should be doing this?" Because, you know, every program rolls into that crap,

00:28:30 ◼   ► because everyone reaches that threshold, like, "Oh, I'm so close to this thing working. If

00:28:34 ◼   ► I could just, ooh, if I just put a conditional there, the thing would work. Is that the right

00:28:38 ◼   ► place to put that conditional? Why do you need to do that check?" No one wants to ask

00:28:41 ◼   ► those questions. They just want to see, they want to click the button, they want to see

00:28:44 ◼   ► thing appear.

00:28:45 ◼   ► And everybody does that to some degree.

00:28:47 ◼   ► You multiply that by the number of programs and the complexity of the program, and if

00:28:50 ◼   ► you're not constantly revising your view of the world and constraining your code to say,

00:28:55 ◼   ► "Is this the right place for this code?"

00:28:58 ◼   ► Maybe there is no right place for this code, which reflects a problem in our design that

00:29:01 ◼   ► we didn't foresee.

00:29:02 ◼   ► So now it's time to go back to the giant block level and say, "Okay, maybe we need to redo

00:29:05 ◼   ► these blocks."

00:29:06 ◼   ► And nobody wants to think about that.

00:29:07 ◼   ► You're like, "But I'm so close.

00:29:08 ◼   ► If I just put this conditional here, I'm so close, it'll be fine."

00:29:12 ◼   ► And I'll put a comment on the top of it.

00:29:13 ◼   ► it'll be fine. That's why when other people, when you look at, you know, hell is other

00:29:17 ◼   ► people's code, when you look at someone else's code, you're like, oh, this needs to be rewritten.

00:29:21 ◼   ► It's because that person maybe didn't do such a good job of keeping their handle on things.

00:29:24 ◼   ► And you look at these functions, and you see this function does ten different things, and

00:29:27 ◼   ► the name has very, very tenuous connection with the content of the code that I see in

00:29:32 ◼   ► there. And it makes you want to rewrite it, you know.

00:29:34 ◼   ► You know, it's funny, the way you're describing things, I unsurprisingly agree with everything

00:29:39 ◼   ► you said, it's almost like the five whys of developing code.

00:29:43 ◼   ► You know, why did I write this method?

00:29:45 ◼   ► Okay, why is this method part of this class?

00:29:48 ◼   ► Why is this class part of this namespace

00:29:50 ◼   ► or part of this module and so on and so forth?

00:29:53 ◼   ► And you certainly make a very interesting point.

00:29:55 ◼   ► And I think that intrinsically,

00:29:57 ◼   ► that's what developers tend to do,

00:29:59 ◼   ► but doing it more explicitly and deliberately

00:30:04 ◼   ► certainly can't do anything but help.

00:30:07 ◼   ► Yeah, that was one of the many topics I think I never got to in Hypercritical, was like,

00:30:12 ◼   ► what makes a good programmer?

00:30:13 ◼   ► And this article that Marco threw the link in for is very similar to it.

00:30:17 ◼   ► My contention is—well, this gets more touchy-feely—but one of the things that—there's lots of good

00:30:24 ◼   ► good programmers, right?

00:30:25 ◼   ► There are, you know, the classic good programmer like John Carmack or whatever, who's just

00:30:29 ◼   ► like a genius, really good at math, can do very clever algorithmic things.

00:30:34 ◼   ► That's what we think of as like, "Oh, he's an amazing programmer," right?

00:30:37 ◼   ► And there's definitely a place for that.

00:30:38 ◼   ► But another kind of very good programmer is-- again, I don't want to get a touchy-feely

00:30:42 ◼   ► feel of things-- but people are motivated to avoid things that make them uncomfortable.

00:30:50 ◼   ► And if disorder makes you uncomfortable, that will be a strong motivator for you to make

00:30:58 ◼   ► things ordered in your life.

00:30:59 ◼   ► People who are discomforted by things that are messy or disordered, they usually say

00:31:04 ◼   ► say obsessive-compulsive, but that's totally the wrong word for it. I don't know what the

00:31:07 ◼   ► right word for it is. But you know, they have websites where they show a line of pencils

00:31:10 ◼   ► where one pencil is poking out. The type of people who are annoyed by that pencil poking

00:31:14 ◼   ► out and want to push it back down, everyone's annoyed by it a little bit. But some people

00:31:17 ◼   ► are made much more uncomfortable by that pencil poking out than other people are. The more

00:31:22 ◼   ► you have that feeling, that it makes you physically uncomfortable for your books on your bookshelves

00:31:29 ◼   ► not to be aligned, or for things to be out of place. Like I said, everyone has it in

00:31:33 ◼   ► in some degree, but some people have to do a higher degree.

00:31:36 ◼   ► That is another kind of good programmer.

00:31:37 ◼   ► If you find someone who is really, really uncomfortable

00:31:40 ◼   ► when things aren't indented properly,

00:31:42 ◼   ► you would think like, oh, what makes me a good programmer

00:31:44 ◼   ► is my technical skill and I'm good with algorithms

00:31:46 ◼   ► and I know about user interface.

00:31:47 ◼   ► But really, an entire class of programmers,

00:31:49 ◼   ► what makes them good programmers is their complete inability

00:31:53 ◼   ► to tolerate things being out of order.

00:31:54 ◼   ► And that extending always like,

00:31:56 ◼   ► this class should not be doing this.

00:31:58 ◼   ► That's not the responsibility of this method

00:31:59 ◼   ► to do this at all.

00:32:01 ◼   ► That state should not be touched by here.

00:32:02 ◼   ► there should be an abstraction between this and that. You shouldn't reach into that to

00:32:05 ◼   ► go to that. Every single one of those things, once you get some knowledge of programming,

00:32:09 ◼   ► becomes like that pencil poking up, and you just cannot tolerate it. All the way down

00:32:12 ◼   ► to the simple things like inconsistent indenting. Like, I know programmers who have no problem

00:32:16 ◼   ► with inconsistent indenting. Spaces, tabs, random curly-braced styles, like it's just

00:32:20 ◼   ► a giant mess. That's not common. I think programmers are more towards the "can't stand it when

00:32:25 ◼   ► their books aren't lined up on the shelf." But that skill, like, it's not a skill, but

00:32:30 ◼   ► That sort of personality disorder, I don't know, mental impairment, being physically

00:32:38 ◼   ► uncomfortable to a degree that's outside the realm of the norm by disorder makes you a

00:32:43 ◼   ► better programmer of a particular kind.

00:32:46 ◼   ► And people want to think that their superpower is derived from their amazing strength or

00:32:51 ◼   ► their super speed or their great intellect and don't want to think that the thing that

00:32:54 ◼   ► makes them a good programmer is the thing that handicaps them in the rest of their regular

00:32:58 ◼   ► life.

00:32:59 ◼   ► Not to a debilitating degree, but that's—and again, obsessive compulsive is an entirely

00:33:02 ◼   ► different thing.

00:33:03 ◼   ► I don't know what the thing is I'm talking about, I don't know what the real term is,

00:33:06 ◼   ► but some of the—that's like turning, you know, finding a silver lining in things that

00:33:14 ◼   ► are mentally wrong with you.

00:33:15 ◼   ► And it's definitely the case with me.

00:33:16 ◼   ► I don't like disorder, and I think it makes me a better programmer.

00:33:20 ◼   ► And I think every programmer has that to some degree.

00:33:23 ◼   ► Oh, definitely.

00:33:24 ◼   ► All right, well, before we continue, let's take a break to thank our first sponsor this

00:33:29 ◼   ► week. It's a new sponsor this week. It is Warby Parker. Warby Parker was founded

00:33:34 ◼   ► with a rebellious spirit and a lofty objective to create boutique quality

00:33:38 ◼   ► classically crafted eyewear at a revolutionary price point. So this is

00:33:42 ◼   ► what it is. They sell glasses online and they do it really really well. They

00:33:48 ◼   ► believe glasses should not cost as much as an iPhone. They have prescription

00:33:52 ◼   ► glasses including prescription lenses that start at just $95. They also have a

00:33:56 ◼   ► a titanium collection starting at just $145. All glasses include anti-reflective and anti-glare

00:34:02 ◼   ► coatings at no additional cost. They include a hard case, a cleaning cloth, it's a really,

00:34:07 ◼   ► really great product. And they make home buying easy and risk-free. They have this thing called

00:34:12 ◼   ► the Home Try-On Program. And what they do is you go to their site and you pick out up

00:34:16 ◼   ► to five frames to try out. And they have all these sorts of tools on their site. You can

00:34:22 ◼   ► do things like have an image of your face that it then wraps on, it maps the glasses

00:34:27 ◼   ► onto your face, you can preview it there. Or, so for the home try-on, for free, online,

00:34:34 ◼   ► easy, risk-free, the home try-on, you pick five frames you want to try on in person and

00:34:38 ◼   ► they mail them to you. You pick whatever you want, if you want one of those, you can go

00:34:42 ◼   ► buy it, you send them right back, and then they send it to you with a prescription. It's

00:34:46 ◼   ► really great. Now, when they booked this spot, they offered the three of us free

00:34:53 ◼   ► glasses if we wanted to try it out. So they had us try out the home try on and

00:34:56 ◼   ► and you know so we could see how good of a product this was. We could tell you

00:35:00 ◼   ► about it. And I don't wear glasses but my wife does and she's famous on the

00:35:05 ◼   ► internet so I'm actually, Tiff is here, so is Hops, but Hops will be quiet I

00:35:09 ◼   ► think. Tiff is here and she's going to actually be joining this and doing the

00:35:13 ◼   ► rest of the sponsor read for me because she had a whole experience with him that

00:35:16 ◼   ► really quite good. So, here's Tiff. Hi! Yeah. Hey, there we are. How are you? I'm

00:35:23 ◼   ► good. Hi, everyone. Hello. So, we're all Warbies, huh? Yeah, well, I am, and it sounds

00:35:29 ◼   ► like you are, John. I got the home try-ons and I ordered my pair, but they haven't

00:35:33 ◼   ► come yet. Ah. Okay. So, you're a little behind me. Now, Tiff, have yours come in yet?

00:35:37 ◼   ► They have. I got them yesterday. Are they or are they not spectacular? I am so impressed.

00:35:42 ◼   ► Like when I got that box, it is such high quality.

00:35:46 ◼   ► I'm just ridiculously impressed.

00:35:48 ◼   ► 'Cause I just recently bought new glasses

00:35:50 ◼   ► maybe like a month ago for the first time in 15 years,

00:35:54 ◼   ► which is crazy.

00:35:55 ◼   ► And they were way expensive.

00:35:57 ◼   ► And when I finally got them, they ended up not fitting.

00:36:00 ◼   ► So having this experience was perfect

00:36:04 ◼   ► for kind of fixing the bad purchase I had before,

00:36:07 ◼   ► which ended up costing so much more money

00:36:09 ◼   ► than the Warby Parkers did.

00:36:11 ◼   ► So what about you?

00:36:12 ◼   ► I got a pair of sunglasses actually, so I have terrible eyes, but my eyes are so bad

00:36:17 ◼   ► that I actually have to wear contacts.

00:36:19 ◼   ► And I'm not going to get into the specifics about it, but I got a pair of non-prescription

00:36:23 ◼   ► sunglasses and I did the home try-on thing.

00:36:26 ◼   ► And one of the great things about the home try-on thing is you can say as I did, "Well,

00:36:30 ◼   ► you know what, self?

00:36:31 ◼   ► Let's reach a little and go out of our comfort zone and have Warby Parker send a pair of

00:36:37 ◼   ► glasses that maybe you wouldn't have picked out if you just saw them on the rack."

00:36:40 ◼   ► maybe something a little trendier than you're used to.

00:36:43 ◼   ► And so I got these five pairs of sunglasses and I tried them all on and I ended up actually

00:36:49 ◼   ► choosing one that was a little bit out of my comfort zone.

00:36:52 ◼   ► And I got the final set about a week ago and I love them.

00:36:56 ◼   ► They're really well built, really nice, and I have absolutely no complaints.

00:37:00 ◼   ► And granted I'm kind of compelled to say that, but it really is genuinely true.

00:37:03 ◼   ► Now John, you said you have or have not gotten yours.

00:37:06 ◼   ► I got my Trion ones.

00:37:08 ◼   ► The great thing about the Trion box is you pick five glasses, isn't that number?

00:37:12 ◼   ► And I don't think there's an option to pick fewer or anything.

00:37:15 ◼   ► And five is a good number because, like Casey said, it does make you pick like...

00:37:18 ◼   ► Because you can usually pick your top three, and then after that you're like, "Well, I'm

00:37:21 ◼   ► pretty sure I'm going to like one of these three that I picked, right?"

00:37:23 ◼   ► Exactly.

00:37:24 ◼   ► "But I have two more slots to fill," and you pick weirder stuff.

00:37:26 ◼   ► I did the same thing.

00:37:29 ◼   ► And the other thing that impressed me is on the website, if you don't want to do the home

00:37:32 ◼   ► of Trion, they have the thing where you can upload a picture of yourself and try it on.

00:37:35 ◼   ► And I'm like, "Okay, there's gonna be something, I'll upload a picture and I'll paste a copy of the glasses over my face and it'll look stupid and I won't be able to tell if I'll like them."

00:37:42 ◼   ► But they do this thing, I don't know how it works, they must be doing face detection, figuring out where your pupils are and then scaling it.

00:37:48 ◼   ► And they have a floating 3D version of the glasses frames, so you can rotate it and angle it so that it matches how your face is in the photo.

00:37:58 ◼   ► And it hides the little things that go over your ears so they don't overlap your face and everything.

00:38:03 ◼   ► It's really impressive.

00:38:05 ◼   ► I think I almost could have picked them out just

00:38:07 ◼   ► from the website using the little 3D thing.

00:38:09 ◼   ► I would really love to know how that works.

00:38:11 ◼   ► I think it might be flash.

00:38:12 ◼   ► I don't know what technology they're using behind it.

00:38:14 ◼   ► But I was really impressed by that.

00:38:15 ◼   ► But yeah, the fact that they're going to send you the glasses,

00:38:17 ◼   ► you don't even have to bother with that if you don't want to.

00:38:20 ◼   ► You get the glasses, and yeah, just take off the box

00:38:23 ◼   ► and sit in front of the mirror, put on one, put on another one.

00:38:25 ◼   ► And the great thing is I'm ordering sunglasses as well.

00:38:27 ◼   ► They gave me sunglass lenses in my sunglasses.

00:38:29 ◼   ► So it wasn't just empty-- sometimes at the eyeglass

00:38:32 ◼   ► places, like it's just an empty frame with nothing in them or they're clear or whatever.

00:38:36 ◼   ► These had actual sunglass, you know, like not prescription, right, because these are

00:38:39 ◼   ► just a try-on pair, but you could see how they would look on you as sunglasses, which

00:38:42 ◼   ► was nice. So I did pick the, you know, three pair that I thought I would like and the two

00:38:47 ◼   ► exotic pair, and I ended up picking one of the ones I thought I would like because I

00:38:50 ◼   ► guess I'm a boring person, but it was fun to try them out. And I didn't end up with

00:38:54 ◼   ► the ones that I thought would be like my clear number one, like I don't need to do these

00:38:57 ◼   ► five things, I know I'm going to like this one. I ended up picking like my third one.

00:39:01 ◼   ► See, I did a second round of home try-ons because I was so excited about the sunglasses.

00:39:05 ◼   ► I'm like, "Okay, I'm going to get a pair of regular glasses as well."

00:39:09 ◼   ► And I only picked three for my home try-on.

00:39:12 ◼   ► And so Warby Parker took it upon themselves to see the styles that I liked and that I

00:39:17 ◼   ► picked and they filled in the rest of the other two in the box.

00:39:22 ◼   ► And when I got them, I ended up picking one of the pairs that the Warby Parker people

00:39:27 ◼   ► had picked for me, which was pretty impressive.

00:39:29 ◼   ► So I thought that that was a really cool feature.

00:39:31 ◼   ► So you can pick fewer than five, but they'll fill in for you.

00:39:36 ◼   ► And they ended up making a better choice than even I did.

00:39:39 ◼   ► They know you better than me.

00:39:40 ◼   ► Who would pick fewer than five?

00:39:41 ◼   ► Who would not?

00:39:42 ◼   ► You have five slots.

00:39:43 ◼   ► You fill them all.

00:39:44 ◼   ► Say, "Hey, just give me a..."

00:39:45 ◼   ► Well, this is my second round.

00:39:46 ◼   ► So I had already done five.

00:39:48 ◼   ► And then so I was going to do, I'm like, "Ah, there's three more."

00:39:51 ◼   ► On the second round, you picked one of the ones that picked you.

00:39:53 ◼   ► So you picked like altogether seven pairs of glasses and you didn't pick any, or no,

00:39:58 ◼   ► eight pair of glasses, and you didn't pick any of your own eight. You picked the two

00:40:02 ◼   ► that they gave you.

00:40:03 ◼   ► Correct.

00:40:04 ◼   ► Wow. That's pretty impressive.

00:40:05 ◼   ► Yeah. So, yeah. They did a fantastic job. And Marco's hovering behind me, so I think

00:40:10 ◼   ► he wants to get back on the air, but maybe I won't let him.

00:40:14 ◼   ► Shove him out of the way. Nobody likes him anyway.

00:40:16 ◼   ► Aw, poor Marco.

00:40:17 ◼   ► No, I'm just kidding. Oh, thanks, Tiff. I appreciate the cameo.

00:40:22 ◼   ► All right. Thank you, guys.

00:40:24 ◼   ► She needs to get her own mic.

00:40:26 ◼   ► I know. We should get her her own mic.

00:40:29 ◼   ► I only have one mic. I'll have to rig that up.

00:40:31 ◼   ► If only you had sold something recently so you can afford another.

00:40:35 ◼   ► Anyway, let's finish this spot. So, a few more things I have to say.

00:40:38 ◼   ► So, yeah. So, Warby Parker, they price their glasses affordably

00:40:43 ◼   ► because they believe glasses are like a fashion accessory.

00:40:45 ◼   ► And if each pair doesn't cost you like hundreds and hundreds of dollars,

00:40:49 ◼   ► then you can afford to have more than one if you want to.

00:40:52 ◼   ► And they know that not everybody can afford glasses.

00:40:55 ◼   ► a whole lot of people in need who need glasses

00:40:57 ◼   ► and who can't afford them.

00:40:59 ◼   ► They have a great program called Buy a Pair, Give a Pair,

00:41:02 ◼   ► where for every pair of their glasses sold,

00:41:05 ◼   ► they also donate a pair to people in need.

00:41:08 ◼   ► And that's really cool.

00:41:09 ◼   ► And it's just so-- ultimately, they're

00:41:12 ◼   ► a fantastic glasses company.

00:41:13 ◼   ► They make high quality products.

00:41:14 ◼   ► Tiff was also-- I don't think she mentioned.

00:41:16 ◼   ► She's also very impressed by their quality

00:41:18 ◼   ► relative to her expensive, professional ones from before.

00:41:22 ◼   ► She said they're actually better in most ways

00:41:24 ◼   ► than the one she got from her eye doctor.

00:41:26 ◼   ► So very, very happy with this company.

00:41:29 ◼   ► And so go to warbyparker.com.

00:41:32 ◼   ► That's W-A-R-B-Y, parker, dot com.

00:41:35 ◼   ► And when you order the home try-ons, do it, you know,

00:41:40 ◼   ► have fun.

00:41:41 ◼   ► When you order the final pair that you want to buy,

00:41:44 ◼   ► use our coupon code ATP.

00:41:46 ◼   ► And that'll get you free three-day shipping.

00:41:49 ◼   ► So again, use coupon code ATP when

00:41:51 ◼   ► you make your final purchase.

00:41:52 ◼   ► and it'll get you free three-day shipping.

00:41:54 ◼   ► So thanks a lot to Warby Parker.

00:41:57 ◼   ► Great glasses company, thanks for sponsoring the show.

00:42:00 ◼   ► All right.

00:42:01 ◼   ► - Apologies that took forever,

00:42:02 ◼   ► but they really are that good.

00:42:03 ◼   ► - Oh yeah, that's all right.

00:42:03 ◼   ► I figured it was fun.

00:42:05 ◼   ► And I even ran the idea by them of having Tiff Cummings.

00:42:07 ◼   ► I'm like, look, and they have sunglasses and stuff,

00:42:09 ◼   ► but I already have three pairs of sunglasses.

00:42:13 ◼   ► Tiff was like, do you really need another one?

00:42:14 ◼   ► And she actually really needed the glasses,

00:42:17 ◼   ► 'cause her existing ones that she'd just gotten

00:42:18 ◼   ► were not fitting her at all.

00:42:20 ◼   ► And so I ran it by them, the idea of having heard the ad read.

00:42:24 ◼   ► They're like, yeah, sure, that's great.

00:42:26 ◼   ► They're a fun company.

00:42:26 ◼   ► So anyway, thanks a lot to them.

00:42:29 ◼   ► I wanted to talk a little bit about an offshoot of the topic

00:42:32 ◼   ► that we had right before the break about code,

00:42:36 ◼   ► long-term health, and when things get too complex

00:42:39 ◼   ► and they kind of buckle under their own weight.

00:42:44 ◼   ► So the Instapaper web app, as we discussed, was very simple

00:42:46 ◼   ► and didn't have too many of those problems.

00:42:48 ◼   ► The iOS app, though, I'm afraid might, because on so many--

00:42:53 ◼   ► I mean, this paper iOS app was in the App Store on day one.

00:42:56 ◼   ► So the first bits of code were written for iOS 2.

00:42:59 ◼   ► And most of the current code was written for iOS 3.

00:43:04 ◼   ► And I've matured it over time to add features here and there.

00:43:09 ◼   ► But the core code base, as is today,

00:43:13 ◼   ► there's still some view structure in there from iOS 3.

00:43:18 ◼   ► And there were some modern features

00:43:19 ◼   ► that I never took advantage of, things like child view

00:43:22 ◼   ► controllers, view controller containment, all that stuff

00:43:24 ◼   ► that was introduced in, I think, five.

00:43:26 ◼   ► I never even took advantage of that.

00:43:29 ◼   ► And back then-- and the list of things

00:43:32 ◼   ► that this applies to gets smaller every OS release.

00:43:35 ◼   ► But over time, there's always been UI characteristics

00:43:40 ◼   ► or effects that I've wanted to achieve.

00:43:44 ◼   ► And the API, for whatever reason, didn't expose them.

00:43:48 ◼   ► So you'd basically have to fake it or hack it somehow.

00:43:52 ◼   ► And over time, Instapaper built up quite a lot

00:43:55 ◼   ► of those for various things.

00:43:56 ◼   ► And a lot of it was to its great advantage.

00:44:00 ◼   ► Things like the iBook-style pagination,

00:44:04 ◼   ► there was an API for that.

00:44:06 ◼   ► But the structure of it made it almost impossible

00:44:09 ◼   ► to use in any reasonable way with a web view.

00:44:13 ◼   ► And of course, actually in iOS 7,

00:44:16 ◼   ► I think they even said it on one of the slides.

00:44:18 ◼   ► They've added pagination to web views.

00:44:20 ◼   ► It's just a flag you can set.

00:44:22 ◼   ► So one line of that will replace thousands

00:44:25 ◼   ► of lines of Instapaper code.

00:44:27 ◼   ► But over time, that really made Instapaper's iOS code base

00:44:34 ◼   ► pretty big.

00:44:35 ◼   ► And there are a few hacks in there

00:44:37 ◼   ► that are pretty uncomfortable.

00:44:39 ◼   ► And so now I'm working on this new big app.

00:44:43 ◼   ► And it's actually going to be a Business Insider Reader.

00:44:46 ◼   ► That's the new app.

00:44:48 ◼   ► So I'm working on this new app.

00:44:50 ◼   ► And what I'm trying to do in the UI

00:44:54 ◼   ► is avoid those kind of hacks as much as I can.

00:45:00 ◼   ► If I want a certain really cool feature, rather than saying,

00:45:05 ◼   ► oh, yeah, let me invest two weeks

00:45:08 ◼   ► into making this tremendous pile of hacks

00:45:10 ◼   ► that I'm going to hate in six months

00:45:12 ◼   ► when I have to go back and change something

00:45:13 ◼   ► and is going to have all these weird side effects

00:45:15 ◼   ► because I just have to do that one feature.

00:45:18 ◼   ► Rather than doing that, I'm trying--

00:45:20 ◼   ► and this is actually pretty hard because I love doing

00:45:23 ◼   ► those crazy hacks at the time--

00:45:25 ◼   ► but I'm really trying to lean more towards just doing

00:45:31 ◼   ► the 80% solution, doing whatever the UI affords me

00:45:35 ◼   ► the ability to do easily, whatever the API allows

00:45:38 ◼   ► in an easy way, just do that. And don't get into this giant pile of hacks style of,

00:45:44 ◼   ► "Got to achieve this one crazy feature by doing this big pile of hacks."

00:45:48 ◼   ► I don't know. What do you think? I don't know if that's realistic. Part of the reason

00:45:54 ◼   ► I did it with Instapr was that A, it was cool; B, it got pressed; and C, it was a huge competitive

00:45:58 ◼   ► advantage. I don't know. Maybe doing that sometimes is a good idea.

00:46:03 ◼   ► Yeah, I think you can't avoid it because it makes you stand out.

00:46:08 ◼   ► Maybe there's a brief honeymoon period with iOS 7 where merely just doing the standard

00:46:11 ◼   ► UI in iOS 7 is enough for the day one launch, but all those things that InstaVapor did that

00:46:17 ◼   ► made it different, it's branding.

00:46:19 ◼   ► It's branding for your application, and even if it's just like, "Boy, I wish that could

00:46:22 ◼   ► slide out instead of just appearing," and there's no way to do that.

00:46:26 ◼   ► Well, if I make it a totally different element or if I do something with custom core animation

00:46:29 ◼   ► layers instead of just using the UIKit navigation controller that does whatever it wants to

00:46:35 ◼   ► do.

00:46:36 ◼   ► It'll just add that extra little bit of difference there.

00:46:40 ◼   ► And those little things add up and make your application stand out as, "Oh, this is not

00:46:44 ◼   ► just a bunch of standard controls and widgets interacting in exactly the same way as they

00:46:48 ◼   ► would in some demo application.

00:46:50 ◼   ► It's got a little extra."

00:46:51 ◼   ► And you have to find the balance between a little extra or a letterpress, right?

00:46:56 ◼   ► So that's the continuum, right?

00:46:58 ◼   ► Right.

00:46:59 ◼   ► And clearly, you're not even approaching full brick there, right?

00:47:03 ◼   ► But you were saying, "Well, maybe InstaPaper, I saw what that was like when it lived over

00:47:08 ◼   ► the course of three entire major releases of iOS, and it got a little creaky.

00:47:12 ◼   ► So maybe just try to start out with as few of those as you can.

00:47:15 ◼   ► Maybe just use one.

00:47:16 ◼   ► There's just one effect or element or transition that I can't get that I'm going to do in a

00:47:22 ◼   ► fancy way.

00:47:23 ◼   ► And it's something that people will see a lot, and it will distinguish my application.

00:47:25 ◼   ► but I'm going to hold off on being like, "Boy, I really wish that I could get that

00:47:29 ◼   ► thing to do that, but oh well, the thing that it does now is fine." Or, "I really

00:47:33 ◼   ► wish that was a little bit different, but I'll just use the regular collection class."

00:47:36 ◼   ► And even though the regular collection class doesn't display, doesn't reshuffle or show

00:47:40 ◼   ► the titles the way I want, or wouldn't it be great if the title could fly on? All that

00:47:44 ◼   ► stuff is going to annoy you about using Apple standard controls, especially the ones that

00:47:47 ◼   ► are immature. But if you just sort of grin and bear it and pick your battles and maybe

00:47:50 ◼   ► pick one or two places in the first version where you do fancy stuff, and then just wait.

00:47:55 ◼   ► Like you said, if you wait long enough, maybe it'll get built in.

00:48:00 ◼   ► The people who waited until page turning was built in, maybe had a competitive disadvantage.

00:48:04 ◼   ► But there are other instances where people didn't have a competitive disadvantage if

00:48:09 ◼   ► they just waited for some sort of navigation controller feature to appear, and you had

00:48:13 ◼   ► hacked it in in version two and it appeared in version three.

00:48:16 ◼   ► That was maybe not a worthwhile hack for something that most people didn't even know was a fancy

00:48:21 ◼   ► behavior.

00:48:22 ◼   ► Well, and it's also about where you're making these fancy hacks.

00:48:26 ◼   ► So, for example, the iPad version of Instapaper had what basically was a collection view before

00:48:32 ◼   ► there was a UI collection view.

00:48:33 ◼   ► Isn't that right?

00:48:34 ◼   ► It was called IP fake grid view.

00:48:35 ◼   ► Yeah, exactly.

00:48:37 ◼   ► And so, what I'm driving at is you could do something fairly wild with UI collection view

00:48:42 ◼   ► that isn't standard but is supported.

00:48:47 ◼   ► And that's a very fine line but a very important one.

00:48:49 ◼   ► So here it is, you're taking UI Collection View, which is a completely standard component,

00:48:54 ◼   ► but you're doing a wild, I don't remember what they call it, like a layout or whatever,

00:48:58 ◼   ► you're doing a really wild custom layout in order to do something interesting.

00:49:02 ◼   ► And if you look at WWDC 2012, when they were talking about the collection view, they did

00:49:07 ◼   ► some unbelievably clever and trick things with the collection view with not a lot of

00:49:12 ◼   ► code just by doing a custom layout.

00:49:14 ◼   ► And so maybe the right answer is you choose easy and intelligent places to make these

00:49:19 ◼   ► custom wild things happen that are kind of supported. Or maybe you just do some really

00:49:23 ◼   ► wild stuff with core animation that isn't off the reservation, if you will, but it's

00:49:28 ◼   ► different. And by doing it in places that are sort of designed to have this flexibility,

00:49:33 ◼   ► then maybe that'll prevent some of that creakiness in the future.

00:49:37 ◼   ► Yeah, like anything that supports views. Do something fancy in your view. And that is

00:49:43 ◼   ► probably more maintainable than saying, "The thing that controls these views, that's

00:49:47 ◼   ► that's where I'm going to do the fancy stuff, you know.

00:49:50 ◼   ► - Yeah, exactly.

00:49:51 ◼   ► I mean, that, like, 'cause you know,

00:49:52 ◼   ► a lot of what, a lot of those hacks that I did

00:49:55 ◼   ► over the years were things like transitions.

00:49:57 ◼   ► And, and to some extent, the fake grid view was actually,

00:50:02 ◼   ► honestly, the fake grid view was not that bad

00:50:05 ◼   ► because it was self-contained.

00:50:06 ◼   ► As you're saying, Jon, it's like,

00:50:08 ◼   ► it was, it was, you know, it mimics a table view.

00:50:11 ◼   ► In fact, it actually was a table view subclass,

00:50:13 ◼   ► which is its own breed of craziness.

00:50:15 ◼   ► and it worked like a table view. The data source, the delegate all worked the exact

00:50:19 ◼   ► same way. It was actually pretty black boxy, so it wasn't really a problem.

00:50:27 ◼   ► And you didn't have to write UI Collection View. You didn't have to say, "Oh, this

00:50:29 ◼   ► is a completely flexible Collection View, and you can use it in any orientation with

00:50:32 ◼   ► any number of rows and heights, and you can delegate the views to anything that wants

00:50:36 ◼   ► to populate them." You didn't have to make that. You just had to make something

00:50:39 ◼   ► that worked for Instapaper, which narrowly constrains what you have to do. So you can

00:50:43 ◼   ► make your grid view work, you're not on the hook to make a general purpose collection

00:50:46 ◼   ► view that works in a million different contexts.

00:50:48 ◼   ► Right, exactly. So, you know, that really wasn't one of the hacks. The bigger hacks

00:50:53 ◼   ► came from things like transitions. And, like, especially more on the iPhone. On the iPad,

00:50:59 ◼   ► I was doing a lot more of my own custom UI. A very common practice, though, for programmers

00:51:05 ◼   ► making iOS stuff is you want to generally stay within UIKit for a lot of uses, but then

00:51:12 ◼   ► then you hit some kind of weird limitation, some kind of edge

00:51:16 ◼   ► case.

00:51:17 ◼   ► Probably it's in UI bar button item.

00:51:20 ◼   ► And you hit some kind of edge case,

00:51:22 ◼   ► and you're like, well, if I want this to do this thing,

00:51:26 ◼   ► then I have to not even use UI toolbar.

00:51:29 ◼   ► Or I have to re-implement my own button.

00:51:31 ◼   ► Or something on a pretty large scale like that.

00:51:35 ◼   ► And if you say yes to even a couple of those things,

00:51:38 ◼   ► it starts getting kind of insane.

00:51:40 ◼   ► And then if you start saying yes to things

00:51:42 ◼   ► that involve multiple views and multiple controllers,

00:51:46 ◼   ► like navigational structures or transitions,

00:51:49 ◼   ► then it can start getting pretty hairy pretty quickly.

00:51:52 ◼   ► And every OS release that comes out,

00:51:56 ◼   ► this becomes easier to do in a supported or at least a cleaner

00:51:59 ◼   ► way.

00:52:00 ◼   ► You know, iOS 7 supports all sorts of cool new stuff

00:52:02 ◼   ► to make a lot of these hacks either unnecessary

00:52:05 ◼   ► or substantially better and more maintainable.

00:52:08 ◼   ► And-- but there's always going to be that bleeding edge

00:52:12 ◼   ► of things that aren't supported.

00:52:13 ◼   ► And there's going to be-- I think

00:52:17 ◼   ► it's a lot like when making this PaperWebApp,

00:52:21 ◼   ► Instapaper itself was a collection

00:52:22 ◼   ► of very, very simple things with two hard things, the text

00:52:27 ◼   ► parser and the Kindle format thing.

00:52:29 ◼   ► Those were two hard things, and I wrapped it

00:52:31 ◼   ► with a bunch of easy things.

00:52:33 ◼   ► If the number of crazy things that you're doing

00:52:35 ◼   ► is pretty small, and everything else you're doing

00:52:37 ◼   ► is pretty easy, then that is a competitive advantage.

00:52:40 ◼   ► And you can get away with it.

00:52:41 ◼   ► It's a matter of balancing those.

00:52:44 ◼   ► So in my new app, I have this one really crazy low-level

00:52:49 ◼   ► feature that I really want to do.

00:52:51 ◼   ► But it's one of those things where it hits an edge of UIKit,

00:52:54 ◼   ► and I'm going to have to do a lot of work

00:52:56 ◼   ► to make that work right.

00:52:57 ◼   ► And I'm weighing now, should I maybe

00:53:01 ◼   ► shift version 1 without it?

00:53:03 ◼   ► Because it's going to be so much work for one feature.

00:53:07 ◼   ► But it's a pretty nice feature.

00:53:08 ◼   ► You know, so it's, it's, it's always this battle in my head of like, do I do this?

00:53:13 ◼   ► Do I not do this?

00:53:14 ◼   ► I don't know.

00:53:14 ◼   ► Yeah, it's a tough thing.

00:53:17 ◼   ► And, and especially early on, you know, you don't know, you don't know when to say no

00:53:22 ◼   ► yet a lot of the times, and, and what I hear you saying earlier to turn this into

00:53:26 ◼   ► the Joel Spolsky, uh, rerun show is, you know, the kind of the broken windows thing

00:53:31 ◼   ► where if you allow yourself early on to go a little bit wild, then the next time you

00:53:38 ◼   ► have the question, "Well, can I get a little bit wild with this?

00:53:41 ◼   ► I already did it before.

00:53:42 ◼   ► Why not do it again?"

00:53:43 ◼   ► It's a slippery slope.

00:53:45 ◼   ► Especially if you're early on in development, as I know you are, it's better, in my opinion,

00:53:51 ◼   ► in most cases, to try to stay as stock as possible and as simple as possible so that

00:53:56 ◼   ► don't allow yourself to go absolutely crazy from the foundation up.

00:54:01 ◼   ► Exactly.

00:54:02 ◼   ► Alright. Do we want to talk about something else that's awesome or do we want to wait

00:54:07 ◼   ► another minute?

00:54:08 ◼   ► We do. Let's do it now while there's a gap.

00:54:09 ◼   ► Excellent.

00:54:10 ◼   ► Our second awesome thing is yet another new sponsor. I believe they're new to our show.

00:54:14 ◼   ► They're not new to my site or me as a person, but they're Igloo, also known as Igloo Software.

00:54:20 ◼   ► So Igloo is an intranet you'll actually like. Now, I don't know of anybody who, at least

00:54:26 ◼   ► anybody who's never seen Igloo before. I don't know of anybody who has any kind of positive

00:54:31 ◼   ► association with the word intranet. Generally these are horrible internal corporate sites

00:54:36 ◼   ► that you're forced to use at your job that are badly made, badly maintained, barely work,

00:54:42 ◼   ► and require you to use IE6 or some craziness like that. Nobody likes their intranet. Unless

00:54:48 ◼   ► they're Igloo customers, because Igloo actually makes an intranet that you will like and that

00:54:53 ◼   ► that your workers were like.

00:54:55 ◼   ► You can share content quickly with all sorts of built-in apps.

00:54:58 ◼   ► They have blogs, they have calendars, file sharing,

00:55:01 ◼   ► forums, they have Twitter-like micro blogs, Wikis.

00:55:05 ◼   ► And everything can be social.

00:55:06 ◼   ► You can comment on any type of content.

00:55:08 ◼   ► You can @reply, you can @mention your coworkers Twitter style.

00:55:12 ◼   ► You can follow content for updates.

00:55:14 ◼   ► You can tag things.

00:55:15 ◼   ► You can group things.

00:55:16 ◼   ► You can add on rooms.

00:55:18 ◼   ► You can have mini igloos for certain teams,

00:55:20 ◼   ► certain divisions to work in.

00:55:21 ◼   ► The whole thing, all these features are very, very easy.

00:55:25 ◼   ► It's drag and drop.

00:55:27 ◼   ► It has responsive design.

00:55:28 ◼   ► It uses beautiful typekit fonts.

00:55:30 ◼   ► These people will really know their stuff.

00:55:32 ◼   ► And it's like they're applying all the awesome, modern,

00:55:37 ◼   ► progressive design and features that we get on the consumer

00:55:40 ◼   ► web to the internet world.

00:55:41 ◼   ► And that's extremely rare.

00:55:44 ◼   ► So they're doing it all for you.

00:55:46 ◼   ► Plus, Igloo has enterprise-grade security.

00:55:52 ◼   ► You can start using it right away.

00:55:54 ◼   ► It's free to use up to 10 people.

00:55:55 ◼   ► That's pretty cool.

00:55:56 ◼   ► If you have a staff of 10 people or less, it's totally free.

00:55:59 ◼   ► So go start using it today.

00:56:01 ◼   ► And when it grows, it's only $12 per person per month.

00:56:04 ◼   ► For a business, this is extremely affordable,

00:56:07 ◼   ► way cheaper than developing your own,

00:56:09 ◼   ► and it's just so much better.

00:56:11 ◼   ► It's worlds better than most people's internets.

00:56:13 ◼   ► So go to igloosoftware.com/atp.

00:56:17 ◼   ► That's igloosoftware.com/atp.

00:56:20 ◼   ► Start building your igloo today.

00:56:21 ◼   ► Free to use up to 10 people.

00:56:23 ◼   ► Go for it.

00:56:24 ◼   ► Thanks a lot to igloo software.

00:56:25 ◼   ► They're a fantastic sponsor.

00:56:27 ◼   ► They sponsored lots of great podcasts.

00:56:28 ◼   ► They actually listen to the shows, which is pretty great.

00:56:31 ◼   ► And so they've done inside jokes on some of the shows.

00:56:35 ◼   ► In fact, let me go to this page.

00:56:38 ◼   ► And sure enough, it says, welcome ATP listeners up top.

00:56:41 ◼   ► And they're fans.

00:56:43 ◼   ► They're fans of our stuff.

00:56:45 ◼   ► They appreciate what we do.

00:56:46 ◼   ► So give them a shot.

00:56:48 ◼   ► igloosoftware.com/atp.

00:56:50 ◼   ► Thanks a lot to Igloo for making awesome intranets

00:56:53 ◼   ► and sponsoring our show.

00:56:55 ◼   ► Thanks.

00:56:56 ◼   ► They should have a program where they send people

00:56:58 ◼   ► to your office to convince the powers that be that they should

00:57:01 ◼   ► get rid of their client.

00:57:02 ◼   ► Because that is often the-- I wish

00:57:04 ◼   ► I could get rid of my intranet and replace it with Igloo,

00:57:06 ◼   ► but I can't.

00:57:06 ◼   ► Because I'm in a 2,000 person company,

00:57:08 ◼   ► and I'm one employee, right?

00:57:09 ◼   ► So it's like, they just have a team that says,

00:57:11 ◼   ► "Look, you need to change."

00:57:12 ◼   ► Because I wish, I wish we didn't have to use

00:57:15 ◼   ► the things we're using.

00:57:16 ◼   ► - Oh, they also have a sandwich video.

00:57:19 ◼   ► I mean, come on, how cool is that?

00:57:20 ◼   ► - How can you go wrong with a sandwich video?

00:57:22 ◼   ► - Yeah, so check them out, they're awesome.

00:57:24 ◼   ► Man, internets. - If nothing else,

00:57:25 ◼   ► go watch the sandwich video.

00:57:26 ◼   ► - Internets are so bad usually.

00:57:28 ◼   ► Oh man, I mean, this is one of those problems.

00:57:31 ◼   ► It's like when we have hover advertising,

00:57:34 ◼   ► it's like everyone has seen terrible domain registrars.

00:57:36 ◼   ► Well, everyone has seen terrible internets.

00:57:39 ◼   ► Without revealing too much, only recently was I able to do something without using Java

00:57:45 ◼   ► in my web browser on my internet.

00:57:47 ◼   ► Remember Java in the browser?

00:57:50 ◼   ► Only recently was there a non-Java way to do it.

00:57:53 ◼   ► I'm like, "Yes!"

00:57:54 ◼   ► Small victories.

00:57:55 ◼   ► I actually recently wished for Java in the browser to work again.

00:57:58 ◼   ► For some reason, my machine just doesn't work anymore.

00:58:00 ◼   ► I don't know if I installed it from one of the security things recently or what.

00:58:06 ◼   ► my LiveFish.com fish show downloader.

00:58:10 ◼   ► Like every time there's a fish tour, I buy it,

00:58:13 ◼   ► and then every night of the concert,

00:58:15 ◼   ► I can go download the show from that night.

00:58:17 ◼   ► And they have a Java multi-file downloader thing,

00:58:20 ◼   ► and that hasn't worked.

00:58:22 ◼   ► So I've had to hold that option and just click all the links

00:58:24 ◼   ► one by one.

00:58:25 ◼   ► It's really a hard life.

00:58:27 ◼   ► Like an animal.

00:58:28 ◼   ► Yep, exactly.

00:58:29 ◼   ► It's too bad you can't write a program to automate that for

00:58:32 ◼   ► you.

00:58:32 ◼   ► I thought about actually writing-- or at least

00:58:34 ◼   ► trying to find a Safari extension.

00:58:36 ◼   ► I'm sure somebody--

00:58:38 ◼   ► Not just Safari extensions.

00:58:39 ◼   ► Just do the ghetto way where you copy and paste the source

00:58:42 ◼   ► and run it through a thing and make a bunch of--

00:58:46 ◼   ► I could do that, but there might be some kind of weird session

00:58:48 ◼   ► stuff.

00:58:48 ◼   ► I don't know.

00:58:49 ◼   ► Because it's all authenticated because it's at the bottom.

00:58:52 ◼   ► Grab your cookie jar.

00:58:55 ◼   ► I've done it many times trying to grab WWDC things,

00:58:57 ◼   ► grab Apple videos.

00:58:58 ◼   ► And every time I do it, I'm like,

00:58:59 ◼   ► you know, I should have a tool that does this,

00:59:01 ◼   ► not bother to do it the crappy way again.

00:59:02 ◼   ► Just paste into BB Edit and repeatedly hold down

00:59:05 ◼   ► insane chords that involve like three or four modifiers at the same time that I've nonetheless

00:59:11 ◼   ► memorized to grind the files up into bits and then throw in a double score data token

00:59:17 ◼   ► and start writing pro code on top of it and make a series of scripts to process it.

00:59:23 ◼   ► Actually what this really should be is a bookmarklet because then you're running right in the context

00:59:26 ◼   ► of the page.

00:59:27 ◼   ► It'd be really, really easy to make that.

00:59:28 ◼   ► Yeah, and you could write it in JavaScript too.

00:59:31 ◼   ► All right, so what else do we want to talk about?

00:59:34 ◼   ► John, I know you had an interesting topic you wanted to bring up.

00:59:37 ◼   ► Yeah, this was LinkedIn Daring Fireball, I think, today.

00:59:40 ◼   ► I think that's where I got it from.

00:59:42 ◼   ► And the title of the story is "Regular people have no idea how to manage photos on their

00:59:46 ◼   ► phone," which is not really so much what I want to talk about.

00:59:49 ◼   ► I want to talk about the points that were gotten to at the end of this thing.

00:59:53 ◼   ► I don't even know who wrote it.

00:59:54 ◼   ► Bradley Chambers.

00:59:55 ◼   ► Yeah, okay, Bradley Chambers.

00:59:57 ◼   ► And he's talking about the problem with photo management on your phones.

01:00:00 ◼   ► People just buy phones and they take pictures with them.

01:00:04 ◼   ► I think about this with all my relatives and non-technical friends who have phones.

01:00:10 ◼   ► What do they think about?

01:00:11 ◼   ► They own a phone, right?

01:00:13 ◼   ► And they're taking pictures with it.

01:00:14 ◼   ► Sometimes they're pictures that they care about, like pictures of their kids or at their

01:00:16 ◼   ► soccer game or their son scoring his first goal.

01:00:20 ◼   ► They're important memories, right?

01:00:22 ◼   ► Did they ever think about what happens if you drop your phone out your car window when

01:00:27 ◼   ► you're driving or something?

01:00:29 ◼   ► What happens if you spill coffee on it?"

01:00:31 ◼   ► I think they don't think those photos are gone forever.

01:00:34 ◼   ► I think they just think the photos are magically safe, or maybe they don't.

01:00:38 ◼   ► I don't even know what regular people think about this.

01:00:39 ◼   ► But the bottom line is that Apple doesn't take care of you or your data to the degree

01:00:45 ◼   ► that I think it should.

01:00:47 ◼   ► This was way back when I first started writing on the FatBits blog on Ars Technica years

01:00:52 ◼   ► and years ago.

01:00:53 ◼   ► One of the first things I wrote about was this problem that Apple has made these devices

01:00:58 ◼   ► and encouraged everyone, even back in the Digital Hub days, to put your most precious

01:01:03 ◼   ► possessions—precious non-living possessions—on their hardware, and then they don't care

01:01:09 ◼   ► what the hell happens to it after that.

01:01:11 ◼   ► Not that it's that bad, but I think there should be more concern about taking care of

01:01:16 ◼   ► your stuff.

01:01:17 ◼   ► Because seriously, if your house burns down, your family and your pets all get out alive,

01:01:22 ◼   ► the first thing that you care about, other than hoping you had some kind of insurance,

01:01:25 ◼   ► is probably like your family photos or your movies, because those things can't be replaced.

01:01:28 ◼   ► You can buy a new car, you can buy new furniture, you can build a new house, as long as everyone

01:01:31 ◼   ► is safe, but you can't recreate those photos.

01:01:36 ◼   ► We have all these devices to make these memories.

01:01:39 ◼   ► What's keeping them safe?

01:01:40 ◼   ► And unless you're a nerd and have this crazy backup regime and know exactly where the problems

01:01:45 ◼   ► are, your stuff is completely vulnerable.

01:01:49 ◼   ► And we're so close now to having a technology where Apple or any other company could take

01:01:53 ◼   ► care of us, and yet they don't.

01:01:54 ◼   ► And so the problem with the photos on your phone is you start taking pictures and you

01:01:58 ◼   ► keep going, and once you get past like a thousand pictures, or whatever the limit of, what is

01:02:04 ◼   ► it, five gigabytes free they give you in iCloud, those photos may only be on your phone.

01:02:11 ◼   ► And if you drop your phone in the ocean, you lost all the photos that weren't in the last

01:02:15 ◼   ► thousand that are in PhotoStream or something.

01:02:17 ◼   ► That's if you, assuming you got through the process and got us up in PhotoStream or whatever,

01:02:21 ◼   ► I don't know if people just assume that Apple's still carrying their pictures, but at this

01:02:23 ◼   ► point, Apple should be taking care of everything. Apple's devices should be designed in such

01:02:29 ◼   ► a way that if they're network-connected devices, that if you smash your computer with the hammer,

01:02:32 ◼   ► and if your house burns down, if you throw your iPhone in the ocean, your data should

01:02:36 ◼   ► still be available. And I'm not saying Apple needs to make that happen for free, but they

01:02:41 ◼   ► need to figure out some way to make it happen. And back when I wrote about this on FatBits

01:02:44 ◼   ► ages ago, it was like I was saying that every single computer should come with at least

01:02:47 ◼   ► two hard drives, but you shouldn't tell people that there's two in there, and all your data

01:02:50 ◼   ► should be redundant at all times, right?

01:02:53 ◼   ► Because hard drive failure was a big problem.

01:02:55 ◼   ► Online backups weren't tenable back then because people didn't have fast enough internet connections.

01:02:58 ◼   ► So they're saying, "Look, at least make it so that if someone's hard drive dies, they

01:03:01 ◼   ► don't lose all the picture of their kids.

01:03:02 ◼   ► Always have double."

01:03:03 ◼   ► And who can afford to do that?

01:03:05 ◼   ► Apple is the only company.

01:03:06 ◼   ► Because everyone else had razor-thin margins, but Apple maybe could build it into the price

01:03:09 ◼   ► of their devices or whatever.

01:03:12 ◼   ► And at the end of this article, it has a suggestion that's like, again, may not be economically

01:03:16 ◼   ► feasible, but it would be nice, and it's the same type of thing.

01:03:19 ◼   ► Make iCloud free for the total size of all active devices.

01:03:24 ◼   ► So if you have a 16 gigabyte iPhone or a 32 gigabyte iPad, you should get 48 gigabytes

01:03:29 ◼   ► of iCloud for backup.

01:03:30 ◼   ► So at the very least, every single byte of data that's on your phone and your iPad can

01:03:33 ◼   ► be backed up.

01:03:34 ◼   ► And if you buy a new iPad and it's 32 gigabytes, boom, you get another 32 gigabytes of storage.

01:03:39 ◼   ► Make that the default.

01:03:41 ◼   ► If possible, make it free.

01:03:42 ◼   ► If you can't make it free, build it into the price of the device.

01:03:45 ◼   ► They're already premium-priced devices.

01:03:48 ◼   ► If Apple would commit to this, they could be the vendor that gets the reputation like,

01:03:52 ◼   ► "Oh yeah, Apple costs more," but you won't have to worry about losing your data.

01:03:56 ◼   ► They keep it.

01:03:57 ◼   ► They protect it all for you.

01:03:58 ◼   ► They'll keep it backed up.

01:03:59 ◼   ► You don't have to worry about monthly fees and all these other things and worrying about

01:04:04 ◼   ► your backup things.

01:04:05 ◼   ► You can buy an iPhone, take pictures with it, chuck it into a fire, go to the Apple

01:04:10 ◼   ► store, get a new iPhone.

01:04:11 ◼   ► Whether you have to buy it or not, don't worry.

01:04:12 ◼   ► Your pictures will be there.

01:04:13 ◼   ► Apple does not have that reputation.

01:04:14 ◼   ► Nobody has that reputation now, but the first person to get that reputation, it will be

01:04:18 ◼   ► be worth a lot to people because I think most people are using these devices and using their

01:04:23 ◼   ► computers and stuff, and all their digital memories are completely vulnerable and could

01:04:28 ◼   ► be destroyed at any moment.

01:04:29 ◼   ► And they're just crossing their fingers hoping it doesn't happen.

01:04:31 ◼   ► You know, you're absolutely right.

01:04:33 ◼   ► And I had a friend call me maybe a month or two ago, and he said, "Oh, my wife, I think

01:04:39 ◼   ► we're going to get a new iPhone."

01:04:41 ◼   ► And of course, this was just a month or so ago.

01:04:44 ◼   ► And I said, "Oh my God, no.

01:04:45 ◼   ► Why?

01:04:46 ◼   ► The 5S is coming out soon.

01:04:47 ◼   ► What are you thinking?"

01:04:48 ◼   ► And so he said, "Well, she's out of space."

01:04:51 ◼   ► "It's okay, well, try to take stuff off her phone then."

01:04:54 ◼   ► "Well, she's got so many pictures on there."

01:04:57 ◼   ► "Well, I mean, depending on how many pictures

01:04:59 ◼   ► you're talking about, that may or may not be the problem."

01:05:00 ◼   ► "Well, and she also, she takes a lot of video."

01:05:02 ◼   ► "Oh." - Oh, boy.

01:05:04 ◼   ► - "Oh, goodness."

01:05:05 ◼   ► And so it took talking to both,

01:05:09 ◼   ► well, they're both my friends,

01:05:10 ◼   ► but talking to my friend, the husband who called me

01:05:12 ◼   ► and his wife, it took a while talking to them

01:05:15 ◼   ► and saying, "No, no, no, you've gotta get this stuff

01:05:17 ◼   ► your phone because not only is it not secure on your phone like John is saying, but it's

01:05:21 ◼   ► taking up a crud load of space, especially 1080 video. I mean, 30 seconds of video is

01:05:25 ◼   ► like 8 gazillion gigs. And so you have to get that off your phone. There's no need to

01:05:30 ◼   ► buy a new phone just for that.

01:05:31 ◼   ► And then where are they going to put it? The next question you're going to be is going

01:05:34 ◼   ► to say, "Okay, well, when I take it off my phone, where do I put it?" And it used to

01:05:38 ◼   ► be at least you could assume they had a personal computer, put it onto your personal computer.

01:05:41 ◼   ► But that's just another place where it can die because you put it on your personal computer

01:05:44 ◼   ► and then that person's computer's hard drive is going to die in t-minus two and a half

01:05:47 ◼   ► years. And what's going to happen is you know they're not doing backups, right? And they're

01:05:50 ◼   ► probably not even doing time machine because they didn't want to buy a second hard drive

01:05:53 ◼   ► and hook it up.

01:05:54 ◼   ► Yep.

01:05:55 ◼   ► Ugh. Like, there's no-- you want them to be taken care of. You want to be able to just

01:05:59 ◼   ► tell them, like, you could-- like, you know, what kind of computer should I buy? Get a

01:06:01 ◼   ► Mac, right? You want to be able to say, what should I do about backups? You want to be

01:06:04 ◼   ► able to say something like, are you signed up for iCloud on all your devices? Yes, then

01:06:09 ◼   ► you're fine. But you can't say that. There's nothing you can say to them. You have to have,

01:06:12 ◼   ► have a seven-hour conversation about backup strategies that's going to make their eyes

01:06:15 ◼   ► glaze over. And even at the end of it, you're going to be going back home wondering, "Are

01:06:18 ◼   ► they ever going to do anything that I suggested? Are they going to forget about it? Is their

01:06:21 ◼   ► time machine drive not going to be mounted and they're not going to notice for six months

01:06:24 ◼   ► and they're going to lose all..." We, as technical people trying to support less technical people,

01:06:30 ◼   ► don't have any peace of mind about this. And in reality, we're so close to having... We

01:06:34 ◼   ► have basically the technology and it's just an economic problem and a problem of will.

01:06:40 ◼   ► Google has come the closest with the Chromebook initiative.

01:06:43 ◼   ► That presentation they originally did on the Chromebook, despite the fact that just using

01:06:46 ◼   ► a really expensive but nice-looking laptop that only has a web browser is not appealing

01:06:51 ◼   ► yet to people and is kind of limiting, they had the right idea with like, "Take your Chromebook,

01:06:56 ◼   ► run it over the steamroller.

01:06:57 ◼   ► Don't worry about it.

01:06:58 ◼   ► Get a new Chromebook.

01:06:59 ◼   ► Type in your stuff.

01:07:00 ◼   ► Everything is back.

01:07:01 ◼   ► You didn't lose a thing.

01:07:02 ◼   ► As long as we had time to upload it, you're fine."

01:07:04 ◼   ► Well, but hold on, though.

01:07:06 ◼   ► That's a big problem.

01:07:08 ◼   ► Time to upload.

01:07:09 ◼   ► - Well, I know.

01:07:09 ◼   ► - Yeah, think about that.

01:07:10 ◼   ► That's one of the big problems holding this up right now.

01:07:12 ◼   ► It isn't just about there's no web services

01:07:14 ◼   ► that are highly integrated that are doing all this for you

01:07:16 ◼   ► for low cost or for free.

01:07:18 ◼   ► That isn't the main problem.

01:07:20 ◼   ► The main problem is think about how many people own iPhones

01:07:25 ◼   ► or devices like iPhones who are in a situation

01:07:30 ◼   ► or have a home connection or have data caps

01:07:33 ◼   ► in which uploading things to cloud backup,

01:07:36 ◼   ► uploading photos and videos to cloud backup

01:07:38 ◼   ► on a regular basis is impractical.

01:07:41 ◼   ► You don't have to always upload it.

01:07:42 ◼   ► Think about when we did the transporter spot.

01:07:45 ◼   ► We have the technology to do most of those things.

01:07:47 ◼   ► If you could just say, "Buy a bunch of these things and stick them around your house like

01:07:49 ◼   ► potted plants, and put one in your office and give one to your friend."

01:07:54 ◼   ► If it was just easy enough for you to do it, we're close.

01:07:57 ◼   ► We're really, really close to being economically feasible for someone who can afford an iPhone

01:08:01 ◼   ► to never have any excuse to lose their data.

01:08:03 ◼   ► Even if it's not cloud, cloud would be the third tier.

01:08:06 ◼   ► The second tier is have a computer system that's redundant.

01:08:10 ◼   ► The other tier is have a bunch of little network-attached wireless storage nodes around your house.

01:08:16 ◼   ► It's like a caching hierarchy where on the device is good, and then when you get back

01:08:19 ◼   ► home to your 802.11ac wireless that's super-duper fast that everyone's going to have in five

01:08:26 ◼   ► years or whatever it's going to take for that to start to penetrate, that'll go to your

01:08:29 ◼   ► little transporter-type devices or your time capsule or whatever.

01:08:32 ◼   ► Then the next thing is it'll be uploading to iCloud when you're asleep, and if you have

01:08:36 ◼   ► have your slow connection, it will like, you know, we're almost there. It's just a

01:08:40 ◼   ► matter of like working out a system and then some company committing to it and

01:08:43 ◼   ► saying, "You know what? We're going to be responsible for protecting your data." Not

01:08:46 ◼   ► saying things like, "When you're coming to the Genius Bar, make sure you have a

01:08:49 ◼   ► backup," and knowing everyone's gonna look at that and go, "Yeah, whatever," and then

01:08:53 ◼   ► be pissed when all the data's gone, when their computer gets repaired. Like, I'm

01:08:56 ◼   ► sure it happens all the time to them, and I, like, it's in Apple's interest as like

01:08:59 ◼   ► the premium vendor and the guy who makes the hardware and software, and now they

01:09:02 ◼   ► have web services to get there before someone else does and figure this thing out.

01:09:07 ◼   ► Well, it's more than that too, though, isn't it?

01:09:10 ◼   ► Because say you're on a vacation.

01:09:13 ◼   ► Say when Marco and Tiff and Erin and I were in Germany, what if I took a whole bunch of

01:09:17 ◼   ► pictures on my iPhone because I'm not a photographer and I don't have a fancy-pants camera.

01:09:22 ◼   ► I take a whole bunch of pictures on my iPhone, which at this point are irreplaceable.

01:09:25 ◼   ► I may or may not have had access to any network connection, but particularly Wi-Fi.

01:09:32 ◼   ► And all of a sudden now all those pictures are gone because Marco ran over my phone with

01:09:37 ◼   ► his M5.

01:09:38 ◼   ► But you have access to each other.

01:09:39 ◼   ► So you should be able to, if a family—this gets into the whole thing about families—if

01:09:42 ◼   ► you guys all go on a trip together, you should be able to enter into an arrangement whereby

01:09:46 ◼   ► all of your own things are transferred among yourself in the little circle of the ad hoc

01:09:50 ◼   ► network that is your people there.

01:09:52 ◼   ► So if you drop your phone, "Oh, don't worry.

01:09:54 ◼   ► I've got all your pictures.

01:09:55 ◼   ► They got pulled down onto my MacBook Air," or some percentage of them.

01:10:01 ◼   ► The technology is there for all these things to work.

01:10:03 ◼   ► It's just a question of working out the interface and the decision to do it.

01:10:06 ◼   ► It shouldn't be like that your device is Little Island and that you guys could go on a week-long

01:10:12 ◼   ► vacation with no internet access and as soon as you drop your phone, all those pictures

01:10:15 ◼   ► are gone.

01:10:17 ◼   ► We should be able to stop that from happening in some way.

01:10:20 ◼   ► Yeah, I don't know.

01:10:23 ◼   ► There's always this balance between ease of use for regular people and getting around

01:10:30 ◼   ► all these edge cases.

01:10:31 ◼   ► So the ways to get around all these edge cases usually involve local hardware, where you

01:10:38 ◼   ► have either a time machine disk or a time capsule.

01:10:41 ◼   ► And by the way, why don't iPhones back up to time capsules?

01:10:43 ◼   ► But OK, that's a separate question.

01:10:46 ◼   ► So you have things like that to avoid the whole bandwidth and data cap issue.

01:10:52 ◼   ► But those things are all things that regular people are often going to either not think

01:10:57 ◼   ► they need and therefore not buy because it's expensive or they're not going to do it right

01:11:02 ◼   ► in the way that like I'm sure everyone listening to the show has at some point had a friend

01:11:08 ◼   ► or relative say, "Oh, well, I lost files. My hard drive, can you help me get them back?"

01:11:13 ◼   ► And you say, "Oh, okay, yeah. Did you have a backup?" And they say, "Yes." And you go

01:11:16 ◼   ► over to their house and they're here. All my files were on my backup drive. You get

01:11:24 ◼   ► it, yeah, it's sinking in. You know these people?

01:11:28 ◼   ► Where they buy an external hard drive, because the laptop drive is too small,

01:11:32 ◼   ► so they buy an external hard drive, and that just becomes the place where they put all their files.

01:11:36 ◼   ► And they think it's a backup drive, because it's an external hard drive. And they call

01:11:40 ◼   ► it a backup, and they think of it as a backup, but it's just one hard drive with their files on it.

01:11:44 ◼   ► I just, I tuned out as soon as you said you had friends

01:11:48 ◼   ► that had backups that are normal people. Yeah, no one ever has backups.

01:11:52 ◼   ► - People call external drives backup drives.

01:11:55 ◼   ► - Well now I'm with you, but I was still trying

01:11:57 ◼   ► to process the thought of a regular person,

01:11:59 ◼   ► not a nerd, saying yes, I do have a backup.

01:12:01 ◼   ► - Anyway, so you have those people,

01:12:03 ◼   ► or you have the people who,

01:12:06 ◼   ► if you try to make it work for all these edge cases,

01:12:09 ◼   ► 'cause the other problem is that these modern devices,

01:12:11 ◼   ► the cameras keep getting better,

01:12:13 ◼   ► so you have these devices that you mentioned with the video.

01:12:16 ◼   ► You can't just tell a regular person,

01:12:17 ◼   ► oh, well all your photos will be backed up

01:12:19 ◼   ► in low resolution for a little while,

01:12:21 ◼   ► but your videos mostly won't be

01:12:23 ◼   ► because they're 400 megs each and that's impractical.

01:12:27 ◼   ► So you get around that stuff by having local stuff

01:12:29 ◼   ► that avoids the network.

01:12:30 ◼   ► Once you involve the network though,

01:12:32 ◼   ► it can be easy and automatic for everyone.

01:12:34 ◼   ► So you either have local stuff that is expensive

01:12:38 ◼   ► and can be easily misconfigured or screwed up

01:12:41 ◼   ► that can back up everything or internet-based stuff

01:12:46 ◼   ► that can be automatic and foolproof

01:12:49 ◼   ► but you have that problem of bandwidth and data caps,

01:12:52 ◼   ► and therefore usually can't back up everything.

01:12:55 ◼   ► - Well, like I said, we're so close.

01:12:57 ◼   ► It's kind of like when we just barely got the technology

01:13:00 ◼   ► to do digital distribution of audio,

01:13:02 ◼   ► because MP3 came out,

01:13:03 ◼   ► but we still couldn't really do movies or TV, right?

01:13:05 ◼   ► And even today, audio is like, no problem.

01:13:08 ◼   ► We throw around songs, they're tiny files,

01:13:11 ◼   ► they're easy to go.

01:13:12 ◼   ► The bandwidth and the memory capacity and computing,

01:13:15 ◼   ► everything totally went past audio.

01:13:17 ◼   ► but for video, we're like, you can buy TV shows,

01:13:21 ◼   ► but we can't really store them all,

01:13:22 ◼   ► and we can't really have a big hard drive,

01:13:25 ◼   ► so some of them will stream, and we can kinda stream 1080p,

01:13:27 ◼   ► but it doesn't look like we're just on the edge

01:13:29 ◼   ► of being able to handle video,

01:13:31 ◼   ► and for things like video you record yourself in 1080p,

01:13:33 ◼   ► that's probably outside the realm of what we can handle,

01:13:35 ◼   ► but we're right on the cusp,

01:13:37 ◼   ► and I think it's okay to start with,

01:13:39 ◼   ► we can only do songs, but only crazy people

01:13:42 ◼   ► are downloading videos on the internet,

01:13:43 ◼   ► like back in the Napster days, right?

01:13:45 ◼   ► just doing it for songs is a big win, and it lets you sort of work out the kinks of

01:13:51 ◼   ► how things go, so that eventually, 10, 15 years later, when feature-length movies start

01:13:57 ◼   ► to become possible, TV is like, "Oh, well, we kind of already worked this stuff out with

01:14:00 ◼   ► the iTunes Music Store," and it's like a natural extrapolation to do movies.

01:14:06 ◼   ► For backups, we should have been traveling the same road, but haven't been. It needs

01:14:10 ◼   ► to be ambient, like Wi-Fi. Wi-Fi, wireless networking with a technology that nobody could

01:14:14 ◼   ► and now everybody can use it.

01:14:16 ◼   ► And how do we go from something that nobody uses to something that's like,

01:14:19 ◼   ► "Oh, just every coffee shop has Wi-Fi, everyone has Wi-Fi."

01:14:22 ◼   ► How do you get on the Wi-Fi?

01:14:24 ◼   ► If you told somebody back in the early days of computer networking

01:14:26 ◼   ► that regular people were going to be able to walk into a building

01:14:30 ◼   ► and get on the network, they'd be like, "You can't get on the network.

01:14:32 ◼   ► You need a network administrator to help them,

01:14:34 ◼   ► and they're going to configure the network stack on their operating system?

01:14:37 ◼   ► No, they're not going to do that."

01:14:39 ◼   ► You work it out until you get to a system that people can use.

01:14:43 ◼   ► There's an investment in deep technology that Apple is not really doing, Google is

01:14:50 ◼   ► kind of doing, that makes that possible.

01:14:53 ◼   ► It's not like one company came up with this wireless network and a spread everywhere.

01:14:56 ◼   ► Wi-Fi and those Wi-Fi standards, that is deep, deep technology that you can't just like,

01:15:00 ◼   ► "Well, we sort of came up with something in six months and I think this is how we're

01:15:04 ◼   ► going to do wireless networking."

01:15:06 ◼   ► You have to have really smart people think about it for a long time and go through a

01:15:09 ◼   ► process and get hardware vendors on board and revise, revise, revise over and over again.

01:15:15 ◼   ► And then finally, eventually, 10, 15, 20 years later, you reach the promised land.

01:15:20 ◼   ► You can't just say, "Well, we're going to do backups and we'll have some device out

01:15:24 ◼   ► there and it will copy stuff and it'll make this photo stream service and we'll have iPhoto

01:15:28 ◼   ► upload to it so we'll have the iPhoto team work on it."

01:15:30 ◼   ► You've got to think of it as the overall problem and say, "We need some sort of tiered storage

01:15:37 ◼   ► architecture that works on any device, and we're going to take the next five years to

01:15:41 ◼   ► develop this architecture, and we're going to start small, and it's going to be like

01:15:44 ◼   ► peer-to-peer between our devices, and it's also going to be pushing things up to the

01:15:48 ◼   ► highest level they can get, and encrypted and shared, and maybe we'll have a new file

01:15:52 ◼   ► system of some kind mixed in there so you can send efficient block diffs between—I

01:15:57 ◼   ► don't even want to talk about it. But that kind of deep core technology, you've got

01:16:03 ◼   ► to work on that for years before you get any bang out of it. If you don't work on it,

01:16:07 ◼   ► All you're going to have is these half-assed solutions that, like Marco said, you end up

01:16:09 ◼   ► having edge cases that you think no one's going to be able to handle.

01:16:13 ◼   ► You can't just sit around waiting magically for us to have gigabit upload bandwidth from

01:16:17 ◼   ► everywhere into a magic cloud that, you know, I guess maybe that will come eventually.

01:16:22 ◼   ► But we're close enough now, like photos, I think, is the thing, you could handle people's

01:16:26 ◼   ► photos.

01:16:27 ◼   ► Maybe you can't handle their videos.

01:16:28 ◼   ► Maybe their videos are still screwed on because they're just too darn big and the ability

01:16:31 ◼   ► to record video outpaced our other stuff.

01:16:34 ◼   ► But I think Apple and everybody else are dropping the ball on this, and we really need a solution.

01:16:39 ◼   ► With the hardware that's here, this stuff could work.

01:16:42 ◼   ► We just don't have the software to do it, and that's a failure of the software guys,

01:16:46 ◼   ► I think.

01:16:47 ◼   ► Well, I also wonder if we don't have the impetus to do it.

01:16:50 ◼   ► What I mean by that is I almost feel like we need computer hardware, specifically mass

01:16:57 ◼   ► storage, to be less reliable in order to force regular people to care enough to demand these

01:17:03 ◼   ► things. Yeah, like that's work for Google, because they had so many servers that you

01:17:07 ◼   ► just have to build expecting them to fail, and that's not the case with individual hardware.

01:17:11 ◼   ► Right, and it's like the argument that the only way we'll get more efficient cars is to make gas

01:17:16 ◼   ► four times more expensive than it is. It's a similar thing where if hard drives failed

01:17:21 ◼   ► constantly, then people would know, "I'm going to need four copies of these pictures, because I know

01:17:27 ◼   ► one or two of the four are going to die in the next six months." Yeah, we need personal chaos

01:17:31 ◼   ► monkeys. You know about the chaos monkey? Yeah, Netflix, right?

01:17:33 ◼   ► Yep, yep. Love that.

01:17:36 ◼   ► Every company should have a chaos monkey. And I'm not sure if it's like, Netflix still

01:17:39 ◼   ► does it, or it was a one-time thing, or it was a PR stunt, or they really have a thing

01:17:42 ◼   ► like that. But for people who don't know, the chaos monkey is, within Netflix, the idea

01:17:46 ◼   ► that they have something intentionally going around screwing up their systems to test that

01:17:51 ◼   ► their redundancies work. So they don't wait for things to fail. They have an active program

01:17:55 ◼   ► or series of programs that go around and break stuff in their own data centers to prove to

01:18:00 ◼   ► themselves that, "Okay, if this type of machine goes down, we're okay. If three of

01:18:05 ◼   ► these go down, we're okay. If this switch dies, we're okay." And they're doing it

01:18:08 ◼   ► to themselves intentionally all the time to sort of build up their immune system.

01:18:12 ◼   ► So if you had a person who came into your house at night and smashed one of your devices

01:18:16 ◼   ► or randomly erased one of your hard drives, and the guy came once every two months, you

01:18:22 ◼   ► would very quickly figure out some way. Either you would figure out some way to develop a

01:18:25 ◼   ► system or you would demand from all your vendors, "Look, Apple, the chaos monkeys

01:18:30 ◼   ► coming to my house every night and destroying things. You guys have got to come up with

01:18:32 ◼   ► a better system to protect my data because I'm losing all the pictures of my baby."

01:18:36 ◼   ► And that's where it's got to come from. It's got to come from the consumers. Well, that's

01:18:41 ◼   ► what leadership is, I guess. It shouldn't have to come from the consumers. Apple should

01:18:44 ◼   ► be leading here. They're in a position to do this type of thing. They should be thinking

01:18:48 ◼   ► about it and doing it instead of being the putzes that they are that still make it impossible

01:18:52 ◼   ► for one family to share a single iPhoto library like sane people want to do. But they're not.

01:18:58 ◼   ► And yeah, so if it came from the other direction, that would really help as well.

01:19:02 ◼   ► But as things stand, if you're hard-wired guys every three years, human memory is such

01:19:05 ◼   ► that you'll be like, "No, I think I might have had those on optical to somewhere," or

01:19:08 ◼   ► you just give up and like, "Well, I think I posted most of those to Facebook, and I'll

01:19:12 ◼   ► never look at them again."

01:19:13 ◼   ► I don't know what's going to happen when all these people are like 80 years old, 50 years

01:19:17 ◼   ► from now, and they want to see the picture of when their kid was one year old.

01:19:20 ◼   ► Will they have them anymore?

01:19:21 ◼   ► Because they won't have the physical photo albums that our parents did, right?

01:19:24 ◼   ► Like, "We'll go to our parents' house.

01:19:26 ◼   ► We can look at those books."

01:19:27 ◼   ► That's a really good point, though. You're right. I've heard from a lot of people who

01:19:32 ◼   ► have lost phones or whatever. They say, "Oh, well, we still have the ones that we posted

01:19:37 ◼   ► to Facebook." That's a very, very common reaction and kind of mental insurance policy

01:19:44 ◼   ► for a lot of people. I wonder what happens 20 years from now when Facebook shuts down.

01:19:50 ◼   ► Oh, absolutely.

01:19:51 ◼   ► Or you have them on Facebook, but they're terrible quality because they're recompressed,

01:19:55 ◼   ► tiny.

01:19:56 ◼   ► And good luck finding them 30 years from now if you go back 30 years in time.

01:20:01 ◼   ► I think I tweeted that 30 years ago.

01:20:03 ◼   ► Yeah, right?

01:20:04 ◼   ► Well, the thing that stuns me is I'll have people, friends, relatives, acquaintances

01:20:10 ◼   ► that will have catastrophic data loss, bad, bad data loss.

01:20:16 ◼   ► And you know what they do differently after that happens?

01:20:19 ◼   ► Not a thing.

01:20:20 ◼   ► Because what can they do?

01:20:22 ◼   ► What is their recourse?

01:20:23 ◼   ► Like they're already buying like the best, quote unquote.

01:20:26 ◼   ► They're buying Apple stuff and they were using them in like the way they see them used in

01:20:31 ◼   ► Apple commercials and they still lost all their data.

01:20:33 ◼   ► So like they don't have the tools to fix that.

01:20:36 ◼   ► They shouldn't have to fix it.

01:20:37 ◼   ► That's what I'm saying.

01:20:38 ◼   ► Like Apple should be providing a way to make it as easy for them to have their data protected

01:20:43 ◼   ► as it is for them to take their phone and do a coffee shop and get on the network.

01:20:47 ◼   ► And I completely agree.

01:20:48 ◼   ► But I guess what I'm driving at is it seems like the moment data loss happens, your average

01:20:52 ◼   ► consumer says, "Eh, I guess that's gone now," and that's that, and there's no more discussion.

01:20:58 ◼   ► And it's like a natural disaster. It's like, "Well, what can you do? There's an earthquake.

01:21:01 ◼   ► What can you do to prevent earthquakes?" To regular people, technology is basically just

01:21:05 ◼   ► like the weather. Well, you can complain about it, but at a certain point, you're like, "Well,

01:21:09 ◼   ► obviously, this is unchangeable law of the universe that we're going to lose data."

01:21:12 ◼   ► Right. Well, because most people who are adults today have grown up having all sorts of computer

01:21:17 ◼   ► failures. And most people don't use Macs, and even people who do use Macs still have

01:21:23 ◼   ► failures. They just have maybe fewer of them or different ones.

01:21:26 ◼   ► But most people have grown up using some kind of crappy computers with crappy software,

01:21:31 ◼   ► and where things were very constrained and expensive and unreliable. And so almost everyone

01:21:38 ◼   ► who's an adult today has at some point had a computer that had to be wiped, or that had

01:21:43 ◼   ► a hard drive fail or something, somehow the computer was forced to be wiped and started

01:21:47 ◼   ► over.

01:21:48 ◼   ► So to them, it's like they're in an abusive relationship with technology where they're

01:21:53 ◼   ► just like, "Well, yeah, okay.

01:21:55 ◼   ► I guess that's just what happens with computers.

01:21:58 ◼   ► Too bad."

01:21:59 ◼   ► They don't know that it doesn't have to be that way.

01:22:03 ◼   ► Yeah, and I don't quite understand why, again, Apple of all companies hasn't jumped

01:22:10 ◼   ► on this more because they're all about figuring out what real people's problem are. That's

01:22:16 ◼   ► why iOS and the iPad and stuff are so successful because they had the vision of like, people

01:22:20 ◼   ► hate that crap about installing and uninstalling stuff. People hate trying to find software

01:22:24 ◼   ► by doing a Google search and stuff. We just had one store and you tap a button and a little

01:22:28 ◼   ► icon appears. If you don't like it, you put the little X in, it goes away. That's what

01:22:33 ◼   ► people want. They did that. They did that great. Everything about the iPad is so much

01:22:37 ◼   ► better than the Mac in terms of throwing it in front of someone who's not a technical

01:22:40 ◼   ► person saying, "Here, go nuts." They can browse the web, they can send email, they can play

01:22:44 ◼   ► games, it's fun, it's exciting, and they even lower the price. It's cheaper than a Mac.

01:22:49 ◼   ► But this whole thing about keeping your data, they still have all those commercials about,

01:22:52 ◼   ► "Oh, look how beautiful it is when you take a picture of your children and all these memories

01:22:56 ◼   ► and you're having these happy times and laughing with your friends and making videos and all

01:23:00 ◼   ► that stuff is going to be gone and start the clock," because they're not doing anything

01:23:04 ◼   ► to help you protect it long term. Maybe they think you're not supposed to protect it.

01:23:08 ◼   ► Maybe you're just supposed to enjoy it in the moment, look at it, and then let it disappear

01:23:12 ◼   ► when you buy a new phone or you drop it in the ocean. But they don't mention that in

01:23:15 ◼   ► the commercial. They don't show that experience. Like, "Remember that time we went to Paris?

01:23:19 ◼   ► Let's look at those pictures. Oh, that was three phones ago. I don't have those anymore."

01:23:25 ◼   ► We're running long. Should we be good?

01:23:27 ◼   ► One more thing. Is this really the kind of thing you'd think Apple would tackle? I mean,

01:23:31 ◼   ► This is like a big web service, big data backend.

01:23:34 ◼   ► Maybe that's why they haven't been good at it.

01:23:36 ◼   ► But I'm saying they're good at looking beyond the way things

01:23:40 ◼   ► are done now to do-- like Casey said, the five whys,

01:23:43 ◼   ► and get all the way down to the root root problem.

01:23:45 ◼   ► People don't want to deal with any of this stuff.

01:23:47 ◼   ► Let's just solve their actual problem.

01:23:49 ◼   ► Their actual problem is I want to browse the web.

01:23:51 ◼   ► I want to send email.

01:23:52 ◼   ► And the iPad can let them do that

01:23:53 ◼   ► without all sorts of complications and concepts

01:23:56 ◼   ► that existed on the Mac that complicated that.

01:23:58 ◼   ► They're good at cutting through that stuff.

01:24:00 ◼   ► And so this is another case where, well, backup is difficult, and we have all these problems,

01:24:06 ◼   ► and how are we going to pay for this, and where are we going to store it, and maybe

01:24:09 ◼   ► people don't have upload bandwidth, and they have caps or whatever.

01:24:13 ◼   ► Like a time machine was a good step in that direction, but that's a last century step,

01:24:17 ◼   ► even though time machine wasn't the last century.

01:24:21 ◼   ► Apple is the kind of company who has the margins and the control over hardware and solver,

01:24:25 ◼   ► and also usually the vision to not worry about the technical details and just figure out

01:24:30 ◼   ► what people want and make it happen. That's why, I think.

01:24:33 ◼   ► Yeah, but you're forgetting that so much of this hypothetically relies on really strong

01:24:37 ◼   ► internet services, which we've all discussed ad nauseam, that is not Apple's thing.

01:24:41 ◼   ► I know, but they haven't really even attempted it. It also depends on deep technology and

01:24:47 ◼   ► core standards and building infrastructure, which Apple's also not good at, especially

01:24:52 ◼   ► when it comes to data storage. So yes, this is in many of Apple's blind spots. But I feel

01:24:57 ◼   ► I feel like I would have rather seen them three years ago come out with Apple's new

01:25:02 ◼   ► cloud file system. It's everywhere at once, and it would be a terrible product and not

01:25:06 ◼   ► work, but at least they had the right idea of, "We are going to completely abstract

01:25:11 ◼   ► storage on all levels and do this crazy multi-hierarchy thing," and understand it as a core OS feature,

01:25:16 ◼   ► not as a GUI feature of a major version of iOS or OS X. It has to be a feature like the

01:25:23 ◼   ► kernel or the file system. It has to be at that level or at the web service level. And

01:25:27 ◼   ► I haven't even attempted that.

01:25:28 ◼   ► They haven't made any run at it.

01:25:29 ◼   ► Like, PhotoStream is the closest they've come,

01:25:31 ◼   ► and that's like one little appendage hanging off

01:25:33 ◼   ► a couple of applications on iOS and the Mac

01:25:36 ◼   ► that's kind of weird, and you could only recently

01:25:38 ◼   ► delete things from it, and no one understands how it works,

01:25:40 ◼   ► and it's not clear to people what the mental model is,

01:25:42 ◼   ► and it sure as hell doesn't apply to anything

01:25:43 ◼   ► except for the photos that you manage

01:25:45 ◼   ► from those particular applications.

01:25:47 ◼   ► They're not even going for the big solution and failing.

01:25:50 ◼   ► Maybe they know their limitations,

01:25:52 ◼   ► and they're just like, we have to nibble about this

01:25:53 ◼   ► from the edges.

01:25:55 ◼   ► I don't know.

01:25:56 ◼   ► I still don't know what PhotoStream backs up and what it doesn't back up.

01:26:01 ◼   ► Just assume it backs up nothing.

01:26:03 ◼   ► That's what technical people do.

01:26:04 ◼   ► I remember for six months, PhotoStream just showed me black rectangles in iPhoto.

01:26:10 ◼   ► They were my photos because they were the right number, and I could tell from the orientations

01:26:13 ◼   ► that they should have been my photos, but they were just completely black.

01:26:15 ◼   ► I'm like, "Well, I'm not going to trust that."

01:26:18 ◼   ► Do you have the full resolution copies in PhotoStream, or does it have smaller resolutions?

01:26:22 ◼   ► I don't even want to think about it.

01:26:23 ◼   ► It's so confusing.

01:26:24 ◼   ► Alright, let's wrap it up.

01:26:27 ◼   ► Now I think we're done.

01:26:28 ◼   ► Thanks a lot to our two sponsors this week, Warby Parker and Igloo Software.

01:26:32 ◼   ► And we'll see you next week.

01:26:33 ◼   ► [music]

01:26:34 ◼   ► Now the show is over, they didn't even mean to begin, 'cause it was accidental.

01:26:42 ◼   ► Oh, it was accidental.

01:26:44 ◼   ► John didn't do any research, Marco and Casey wouldn't let him, 'cause it was accidental.

01:26:53 ◼   ► It was accidental.

01:26:57 ◼   ► And you can find the show notes at ATP.fm.

01:27:01 ◼   ► And if you're into Twitter, you can follow them at

01:27:07 ◼   ► C-A-S-E-Y-L-I-S-S

01:27:11 ◼   ► So that's Kasey Liss M-A-R-C-O-A-R-M

01:27:15 ◼   ► Auntie Marco Arment S-I-R-A-C

01:27:20 ◼   ► USA, Syracuse, it's accidental They didn't mean to, accidental

01:27:31 ◼   ► Tech podcast so long

01:27:36 ◼   ► Did you see this link someone posted? I'll put it again in the...

01:27:40 ◼   ► I have so many mavericks things to talk about but I'll just wait, just write it

01:27:45 ◼   ► Ivericks? What is this?

01:27:47 ◼   ► scroll down. What do you think? So, for people who are actually listening to this, it's the

01:27:53 ◼   ► Stu Does Design, which looks like Studio Design, but it's not. It's Stu Does Design OS X Iverix

01:27:59 ◼   ► concept and it's basically an iOS 7 style redesign of Mac OS X. Yeah. This whole site

01:28:06 ◼   ► should have a big banner on top that says, "Not this year." Yeah. I actually don't think

01:28:11 ◼   ► it's terrible, though I feel like the menu bar is totally out of place given the rest

01:28:16 ◼   ► to the screen.

01:28:17 ◼   ► Oh, Ivarix.

01:28:18 ◼   ► Ah, thank you, Sam the Geek.

01:28:21 ◼   ► Oh, I wasn't looking at the screen.

01:28:23 ◼   ► That makes more sense for, you know, Johnny Ive.

01:28:25 ◼   ► Ha ha.

01:28:26 ◼   ► Yeah, I mean, there are parts about this I don't like, but overall I think it looks fine.

01:28:31 ◼   ► Do you think Apple will go in an iOS 7-like direction with—

01:28:34 ◼   ► I don't see why the Mac has to look anything like iOS.

01:28:37 ◼   ► I can see it being redesigned, but I don't see any reason that it has to look anything

01:28:41 ◼   ► like iOS.

01:28:42 ◼   ► Did the Mac's buttons ever look like iOS's buttons?

01:28:46 ◼   ► Maybe they came close at a certain point,

01:28:48 ◼   ► but they weren't recessed like the iOS 6 buttons were

01:28:52 ◼   ► with a little shadow on top of them.

01:28:53 ◼   ► They were on top.

01:28:55 ◼   ► - I mean, I would say that OS X never really looked

01:28:57 ◼   ► that much like iOS and vice versa.

01:28:59 ◼   ► - Yeah, I mean, you can redesign something.

01:29:01 ◼   ► You don't have to redesign it to look exactly

01:29:02 ◼   ► like your other thing.

01:29:03 ◼   ► It can just be a fresh redesign.

01:29:05 ◼   ► - But familiarity is never a bad thing,

01:29:08 ◼   ► especially in UI design.

01:29:09 ◼   ► - Yeah, that's true.

01:29:10 ◼   ► I have a whole section in my review about that topic.

01:29:14 ◼   ► - But you don't need, you know,

01:29:16 ◼   ► John Gruber wrote a nice big thing about this

01:29:17 ◼   ► right before the iOS 7 unveiling of the keynote.

01:29:21 ◼   ► It was like the night before,

01:29:22 ◼   ► two days before, something like that,

01:29:23 ◼   ► about how people are trained

01:29:27 ◼   ► on how to use interfaces these days,

01:29:29 ◼   ► and you don't really need something to look

01:29:31 ◼   ► exactly like a button for people to figure out

01:29:34 ◼   ► that it's a button, stuff like that.

01:29:35 ◼   ► And something like this, you don't need OS X

01:29:39 ◼   ► to have the same visual style as iOS for people

01:29:42 ◼   ► who don't know how to use it.

01:29:44 ◼   ► Just give it similar behavior.

01:29:46 ◼   ► Like, oh, there are things you can click

01:29:48 ◼   ► on that behave like buttons.

01:29:50 ◼   ► There are labels.

01:29:50 ◼   ► There are lists and structures and other ways to present data

01:29:55 ◼   ► and to deal with it.

01:29:57 ◼   ► You don't need it to look exactly the same.

01:29:59 ◼   ► It can have its own totally different visual theme,

01:30:01 ◼   ► and people will figure it out.

01:30:03 ◼   ► I mean, look at how many people use Hot Dog Stand in Windows 3.1

01:30:05 ◼   ► and still figure out how to use it.

01:30:08 ◼   ► That said, though, a straight up, exactly iOS 7 style

01:30:11 ◼   ► redesign of the OS X GUI, I think it would work fine.

01:30:16 ◼   ► Because the iOS 7 style, there's not much to it.

01:30:21 ◼   ► Look at the notification thing, where

01:30:23 ◼   ► it's showing a notification dialogue.

01:30:24 ◼   ► You're like, yep, notification dialogue.

01:30:26 ◼   ► It's got buttons.

01:30:27 ◼   ► The iOS 7 can see that the buttons go edge to edge instead

01:30:30 ◼   ► of being inset.

01:30:32 ◼   ► But you can still tell they're buttons.

01:30:34 ◼   ► It's fine.

01:30:36 ◼   ► The window controls being the little outline circles instead of the other things.

01:30:39 ◼   ► I mean, they're a little close together, but there's details.

01:30:42 ◼   ► Nobody knows what those do anyway.

01:30:44 ◼   ► It doesn't look crazy.

01:30:46 ◼   ► It looks reasonable.

01:30:47 ◼   ► No, it doesn't look bad.

01:30:48 ◼   ► But I'm not saying, "Oh, I don't look at it and say, 'Oh, man, I can't wait for the

01:30:52 ◼   ► Mac to look at that.'"

01:30:53 ◼   ► I would like any kind of cool-looking Mac redesign, but it doesn't have to be this.

01:30:57 ◼   ► All right.

01:30:58 ◼   ► So even though it's only been two days, how's the review?

01:31:02 ◼   ► I wish the OS would work better so that I could review it.

01:31:07 ◼   ► That is the review.

01:31:08 ◼   ► That's the review.

01:31:10 ◼   ► I don't know what their schedule is like because they're putting out builds and things

01:31:14 ◼   ► don't work.

01:31:15 ◼   ► How can I write about them if they don't work?

01:31:18 ◼   ► I'll try to use the iOS Beta 5.

01:31:22 ◼   ► Every time you touch something, any touch interaction running one of your own apps,

01:31:28 ◼   ► it logs a debug message to the console that they left turned on.

01:31:32 ◼   ► Yeah, I saw a chalk solution. Just increase the program counter.

01:31:36 ◼   ► Yeah, the solution was to patch over fprintf.

01:31:40 ◼   ► It's like, obviously they're shipping these betas out on some kind of

01:31:44 ◼   ► minimal testing, or at least less testing schedule

01:31:48 ◼   ► where like, you know, they're...

01:31:52 ◼   ► If they ship that out, leaving this extremely common

01:31:56 ◼   ► debug print statement in there that's annoying every single iOS developer this week.

01:32:01 ◼   ► Obviously, what else are they leaving in there in these data builds?

01:32:04 ◼   ► I think I told the story in Hypercritical once, but I had a Cisco VPN client downloaded

01:32:08 ◼   ► from the official Cisco website, not a beta, not anything like that, on OS X that would

01:32:13 ◼   ► log a base64 dump of the data it sends and receives.

01:32:18 ◼   ► All the data it sends and receives.

01:32:20 ◼   ► And so I installed it, and I'm on the VPN, I'm doing things, and I hear my hard drive

01:32:24 ◼   ► drive going tick, tick, tick, tick, tick.

01:32:26 ◼   ► And I look in the console log, I'm like, this is before tons of memory and before syslog

01:32:32 ◼   ► had changed to this database format anyway.

01:32:35 ◼   ► And there it was, there was all the data.

01:32:36 ◼   ► So it's like, well, when I'm connected to the VPN, it is going to just abuse my hard

01:32:40 ◼   ► drive a tick at a time by writing out little bits of data that eventually gets flushed

01:32:43 ◼   ► to disk.

01:32:44 ◼   ► Yeah.

01:32:45 ◼   ► That's awful.

01:32:46 ◼   ► That's things people will ship, who knows.

01:32:48 ◼   ► But you know, for Mavericks, I wanted to write about iBooks yesterday and today.

01:32:53 ◼   ► But it is not in a state where I can use it to do things to write about.

01:32:59 ◼   ► Today I spend a long time trying to purchase a book.

01:33:02 ◼   ► It's just buggy.

01:33:04 ◼   ► This is the very first.

01:33:07 ◼   ► So now I'm in this annoying, uncomfortable state where I'm—and I'm terrified to

01:33:11 ◼   ► make screenshots of anything because, you know, should I go nuts making screenshots

01:33:16 ◼   ► of everything now and then have to redo them all, or should I just wait until the very

01:33:20 ◼   ► last minute and just do them in a scramble?

01:33:22 ◼   ► I hate this time. I'm going to say I'm like 70% done with the writing, which is not 70% done with

01:33:29 ◼   ► the production of this thing. Naturally. Can we make the opening soundbite? I spent a lot

01:33:33 ◼   ► of time trying to buy a book. Yeah. Just that. It was not good.

01:33:38 ◼   ► Now I have a very important question. Was Tiff listening live in another room and came running

01:33:44 ◼   ► in at the 11th hour, or was she actually hearing only one side of the conversation in the office

01:33:49 ◼   ► for the hour we spent before the Warby Parker spot.

01:33:53 ◼   ► - Neither of those.

01:33:54 ◼   ► When I knew the spot was coming up,

01:33:56 ◼   ► I sent her a iMessage saying, "Come in now."

01:34:00 ◼   ► I told her to expect it about 25 minutes in.

01:34:02 ◼   ► - How'd that work out?

01:34:03 ◼   ► - It was about 30 minutes in, so that was pretty good.

01:34:05 ◼   ► - I thought it was a lot more than that.

01:34:06 ◼   ► - No, no, it was like 30, 35, something like that.

01:34:08 ◼   ► So I sent her a message saying, "Hey, come on in now."

01:34:11 ◼   ► And a minute later, she was here,

01:34:13 ◼   ► so she watched me listen to John for about 45 seconds.

01:34:18 ◼   ► And then I passed it over to her. It was pretty easy.

01:34:22 ◼   ► Then that was all she could take.

01:34:25 ◼   ► Not true. Oh man, I've seen not a lot of feedback about the last episode since it's only been

01:34:30 ◼   ► out for a few hours, but everyone has said, "Oh my god, Syracuse Rant, I want it in my

01:34:34 ◼   ► ears immediately."

01:34:35 ◼   ► See, that was like my mellow. I had mellowed. That was not ranty. That was like...

01:34:39 ◼   ► It wasn't?

01:34:40 ◼   ► It was moderate rant.

01:34:41 ◼   ► Yeah, it was like a wistfully looking back on a bad experience.

01:34:46 ◼   ► Wow. What's Ranti like?

01:34:49 ◼   ► Ranti is when I talk about TiVo or file systems problem.

01:34:53 ◼   ► It was a good edge cases show. They did a whole show on file systems.

01:34:57 ◼   ► I haven't heard that yet. Everyone was mentioning you and

01:35:00 ◼   ► linking to it and stuff. Yeah. It covered a lot of the same ground but then went forward

01:35:04 ◼   ► more past what I had talked about when I talked about hypercritical

01:35:08 ◼   ► because more things have transpired although not much in the Apple world.

01:35:11 ◼   ► What else is going on? Anything? I don't know. We recorded the last episode

01:35:15 ◼   ► two days ago, so nothing's different now. I know, yeah, it's true. Except somebody's

01:35:20 ◼   ► going on vacation all next week. I don't know who, yeah, John! No, not me, I'm all done.

01:35:27 ◼   ► Back to the grind. Yeah, so Erin doesn't know where we're going tomorrow. She knows we're

01:35:32 ◼   ► going but she doesn't know where. We'll see how this works out. It should be fun, but

01:35:36 ◼   ► we'll see how this works out. I'm a little scared. She's extremely easygoing so it should

01:35:39 ◼   ► be fine, but I'm a little scared. I'm gonna get you guys back by not being here the entire

01:35:45 ◼   ► What are you going to be doing? You have no job. You have nothing to do.

01:35:52 ◼   ► Almost every weekend in September or October, I'm doing something. It's crazy. Those

01:35:57 ◼   ► months are insanely booked for me.

01:35:58 ◼   ► I'm going to record on Wednesdays. It's fine.

01:36:00 ◼   ► I see. No problem.

01:36:02 ◼   ► The funny thing is I think I'm only going to miss one Wednesday. It's going to be

01:36:07 ◼   ► the easiest vacation schedule for this show ever. Although it might be a problem if I'm

01:36:11 ◼   ► I'm trying to actually ship my app around that time,

01:36:13 ◼   ► which I'm almost definitely not going to.

01:36:15 ◼   ► - So you don't think you're gonna be there on day one?

01:36:18 ◼   ► - I would give that like a 20% chance at this point,

01:36:21 ◼   ► maybe even less.

01:36:22 ◼   ► The more I do with it, the more I want to do with it,

01:36:26 ◼   ► and I know I'm gonna obviously have that problem

01:36:28 ◼   ► of taking forever and never shipping version one,

01:36:32 ◼   ► but the bigger thing is I'm way behind

01:36:34 ◼   ► on even getting the basics done.

01:36:35 ◼   ► And some of it's going faster than I expected,

01:36:37 ◼   ► some of it's going slower than I expected.

01:36:40 ◼   ► I'm still too far out to say whether I will be able

01:36:45 ◼   ► to get out there for day one,

01:36:47 ◼   ► whether it's even gonna be possible.

01:36:49 ◼   ► But I'm guessing looking at it now it's not.

01:36:51 ◼   ► 'Cause what if day one is late September?

01:36:56 ◼   ► That's what, six weeks away?

01:36:59 ◼   ► I mean, it's pretty close, you know?

01:37:02 ◼   ► Like, there's, and I still,

01:37:04 ◼   ► I'm still working on the naming issue.

01:37:07 ◼   ► I still don't have the company for 'em

01:37:08 ◼   ► 'cause I'd like to give the company

01:37:09 ◼   ► same name as the product. And therefore I don't have the stupid "done" number yet,

01:37:16 ◼   ► so I can't get the Apple developer account yet, so I can't get all my final certificates

01:37:19 ◼   ► done and it makes it harder to test things like push notifications. All these things

01:37:24 ◼   ► that, no matter how much I work my butt off right now, these things all take blocks of

01:37:30 ◼   ► time that have to be done in a certain sequence. And so the reality of me getting this out

01:37:35 ◼   ► there in any kind of shippable 1.0 state within six weeks, it's pretty much zero. Plus, you

01:37:42 ◼   ► should probably submit it like two weeks before the actual release date of the OS, and that's

01:37:48 ◼   ► assuming you get approved on the first try.

01:37:49 ◼   ► Yeah, more than two weeks, you're assuming it's going to be bounced back at least once.

01:37:53 ◼   ► Exactly, yeah. Any new app, you've got to assume you're going to be rejected. So, the

01:37:58 ◼   ► chances of me getting it out there for iOS 7's release are pretty much nil. I mean, the

01:38:04 ◼   ► would have to be almost done right now for that.

01:38:07 ◼   ► You'd have to have it pretty much ready to go,

01:38:11 ◼   ► ready to be in the app store on day one.

01:38:13 ◼   ► You'd have to have all the code effectively done now.

01:38:17 ◼   ► It would have to be in a very advanced beta.

01:38:18 ◼   ► And if it's not in a very advanced beta today,

01:38:22 ◼   ► you're probably not getting it out there for day one.

01:38:25 ◼   ► - Yeah, that's fair.

01:38:26 ◼   ► So when are you gonna put it out,

01:38:27 ◼   ► like March of next year then?

01:38:29 ◼   ► - I'm shooting for fall as well,

01:38:33 ◼   ► but depending on whose definition of fall.

01:38:35 ◼   ► Like, I wanna get it out there for this fall.

01:38:38 ◼   ► I don't, again, I don't know how realistic it'll be

01:38:42 ◼   ► to hit any particular month.

01:38:43 ◼   ► I'm thinking October, November is probably more reasonable.

01:38:49 ◼   ► - Gotta have it there for the holidays.

01:38:50 ◼   ► People get their new iPhones and iPads for Christmas,

01:38:52 ◼   ► they can install your app.

01:38:54 ◼   ► - Yeah, but you have a busy October for sure,

01:38:55 ◼   ► 'cause I'm involved with half of your October.

01:38:59 ◼   ► - So between September and October,

01:39:01 ◼   ► I'm going to two conferences that are very far away each.

01:39:06 ◼   ► I'm going to an anniversary trip,

01:39:09 ◼   ► 'cause it's our fifth anniversary this year,

01:39:11 ◼   ► and I'm going to our driving trip,

01:39:14 ◼   ► which is gonna be awesome.

01:39:16 ◼   ► That's all, that's like, what was that, four major trips?

01:39:20 ◼   ► Yeah, four major trips within two months.

01:39:24 ◼   ► - Where are you going for your anniversary thing?

01:39:25 ◼   ► Are you willing to share?

01:39:25 ◼   ► - Upstate, a little resort that we like.

01:39:28 ◼   ► - Nice.

01:39:29 ◼   ► - Yeah, we went there on our wedding night, it's cute.

01:39:31 ◼   ► So yeah, I'm cramming all this stuff into that time, plus maintaining the blog, the

01:39:40 ◼   ► show, and the general baseline workload that I have to do every week.

01:39:47 ◼   ► It's going to be a rough fall, I think, or at least a rough early fall.

01:39:52 ◼   ► By November or so, I should have an easier schedule, right in time for the holidays and

01:39:57 ◼   ► all the family travel that goes along with that.

01:39:59 ◼   ► I can help you out by just telling you, Marco, that actually you only have five vacation

01:40:02 ◼   ► days left this year, so you'll have to adjust your plans to account for that.

01:40:07 ◼   ► Imagine if Marco had a real J-O-B job. Oh, man.

01:40:10 ◼   ► I did a couple of times.

01:40:13 ◼   ► Mm-hmm. Now everyone's confused about what the driving thing is. I feel like we should

01:40:19 ◼   ► just let them be confused.

01:40:20 ◼   ► Yeah, let them be confused. We'll take pictures and post them somewhere.

01:40:24 ◼   ► It involves driving. That's your hint.

01:40:26 ◼   ► Yeah, that's your big hint.

01:40:27 ◼   ► And John refused to come.

01:40:28 ◼   ► I didn't refuse, I chose not to.

01:40:31 ◼   ► Don't even get me started about John.

01:40:33 ◼   ► There are items on either side of these things, and I weigh the pros and cons and I make a decision.

01:40:40 ◼   ► There's not a refusal to do an obviously good thing, nor is it a rejection of an obviously bad thing.

01:40:45 ◼   ► So angry at you, John. And I'm only slightly kidding.

01:40:48 ◼   ► Guess how many vacation days I have left this year?

01:40:50 ◼   ► Oh, after all, I have booked? I only have one. How many do you have?

01:40:54 ◼   ► Not counting booked, but actually my wife just booked I think the rest of my vacation

01:40:58 ◼   ► days today.

01:40:59 ◼   ► I think she just bought plane tickets.

01:41:01 ◼   ► After she booked it, she said, "Okay, how many vacation days do you have left?"

01:41:04 ◼   ► And I really should have gotten the other order.

01:41:07 ◼   ► I believe I'm more or less booked up.

01:41:08 ◼   ► I think I have to keep two in my back pocket for like one day this winter I'll be sick,

01:41:15 ◼   ► and one day I may be panicked and have to take a day off work to do emergency Mac OS

01:41:21 ◼   ► 10 review scrambling.

01:41:22 ◼   ► Hopefully I won't have to use that one.

01:41:25 ◼   ► Nice.

01:41:26 ◼   ► Well, I'm still mad at you either way.

01:41:28 ◼   ► But then kids get sick and then you have to stay home with the kids and sometimes you

01:41:31 ◼   ► can be working from home and sometimes you can't depending on how sick the kid is and

01:41:34 ◼   ► taking him to the doctor and yeah.

01:41:37 ◼   ► Limited vacation days.

01:41:38 ◼   ► It's like RTS where you have limited resources.

01:41:41 ◼   ► You can't just mind for more though.

01:41:43 ◼   ► No, you cannot just mind for it.

01:41:45 ◼   ► We need more ore!

01:41:46 ◼   ► Yeah, we should do titles before I fall asleep.

01:41:49 ◼   ► I like three phones ago.

01:41:51 ◼   ► It nicely encapsulates some of the themes that we talked about.

01:41:56 ◼   ► It's kind of interesting.

01:41:58 ◼   ► That might be the nicest opinion you've ever had about a title.

01:42:01 ◼   ► I mean, that's what I'm always looking for in a title, is something that I can look at

01:42:06 ◼   ► and remind me of what we--like, the Thrustmaster one, I'm not sure if that will remind me of

01:42:10 ◼   ► what we talked about in the previous show.

01:42:12 ◼   ► Although, I never had a Thrustmaster, but I wanted one.

01:42:15 ◼   ► They were definitely very cool.

01:42:16 ◼   ► Well, the only reason I got it was because Dad decided he wanted one.

01:42:19 ◼   ► Ah, it's a secret.

01:42:20 ◼   ► So yeah, it wasn't mine, but I was the only one who used it.

01:42:24 ◼   ► That was during the time that Dad loved getting us a random, fun piece of electronics and

01:42:30 ◼   ► thought he would use them, and then never ever did.

01:42:32 ◼   ► I never did.

01:42:33 ◼   ► I told this to my son explicitly.

01:42:34 ◼   ► I said, "Look, the only reason you have all these video games is because I like playing

01:42:38 ◼   ► video games.

01:42:39 ◼   ► These are my games, and I let you play them."

01:42:41 ◼   ► So if you really liked the harmonica or something, I'd get you a harmonica, but I wouldn't spend

01:42:46 ◼   ► the amount of money.

01:42:47 ◼   ► You know what I mean?

01:42:49 ◼   ► you are getting the advantage of overlapping with my hobbies and these are my game systems and these are my games and that's why you

01:42:55 ◼   ► can't play a lot of them because he's asked like he wants to play the Last of Us and stuff and like

01:42:58 ◼   ► That's a grown-up game like it's kind of sad because you would think he's like he's the kid who has everything he gets every modern

01:43:04 ◼   ► You know as soon as the Zelda comes out he gets it every time the new Nintendo system was out he gets it

01:43:08 ◼   ► But they're not his they're mine. He doesn't have anything

01:43:10 ◼   ► He's got every Lego known to man, I guess that he does have those those are his but that's kind of because I want them

01:43:17 ◼   ► Yeah, exactly, the truth comes out.

01:43:19 ◼   ► But they are his. The Legos are his, the video games are mine.