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.