The Talk Show

192: ‘The Original Sin Is XML’ With Special Guests Manton Reece and Brent Simmons


00:00:00   Alright, we've got a super special episode of the show.

00:00:04   We've got two guests.

00:00:05   Double your pleasure, double your fun.

00:00:08   What was that chewing gum called?

00:00:10   Doublemint?

00:00:12   Remember Doublemint? - Doublemint, maybe, yeah.

00:00:14   - It was always-- - Remember the ads?

00:00:16   - Yeah, it was always like you'd get like,

00:00:18   it was like two twin teenagers, boys or girls,

00:00:21   would get double the pleasure out of,

00:00:24   I guess like a shared piece of gum or something.

00:00:26   (laughing)

00:00:28   Brent Simmons, longtime friend of the show,

00:00:31   and Manton Reese, who's a longtime friend of me,

00:00:33   but I don't think has ever been on the show before.

00:00:36   - No, thanks for having me.

00:00:37   - And I got both of you on,

00:00:40   because you guys both have new stuff that's come out,

00:00:43   some of it you've collaborated on,

00:00:45   and it's all sort of interrelated.

00:00:48   It makes, I think it makes a lot more sense

00:00:50   to have you guys on together than separately.

00:00:52   - Yeah, I think so too.

00:00:54   I've described Manton and me in a way as litter mates.

00:00:58   You know, we kind of came up around the same time

00:01:00   and we have a lot of the same values and, you know,

00:01:02   90s scripting and web and Mac and all that good stuff.

00:01:07   So it's not surprised that we're still, you know,

00:01:10   collaborating on stuff so many years later.

00:01:14   - So one of the things,

00:01:15   it's not even one of the major announcements, I mean,

00:01:16   but I'll just list them up front.

00:01:18   We've got a JSON feed,

00:01:20   which is a new format for syndication of content in JSON format.

00:01:25   We've got micro.blog, which is a microblogging platform

00:01:30   that Manton just launched about a month ago.

00:01:35   We've got other cool stuff related to feeds, Brent.

00:01:39   But then one of the other things you're working on right now, Brent,

00:01:41   is you are working on a modernization or just getting Frontier to run again.

00:01:48   Well, it really is pretty much a ground up rewrite.

00:01:52   You know, I have the old source code that, you know, with me and I can

00:01:56   do a build on a 10.6.8 virtual machine, but otherwise I'm rewriting it

00:02:01   almost entirely in Swift.

00:02:03   So it's, you know, it's going to be all new code or almost all new code.

00:02:08   And man, you were a big Frontier user back in the day, right?

00:02:11   I was absolutely.

00:02:13   I built a bunch of web related things in Frontier and

00:02:18   gosh, it's so long ago now, but yeah, I was a big fan of the design,

00:02:21   how it thought about scripting integrated with the database.

00:02:26   It's just a great platform. I'm glad to see it's getting some new life.

00:02:30   Maybe some new people will discover it.

00:02:32   So one of you guys take this. At a high level, can you explain to somebody

00:02:36   who doesn't know what Frontier was? And I think it's fair at this point

00:02:39   to talk about it in the past tense, because it doesn't, right now, today,

00:02:42   it doesn't really run on a modern platform, even though there's...

00:02:46   It's complicated, right?

00:02:48   - It is.

00:02:49   - Old code never dies completely,

00:02:50   but can somebody take a high level overview

00:02:53   of just what Frontier was?

00:02:54   - I can give that a try.

00:02:58   I'm so close to it though,

00:02:59   that I don't know if I've ever been good at this.

00:03:02   At a high level, it's a scripting system

00:03:05   with a database and a user interface.

00:03:08   So it makes persistence really, really easy.

00:03:12   'Cause the database is tables

00:03:14   which can contain objects and other tables,

00:03:17   and it's schema-less.

00:03:19   So storing stuff forever is just as easy as using key paths,

00:03:24   which then map to locations in the database.

00:03:28   So foo.bar.x equals, you know, whatever you want it to be,

00:03:32   a string or a number or an outline

00:03:34   or any number of different things.

00:03:37   And for some reason, that just makes development

00:03:41   really, really rapid and really fun, really easy.

00:03:45   There's more to it than that, but that's a high level.

00:03:48   - So one of the things, it sounds so trivial,

00:03:51   and for people out there, and again,

00:03:53   I don't wanna bore anybody,

00:03:54   I'm not gonna turn it into a programming podcast,

00:03:55   but the persistence of data was literally non-trivial,

00:04:00   I mean, trivial in Frontier.

00:04:06   It was as easy to store something permanently to disk

00:04:09   by writing it to the object database as it was to write it to a temporary variable that

00:04:14   it dies when the script stops running.

00:04:17   Yeah, absolutely right. Yeah. As you're typing, there's no difference between a local variable

00:04:23   and a persistent location.

00:04:28   Even a programming language like Perl, which is the language I'm personally most familiar

00:04:33   with and which is famous or infamous depending on your perspective for making it possible to be a

00:04:41   very very terse and write minimal lines of code to do the most things. Just to write something to

00:04:48   a file at a minimum is still three or four lines of code where you get a file handle to a path in

00:04:54   the file system and then you open the file and test to make sure that it worked and then you can

00:05:00   print to the file handle and whatever you print to the file handle be written to the file. Whereas in

00:05:05   Frontier, you literally would just pick a name for your object, you know, whatever dot whatever dot

00:05:12   whatever equals foo and then later on whatever dot whatever dot whatever you can read from it and it

00:05:17   says foo. Yeah, yeah, it's literally no harder than just, you know, assigning a value to a local

00:05:24   variable. Just as easy as that. And it came out—originally, Frontier came out, as I recall,

00:05:31   around 1992 or so? '92? I guess I could have done some research here. But it seems very strange to

00:05:41   me, and sad in some ways, that here we are 25 years later, and there's nothing that easy. There are

00:05:48   certain things that Frontier made easy, that 25 years later, there's nothing that fills that void.

00:05:54   Yeah, that's right. I like to think of it as an artifact from an alternate universe. If programming

00:06:00   and scripting had gone another way, you know, Frontier might be, you know, one of the most

00:06:07   important apps on the platform, and there might be a lot of imitators. But we kind of stuck with the,

00:06:13   you know, here's your text file on disk, and we're reading and writing to files kind of way.

00:06:21   where our frontier is, you know,

00:06:23   I think the technical term might be image-based

00:06:26   because you're actually in an environment with a database

00:06:29   rather than separate files on disc for everything.

00:06:32   - Yeah, exactly.

00:06:34   - There was something about,

00:06:34   I don't think I even appreciated at the time,

00:06:37   you know, the thing about the language being integrated

00:06:40   with the database until years later,

00:06:42   like you said, it's been like 20 years

00:06:44   and we still don't really have that.

00:06:46   If you want to build a web app today, for example,

00:06:49   You pick a language, Ruby, whatever, Python, Perl,

00:06:52   and then you pick like, oh, I need to get the MySQL library

00:06:56   in or some other database framework.

00:06:58   They're all still very separated.

00:07:00   Even on other platforms, you have core data

00:07:02   or something was like the official way,

00:07:04   love it or hate it.

00:07:05   That's like the official way to do database work

00:07:08   on the Mac or iOS, but it's still very separate.

00:07:11   There's no, I mean, it's not tightly integrated

00:07:13   in the way that Frontier was.

00:07:16   Right, it's like every language, I mean,

00:07:20   I'm sure you can go back 50, 60 years

00:07:22   and there's some weird language where you had to,

00:07:24   but every language has built in arithmetic operators.

00:07:28   So if you've got two integers, you

00:07:31   can just use the integer name variable plus the other one,

00:07:35   and you get the sum of the two numbers.

00:07:37   It would be an enormous pain in the ass

00:07:39   if you had to write three or four lines of code

00:07:41   to import arithmetic library and call

00:07:45   like a PLUS plus function just to add two integers.

00:07:50   But that's still sort of the way

00:07:51   that we kind of have to do file IO with everything.

00:07:54   And I love the Unix scripting system.

00:07:57   I write stuff in Perl all the time.

00:07:59   And there's lots of ways where that's great,

00:08:02   but the fact that that's kind of all we're left with today

00:08:04   is sort of sad.

00:08:05   - Yeah. - Yeah.

00:08:07   Especially since every modern app,

00:08:09   especially web apps,

00:08:10   needs some kind of database persistence.

00:08:12   I mean, it's very rare that you have an app

00:08:14   that's so lightweight that it doesn't need any database or file, I/O at all.

00:08:20   The other thing historically that was interesting about the timing of Frontier, so Frontier

00:08:24   comes out in 1992 or so, early 90s, and that's before the web, and was mostly about automating

00:08:30   stuff on the Mac. Originally it was Mac only, eventually there was a Windows version. But

00:08:35   obviously the big story of the 90s was the web, and Frontier quickly shifted to becoming

00:08:44   a place where people would generate,

00:08:48   create their own, it wasn't necessarily a content management system,

00:08:52   but you could use it to make content management systems. And that's probably

00:08:56   Manton, where you really got involved with it.

00:09:00   It kind of, I don't think I used it before it kind of

00:09:04   pivoted a little bit toward the web. Because like Frontier used

00:09:08   to be a commercial, you know, buy the box in the store

00:09:12   software package and at the source there's difficulties with that because now you're

00:09:16   competing with AppleScript and other things as Apple, you know, HyperCard, all those kind

00:09:21   of scripting environments at the time.

00:09:22   And at some point, and Brent maybe remembers the details, but it switched to now it's open

00:09:28   source and there's a lot more web frameworks and kind of embracing that and trying to find,

00:09:33   you know, just a new set of people that can be using Frontier for web apps and for websites.

00:09:41   So,

00:09:45   we've got so many things to talk about. Let's talk about

00:09:49   I'll let you guys pick. Do you want to talk about micro.blog

00:09:53   first or do you want to talk about JSON feed first? Which one do you think makes sense to talk about first before

00:09:57   we talk about the other? I like JSON feed. I mean that's

00:10:01   we've been focused on that the last couple weeks. Let's talk about that.

00:10:05   Alright, so Brent, tell me what JSON feed is.

00:10:09   JSON feed is like RSS or Atom, but it's in JSON, and it has a few more features that

00:10:19   are needed these days that didn't exist in RSS and Atom.

00:10:23   But the main point of it, I think, is still the JSON-ness of it.

00:10:27   XML is something that people hate working with.

00:10:30   They do a lousy job of generating feeds, and everybody just prefers JSON.

00:10:35   So hey, let's do this in JSON.

00:10:38   JSON is, what's it called?

00:10:41   What's it stand for?

00:10:42   JavaScript object notation, I think.

00:10:45   Yeah.

00:10:46   But basically, it's just a way of very simply defining either--

00:10:53   I think that the JavaScript term is dictionary.

00:10:56   Other languages would call it a hash,

00:10:57   but where you have these key value pairs, where

00:11:00   there's a name of the thing and then the value of the thing.

00:11:03   And you can have a whole list of them in an object.

00:11:07   and you can have arrays.

00:11:08   And you don't have to be a programming expert

00:11:11   to know what an array is.

00:11:11   It's just if you have an array of 10 items,

00:11:14   it's just a list of 10 items, and the order matters.

00:11:16   And it's, you can have,

00:11:20   what makes it a little bit more complicated than that

00:11:23   is that you can have a dictionary

00:11:24   where one of the objects of the dictionary

00:11:26   is another dictionary or an array,

00:11:28   and so it can get hierarchical and go deeper

00:11:32   to have nested data structures.

00:11:34   But basically, at a high level, that's it,

00:11:37   and it's very simple and you can look at it as a human

00:11:41   and kind of get the gist of exactly what it is

00:11:45   and what it means.

00:11:46   - Yeah, it's not difficult to read.

00:11:49   And at a programming level,

00:11:50   it's super easy to read and write too,

00:11:53   which kind of covers all bases.

00:11:55   - Right, and one of the things that I feel like

00:11:58   is essential to it is that even though

00:12:00   it's based on JavaScript syntax

00:12:02   and a JavaScript implementation that reads or writes JSON

00:12:06   can literally just read the JSON file.

00:12:09   And if it's a valid JSON file, just

00:12:11   interpret it right through the JavaScript interpreter.

00:12:13   You don't have to process it in any way.

00:12:16   It's not specific to JavaScript.

00:12:18   It has been quickly adopted by every single programming

00:12:22   platform that is in use today.

00:12:24   It has built-in JSON parsers and generators.

00:12:29   It is, again, trivial is often a dangerous word

00:12:34   use in programming, but it's generally trivial in any modern programming environment to generate

00:12:41   or consume JSON.

00:12:44   Often just one line of code for either.

00:12:47   Yep.

00:12:48   Very simple.

00:12:49   That's not true for XML.

00:12:52   And obviously there are many, many very well-known and well-done XML libraries, but it is definitely

00:13:04   not as one line away as JSON is.

00:13:10   And it's proven in the-- well, when did XML first

00:13:15   come into being?

00:13:16   Probably the late '90s, right?

00:13:18   Yeah.

00:13:19   It's roughly 20 years old.

00:13:20   So I mean, with 20 years of experience under a belt,

00:13:23   we can safely say, even 20 years in,

00:13:28   there's an awful lot of broken XML out there.

00:13:31   And Brent, you can speak to that in your history

00:13:34   as somebody who's written a very popular feed reader,

00:13:39   NetNewswire, for those of you who don't remember,

00:13:41   was originally Brent's product,

00:13:44   and reads RSS feeds and Atom feeds.

00:13:47   And what percentage of feeds out there do you think

00:13:50   had some sort of XML error?

00:13:53   - No, I haven't thought in that terms, but it's a lot.

00:13:57   I mean, character encoding errors

00:14:00   are especially pernicious.

00:14:01   They appear all the time.

00:14:03   people are building their RSS using a template or whatever, not an actual XML writer which would

00:14:10   handle all of this stuff for them. And so feeds are just screwed up a thousand different ways.

00:14:16   It's super common. And so yeah, I was always working around those kinds of bugs.

00:14:21   So the chase on feed launch, you guys, the spec for it is bylined by both of you.

00:14:32   It's, I think, Manton Reese and Brent Simmons.

00:14:35   I have a cheat code, because the three of us

00:14:42   are on a Slack group together.

00:14:45   This was hashed over in advance.

00:14:47   So I've been aware of JSON feed far months before it was

00:14:51   actually announced, and I've read the spec

00:14:53   and gave you guys some feedback on typos and stuff like that.

00:14:59   But Manton, tell me, what got you interested?

00:15:01   because I think it was Brent's idea first, if I recall my history from this, like it was originally Brent's idea,

00:15:07   but Manton, you obviously jumped in far enough that you became a full on, you know, 50/50 collaborator on the spec.

00:15:14   Yeah, I was actually thinking about this and I looked back on some of the emails and actually Brent and I exchanged a couple emails about this as far back as 2015.

00:15:25   There was a couple emails kind of loosely related to this.

00:15:30   And I thought about it because I think a lot of people

00:15:33   when they look at JSON feed, especially at an example JSON,

00:15:37   which is just so much more clear and readable and simple

00:15:40   than XML and RSS feeds, like you said,

00:15:45   I think that some people are kind of fooled into thinking

00:15:47   it was just like whipped together really quickly,

00:15:48   the spec and put out there.

00:15:51   And so I was kind of curious

00:15:52   how long we've been talking about it.

00:15:53   And we just briefly exchanged email way, way back.

00:15:56   But then in earnest at the beginning of this year,

00:15:58   Brent said, you know what?

00:16:00   The time is right.

00:16:01   This is a good time.

00:16:03   Let's talk about this.

00:16:04   Let's think through a spec, see what it would look like

00:16:08   and see if it has a place in the open web.

00:16:11   And I'm so glad he did because it's,

00:16:15   I really do think the time is right.

00:16:16   And a lot of the feedback we get from people is,

00:16:20   wow, I got an, actually I got an email yesterday

00:16:23   from someone said, oh, we wanted this at our company 10 years ago.

00:16:26   We were hoping someone would do this.

00:16:28   And now finally, you know, it's here.

00:16:30   Hmm.

00:16:30   Uh, I kept expecting someone to do it too.

00:16:34   I, you know, yeah, for 10 years at least I thought, wow, surely

00:16:38   this will happen at some point.

00:16:39   And then we realized, well, I guess we're the people to make it happen.

00:16:44   Well, okay, fine.

00:16:45   There's a, uh, of infinite, I mean, a whole bunch of XKCD comics are very

00:16:51   but there's one in particular and we've seen it pop up probably once a day every day since

00:16:56   JSON Feed comes up where somebody first sees JSON Feed and there's an XKCD comic. I will

00:17:01   put it in the show notes, I swear. But the gist of it is that somebody says, "Hey, there's

00:17:05   14 competing standards in this space. That's a mess. This is a terrible idea. Let's come

00:17:10   up with a brand new universal format, a spec that'll be the one true spec." And then the

00:17:16   third panel is, "Now we have 15 competing specs in this space." And people think they're

00:17:21   being very clever when they mention this in the context of JSON feed but my

00:17:25   objection to it it's a funny comic I get it but my objection to it in the context

00:17:30   of JSON feed is that JSON feed is in no way in in if you read the spec itself if

00:17:36   you read what you both of you have written about it and and your interest

00:17:39   in it it is not meant as the let's stop using RSS and Adam and whatever else

00:17:47   might be obvious. It is meant to be the 15th thing in this field that addresses

00:17:52   new issues or does things better that the other ones can't do but isn't meant

00:17:58   to replace them. Is that fair? Yeah, that is fair. In fact, the spec itself has

00:18:03   some wording to the effect of, you know, if you can only do one kind of feed, pick

00:18:07   RSS because it's been around a long time, because it's good, because it's, you know,

00:18:12   well-tested, supported all over the place.

00:18:16   So we're not saying that any other format should go away

00:18:19   and we're not trying to be the one universal format.

00:18:21   It is what it is, which is a pragmatic JSON-based format.

00:18:26   - Yeah, and I think that's important

00:18:30   because some of the feedback, the negative feedback

00:18:34   we've heard is that it doesn't try to solve all problems.

00:18:37   And some people would like it to solve more problems

00:18:40   and be an even more flexible and kind of advanced format.

00:18:43   But then that introduces complexity and other issues.

00:18:46   And then you're kind of back where you started in some way.

00:18:48   And it doesn't try to do that.

00:18:50   It really clear prioritizes, like I said, clarity,

00:18:54   just making it really simple to implement.

00:18:56   It doesn't try to solve everything.

00:18:58   So yeah, that comic is funny.

00:18:59   I laugh, I laugh the first few times I saw that.

00:19:02   I don't laugh quite as much the 10th or 15th time

00:19:07   I've seen someone post it,

00:19:07   but it's not quite accurate

00:19:10   and then JSON feed doesn't attempt to do everything.

00:19:14   It just tries to solve a few problems

00:19:16   and make it really clear.

00:19:18   And the whole idea, I mean, if we're glossing over it is,

00:19:21   now things are kind of stuck.

00:19:23   We could use kind of just a little kickstart

00:19:28   in the open web standards, new feed readers,

00:19:32   just people even just thinking and kind of talking

00:19:35   about web standards and feeds and feed readers,

00:19:39   I think is a win.

00:19:40   - Yeah. - Yeah, for sure.

00:19:42   - I totally agree with that.

00:19:44   And I think in the handful of weeks

00:19:47   since JSON feed was announced, the uptake,

00:19:50   I was very optimistic about JSON feed.

00:19:53   There was something about it that just looking at it,

00:19:55   I thought I just smelled a winner.

00:19:58   I think when I linked to it on during Fireball,

00:19:59   I said something to the effect of,

00:20:01   I had the same feeling about it,

00:20:04   even though it's not my creation,

00:20:05   but I had that same feeling about it

00:20:06   that I did about Markdown back in 2002 or 2003,

00:20:10   whenever it was that I first released Markdown.

00:20:13   I just thought when you guys finished it

00:20:17   and it was very close to the end,

00:20:18   I looked at it and I'm like,

00:20:19   this smells like a winner to me,

00:20:21   because I think that if I hadn't been behind the scenes

00:20:24   reading this back for months beforehand,

00:20:26   if it had just popped into my news as a new thing,

00:20:30   I thought I would look at this and I would think,

00:20:32   oh, that's cool.

00:20:33   I should quick add that to Daring Fireball.

00:20:35   That wouldn't take much work.

00:20:36   And that's exactly what happened with a bunch of people

00:20:38   we know, like Jason Snell at Six Colors.

00:20:42   The day that it was announced-- he didn't know it was coming.

00:20:45   The day that it's announced, he's

00:20:46   working on adding it to Six Colors, which

00:20:50   still runs on movable type.

00:20:51   And he ran into a very small problem with JSON encoding

00:20:56   his strings for values.

00:20:58   And so I quick put together-- it's the first movable type

00:21:01   I've written in, I think, 15 years.

00:21:03   But it was very-- it's super, super small.

00:21:06   It is literally like-- it's way more comments than code.

00:21:09   It's just three or four lines of code to get--

00:21:12   and JSON string encoding is super simple.

00:21:15   There's not a lot of rules.

00:21:16   It's not like XML.

00:21:17   It's very simple.

00:21:18   You pretty much just need to backslash escape

00:21:21   your actual double quotes, because the string is

00:21:25   enclosed by double quotes.

00:21:27   So every actual double quote in your string

00:21:29   string needs to be encoded, and you take out

00:21:32   all your white space.

00:21:33   So if you have a tab in your character,

00:21:35   you just put a backslash T in, and a return is a backslash N.

00:21:40   And so literally, Jason Snell had a JSON feed.

00:21:43   He'd never heard of it.

00:21:44   And within two hours of hearing about it,

00:21:46   and a little bit of work for me, he had a working JSON feed

00:21:50   on his site.

00:21:52   Manton, you helped create a WordPress plugin

00:21:56   that was there on day one.

00:21:57   And all, I mean, I lost count,

00:21:59   I very quickly lost count of how many sites had JSON feeds

00:22:03   within 24 hours of the announcement.

00:22:05   And I thought that was pretty cool.

00:22:07   - Yeah, this response has been incredible.

00:22:10   And you're right about the like the encoding issues

00:22:13   and just the simplicity.

00:22:14   I mean, one of the problems with XML is that

00:22:17   it's hard to put HTML inside XML

00:22:19   because they're the same, right?

00:22:21   And so you have to escape everything

00:22:24   and that's really easy to get wrong.

00:22:26   And if you just pull up a default RSS feed from a website,

00:22:31   it's a little bit of a disaster.

00:22:33   I mean, it's a mix of a lot of things.

00:22:35   There's some RSS, there's some Adam in there sometimes,

00:22:38   and there's at least two or three ways

00:22:40   to put HTML in a feed.

00:22:43   And with JSON, it's just way simpler.

00:22:46   We have content_html field,

00:22:50   you put HTML in it and everything's good.

00:22:54   - So I think the original sin is XML itself.

00:22:59   I think XML, and this is, in some ways,

00:23:03   it's gonna be controversial, maybe,

00:23:05   but I think it was a disaster for our entire industry.

00:23:09   I think basically, this is my theory of what happened,

00:23:12   is that the web became such a sensational,

00:23:17   explosive success where like 1994, nobody had heard of it.

00:23:23   1995 technical people had heard of it,

00:23:26   and by 1996 everybody was on the web.

00:23:29   And it's crazy.

00:23:31   Microsoft famously, Bill Gates wrote this memo

00:23:35   that was like, we're currently at mid-90s,

00:23:39   the most successful company in the history of the world,

00:23:41   and we're completely shifting our entire,

00:23:43   everything we do is entirely focused on the internet

00:23:45   all of a sudden.

00:23:46   We totally missed this and we're shifting

00:23:48   the biggest company in the world to be internet focused.

00:23:50   And it worked for them, right?

00:23:51   It was the right move.

00:23:54   And I feel like everybody was so obsessed with the web, and the web is all based on

00:23:59   HTML, and they were like, "Well, now let's do everything like HTML, and let's make a

00:24:06   data serialization format that is like HTML, where you've got these tags that are set by

00:24:11   angle brackets that enclose whatever it is they represent, and then you end them with

00:24:18   the same type of tag."

00:24:19   And like you said, Ben, XML and HTML pretty much are the same basic idea.

00:24:24   There was the whole disaster that we went through where they literally—we spent like

00:24:28   10 years of standards process trying to get HTML to become XHTML, which was the bastard

00:24:36   baby of XML and HTML.

00:24:39   And which eventually—

00:24:40   And that failed, thank goodness.

00:24:42   Right, it failed.

00:24:46   And HTML5, which is what we have wound up with,

00:24:49   which is much better, pretty much went completely

00:24:52   around that XHTML standards process.

00:24:56   But it's exactly like you said.

00:24:58   In some ways, it's such a bad idea,

00:24:59   because it's like you've got XML,

00:25:02   and it's got the same rules as HTML.

00:25:04   But a lot of what you want to encode,

00:25:06   whether it's in feeds or any other use of XML,

00:25:11   if you're using an XML data format,

00:25:13   if your content is HTML, it's a disaster.

00:25:18   It really is.

00:25:19   And it looks, it's almost impossible for a human

00:25:21   to look at it and see if it looks right.

00:25:25   - Yep, and even writing software for it.

00:25:29   I mean, I think my code works properly

00:25:32   for all those different kinds of feeds,

00:25:34   but there's so many like decode this and then decode this,

00:25:37   and it's just much more complicated than it needs to be.

00:25:40   There's so many places you can get it wrong.

00:25:42   Yeah, and then, you know, you may have it right in your code, but there's going to be feeds or

00:25:48   documents, whatever they're, that are going to have it wrong on their end. And then your users

00:25:54   are going to notice and report it as a bug. And pretty soon you're writing, you know, workarounds

00:25:58   to handle buggy, you know, documents and feeds and so on. And it gets messy. I think, I think

00:26:07   the central theme of a lot of this is idealism versus practicality. Is that the opposite of

00:26:15   idealism? What's a good word for that, Brent? Pragmatism. Pragmatism is a good word.

00:26:22   And so XML is a very idealistic format, in my opinion, because it is literally, it stands for

00:26:34   for extensible markup language, I believe,

00:26:37   but it is extensible.

00:26:40   It can and is, in the real world,

00:26:42   being used for just about anything you could imagine.

00:26:46   But it's so complicated because it's so ambitious

00:26:50   and because it aimed to be able to represent or to model just

00:26:53   about anything you could throw at it.

00:26:57   And so people say, like in your announcement--

00:26:59   and I read the whole Hacker News thread on it.

00:27:02   I know you guys--

00:27:03   Wow.

00:27:04   You guys did not.

00:27:05   Thanks for doing that, Fred.

00:27:07   If it was my thing, I would not have been able to do it.

00:27:10   Like, if it was my baby, if JSON feed were my baby,

00:27:13   I would not have read the Hacker News feed.

00:27:15   Or I would have read the first two lines

00:27:17   and then closed the tab.

00:27:18   I imagine 100 links to that same XKCD comic.

00:27:22   I think it came up at least three times.

00:27:24   And it was one of the deeper threads,

00:27:26   because the first one who did it, I swear,

00:27:28   it's a really deep thread with all the people who are like,

00:27:31   Damn it, I was just about to post that.

00:27:33   (laughing)

00:27:35   But one of the bits of pushback on this would be,

00:27:41   and I've seen this repeated several times, I'll paraphrase,

00:27:44   which is you guys are presenting JSON feed as easier

00:27:49   and less error prone to generate and parse than XML.

00:27:54   And people are saying, the response is,

00:27:56   if you're having problems parsing and generating XML,

00:28:01   the solution isn't to create another format in a different language. How about you fix your XML

00:28:05   generators and parsers? So XML, you know, it was early enough when XML came out that

00:28:12   people didn't really know how developers would behave in as a giant mass. And the fact is,

00:28:21   they're just not going to always behave all that well because people are, you know, they have

00:28:25   budgets, they have deadlines, they have different skill levels. So people aren't necessarily going

00:28:32   to do the right thing. So it's important to keep that in mind and use formats that are

00:28:40   a whole lot easier so that the burden isn't on each individual developer.

00:28:44   Right. And that the fact is, this isn't going to like that question, like, why don't you just fix,

00:28:52   X, it's not gonna change.

00:28:54   I mean, even if you think back,

00:28:56   like we were talking about Brent working on that newswire,

00:28:58   it's been a number of years

00:28:59   since Brent worked on that newswire.

00:29:01   Guess how much has changed since then with RSS feeds?

00:29:04   Nothing, nothing's changed.

00:29:06   Nothing has changed with feed parsing and tools.

00:29:10   It's basically same thing.

00:29:12   And so I think that would continue.

00:29:14   Nothing would change without someone

00:29:17   kind of putting something new out there

00:29:19   and getting people to talk about it.

00:29:21   - XML is old enough.

00:29:24   In fact, I think it's long past old enough,

00:29:26   and I think it speaks to you guys saying

00:29:27   that you kind of expected something like JSON feed

00:29:29   to appear 10 years ago.

00:29:31   And in hindsight, it does.

00:29:33   It feels like a real head scratcher that it didn't.

00:29:35   I would say by 10 years ago, XML was settled enough

00:29:40   that we can see how it's used in the real world,

00:29:42   and in the real world, it's often broken.

00:29:45   And that's just a statement of fact.

00:29:47   And you can say it shouldn't be.

00:29:50   You can say that all these people generating malformed XML

00:29:54   or subtly malformed or questionable XML,

00:29:56   that they should fix their tool chain.

00:29:59   I guess that's correct.

00:30:02   There's all sorts of things the world should do though.

00:30:03   We should all exercise every day.

00:30:05   We should stop drinking beer.

00:30:09   There's all sorts of things that we could do

00:30:10   that should be better,

00:30:12   but that don't reflect the way people actually behave.

00:30:15   - In fact, it's because of XML

00:30:18   that I don't exercise enough and drink too much beer.

00:30:20   (laughing)

00:30:22   - Here's my favorite anecdote.

00:30:25   I keep, maybe, but hopefully, in fact, I guarantee it,

00:30:28   by the time this podcast airs,

00:30:30   this will be a post on Daring Fireball,

00:30:32   is, in terms of it being easier to generate.

00:30:37   And again, I think that there are people who,

00:30:42   if you're already comfortable with your RSS

00:30:47   an atom parsing.

00:30:49   You're responsible for some product or service

00:30:51   that consumes RSS feeds.

00:30:53   And you have a working system that consumes these feeds.

00:30:56   And you look at JSON feed.

00:30:58   I'm not saying you YouTube,

00:30:59   but you, this hypothetical person who wishes there weren't

00:31:02   another new standard.

00:31:03   You say, well, now you've just given me more work to do

00:31:05   because I have to add support for this new thing

00:31:07   and I already had this thing working.

00:31:09   And it's not that hard to consume XML,

00:31:14   that you should be able to do it.

00:31:16   I disagree, and I think it depends on which platform you're using, but the real eye-opener

00:31:21   for me was Workflow, which is the iOS automation system.

00:31:27   It's sort of like Automator for iOS, and it was actually recently acquired by Apple with

00:31:34   a lot of publicity.

00:31:36   It's a totally different discussion as to whether Apple's going to keep it going as

00:31:39   an actively developed product or integrate it into iOS somehow or what they're going

00:31:43   to do.

00:31:44   I don't know.

00:31:45   now, it's still in the App Store. It was not like, "Hey, we got acquired by Apple and

00:31:50   now it's left out to die." They've actually had a couple of updates since the acquisition.

00:31:55   And basically what you can do with Workflow is you create these—they call them workflows—and

00:32:02   you drag actions. It's a visual way of programming. And maybe there's Workflow users who don't

00:32:06   think of it as programming, but it is. It's a visual way, though. And you drag these things

00:32:10   like an action would be get URL, and you give it a URL,

00:32:16   and when it runs, it'll go out on the web

00:32:19   and get the content of whatever that URL is.

00:32:23   And then you drag an action beneath it,

00:32:25   and it can do something with it.

00:32:28   So here, like a stupid example would be you could get a URL,

00:32:32   and it, say, returns text.

00:32:35   And it's just plain text.

00:32:36   And then you could have an action underneath it

00:32:38   that says reverse the text.

00:32:40   And it would turn Brent into-- how do you reverse Brent?

00:32:44   I'm terrible at this.

00:32:45   This is a terrible example.

00:32:46   T--

00:32:47   Tnerb.

00:32:47   T-N-E-R-B, Tnerb.

00:32:50   And maybe there's an action to speak the text.

00:32:52   So you could have three things in a row, get a URL,

00:32:54   and it returns a string, reverse the string,

00:32:57   and then speak it aloud through your iPhone or iPad speakers.

00:33:01   And you haven't written a line of code.

00:33:03   You've dragged these three things out.

00:33:06   You string them in order.

00:33:07   and the results of each one get passed down the chain.

00:33:12   And there's other systems.

00:33:14   Automator works the same way.

00:33:16   But workflow has proved to be quite popular with the iOS

00:33:21   enthusiasts set.

00:33:23   And it works around certain shortcomings, in my opinion,

00:33:26   on the platform, like the fact that there is no scripting

00:33:29   system on iOS like there is on Mac OS.

00:33:33   And anyway, where this ties into JSON feed

00:33:36   is Federico Vitici of MacStories,

00:33:40   and arguably the most well-known workflow user in the world.

00:33:45   He's a serious iOS productivity enthusiast.

00:33:47   He writes all sorts of very interesting stuff in workflow

00:33:52   to aid his productivity.

00:33:54   He showed an example with JSON feed on Twitter,

00:33:57   and it blew my mind how simple it was, because more or less,

00:34:00   he just passed in the URL to Daring Fireball's JSON feed.

00:34:03   And then the next step in JSON was

00:34:06   turn that feed into a dictionary, which

00:34:09   is a workflow data structure, which is named values with--

00:34:15   or keys that have the title of the feed, the date of the item,

00:34:21   and then a value for each thing.

00:34:24   And then all of a sudden, in the next step,

00:34:25   he can just extract the value from the dictionary value.

00:34:31   So give it a JSON feed, turn it into a workflow dictionary,

00:34:34   which is something he's familiar with

00:34:36   and is intrinsic to workflow.

00:34:38   And then he can do things.

00:34:39   Like all of a sudden, he could show

00:34:41   a list of all 25 items in the Daring Fireball JSON feed.

00:34:46   So workflow wasn't updated to support JSON feed.

00:34:50   It just naturally works with JSON, period,

00:34:54   and maps JSON to what workflow calls a dictionary.

00:34:58   And so Federico wrote a thing,

00:35:01   like within a day or two of JSON feed being announced,

00:35:04   where he could do something

00:35:05   that was actually useful from workflow.

00:35:09   And then I looked into it.

00:35:10   Now I'm not a heavy workflow user,

00:35:11   but I looked into it, I opened workflow,

00:35:13   and I replicated what he did.

00:35:15   And I built a little workflow for me,

00:35:16   which I actually might use.

00:35:18   It's a little thing I can launch

00:35:19   from my iPhone home screen now.

00:35:21   It shows a list of all my recent articles

00:35:22   at Daring Fireball, and I can copy the URL for one.

00:35:25   So if I'm texting somebody,

00:35:26   And I know I want to text them a recent article I wrote.

00:35:29   I can do this now with like three taps on my iPhone.

00:35:33   But the thing I looked into is, well,

00:35:34   could I do this with RSS or Atom in workflow?

00:35:38   And the answer is no.

00:35:39   There's no way to do it.

00:35:41   So it's not just is it easier or harder

00:35:45   to parse JSON versus RSS.

00:35:48   For workflow users, it's literally

00:35:50   the difference between it's possible and not possible.

00:35:55   Yeah, that's a great example of like new tools, right, that we hope will happen because of this.

00:36:00   It wasn't possible to do that before.

00:36:01   And maybe you could have some custom workflow RSS thing that was built in that the workflow team worked on.

00:36:09   But you can't just have a generic XML action that would work this way.

00:36:15   And it gets back to the point earlier about like, in a lot of cases, parsing JSON is just one line of code.

00:36:22   it can't be one line of code for XML because XML is more complicated. You don't have just one, you know, key.

00:36:27   If you're working on a dictionary, you have attributes. It's just, it's a different type of format.

00:36:32   You can't have the same simplicity with XML. It's just, it's literally not possible to do the same thing and just make a dictionary out of it.

00:36:40   I just think that there are people who think, if you think XML is simple enough that there's not a need for this,

00:36:45   I really think that you're overlooking just how dramatically simpler JSON is for a lot

00:36:53   of modern programming platforms.

00:36:57   I think of it as being more democratic, right?

00:36:59   So JSON is just usable everywhere and usable by people at massively varying skill levels.

00:37:08   That it makes things like working with feeds something amateurs of all kinds can totally

00:37:13   do and get some value out of. And I think that it sounds small, it sounds small in the way I talked

00:37:20   about Frontier, you know, persistence is so easy. You might think, oh, well, whatever, that's a solved

00:37:25   problem for me. But it really does make a huge difference when you get to use the thing.

00:37:29   Pete: It is literally why I started by talking about Frontier, that I see a path from there to

00:37:37   here that is similar. And democratization of this is exactly—it's something that

00:37:45   I get fired up about. I really do think that when you make stuff like this easier for more

00:37:49   people to do—like, there was an idea in the early days of personal computing where

00:37:55   maybe everybody would be a programmer. And I think HyperCard was sort of designed in

00:38:00   that vein of, this is the sort of thing that everybody could do. And because those of us

00:38:06   who can program at some level, you know, like if you can write some kind of script at some

00:38:11   level versus, whether you, maybe you can't write a full-fledged, you know, CoCo application

00:38:16   that is too far beyond your capabilities as a programmer. But if you can program at all,

00:38:22   you could see that, and you can see how exciting it was in the '80s and '90s when we were

00:38:25   writing little scripts in HyperCard. You wanted that enthusiasm to spread to everybody. But

00:38:30   the truth is, everybody isn't a programmer. In the same way that, in theory, everybody

00:38:35   could write novels, but most people don't write novels. And everybody could sing, but

00:38:41   not everybody sings or plays a musical instrument. I think programming is very much like any

00:38:46   of those things, where some people have a knack for it and an interest and some people

00:38:50   don't. But I still think that there's a huge—I feel like we gave up as an industry

00:38:55   on making things approachable to more people at a simpler level. And JSON Feed is—

00:39:04   Right. JSON feed is exactly like that. And one of the things too is it's not just about making

00:39:09   feed readers, right? There's all sorts of things that you can do with a feed and the data from a

00:39:14   feed that just might not occur to you until all of a sudden you're like, "Whoa, I wish I could

00:39:18   just pick a list of recent articles from during Fireball and just copy the URL."

00:39:22   Sure. I think if this, then that is an example. Yes.

00:39:30   They have like a feed actions, things you can do, and people use that.

00:39:34   And it would be nice to make that kind of ease of use available in more different places,

00:39:41   many more places.

00:39:42   Right. Right. And I think as JSON feed takes root and blossoms, we'll see things like that,

00:39:49   where people who might be IFTTT—I don't know how you pronounce it. Do you say IFTTT or—

00:39:54   If—I don't know.

00:39:56   - No, if it's just, people might make their own feed

00:40:01   for things that you don't think of.

00:40:04   Something to do with your home

00:40:07   and just the smart home automation stuff

00:40:10   and maybe you start making a feed

00:40:11   of times your refrigerator's opened or whatever.

00:40:15   I don't know, but there's all sorts of things

00:40:17   that you could do with it

00:40:18   and with an easy to generate format,

00:40:21   it just opens the door to things

00:40:24   that you haven't thought of yet.

00:40:25   Yeah.

00:40:27   All right, let me take a break and thank our first sponsor.

00:40:30   I want to tell you about our good friends at Fracture.

00:40:34   Fracture is out to rescue your favorite photos

00:40:38   from the digital ether.

00:40:39   Here's what they do.

00:40:40   They print your photos directly onto glass,

00:40:42   and they add a laser cut rigid backing.

00:40:46   You pick your favorite photos, you send them to Fracture,

00:40:49   you upload them, you pick the sizes

00:40:51   that you want them printed at.

00:40:53   fracture, prints them directly on glass in their carbon neutral factory down in

00:40:58   Gainesville Florida. Handmade. They ship them to you in a beautiful clever little

00:41:04   box. You take them out of the box and they're literally ready to hang on the

00:41:08   wall or prop up on your desk or wherever you're going to put them depending on

00:41:11   the size. Everything you need is right there in the box ready to go and they

00:41:15   look amazing. It's not just an easy way to get your photos printed it's also the

00:41:20   the best way to get your photos printed.

00:41:23   And let me tell you, as somebody who,

00:41:26   I tell you about them all the time, and I underuse them.

00:41:28   I have fractures all over the house,

00:41:30   but I should have more, because every time I look at one,

00:41:32   it makes me happy.

00:41:34   Looking at pictures, the nice pictures that I've taken

00:41:37   of places I've been, and my wife and my son,

00:41:41   other people in our family, psychologically,

00:41:44   it makes you feel good.

00:41:46   Fracture is a company that makes people happy,

00:41:49   because pictures of loved ones and places you've been

00:41:53   that you want to remember will make you happy.

00:41:56   I don't want to oversell it, but literally,

00:41:59   in a way, Fracture is selling happiness.

00:42:01   It's a great company, a great service.

00:42:04   You will never, ever regret getting a Fracture.

00:42:07   Where do you go to find out more?

00:42:08   Their website is fractureme.com, fractureme.com/podcast.

00:42:13   They use the same URL for all their podcast ads,

00:42:17   And then when you buy your pictures from Fracture,

00:42:21   they will ask you a one question survey,

00:42:23   which is where did you hear of Fracture?

00:42:25   And you can tell them you heard it from me, the talk show.

00:42:28   My thanks to Fracture.

00:42:30   Go get some pictures printed.

00:42:31   They are terrific.

00:42:32   All right, JSON Feed.

00:42:34   Anything else we want to talk about on JSON Feed?

00:42:37   Where do we think it's going?

00:42:39   Do you think it's, is the success about where you expected,

00:42:45   about what you hoped, more or less?

00:42:47   Jared: It's more than I thought, actually. Yeah. It almost seemed to me like people had been

00:42:53   sitting around not knowing if anybody else cared about this stuff, and then when we came out with

00:42:58   this, a whole bunch of people were like, "Oh, a lot of people care about this stuff." This stuff

00:43:03   being, you know, the open web and feeds and things like that. In a weird way, it's kind of like a

00:43:08   group is finding each other, which is really cool. Pete: Yeah. I kind of see that too. And

00:43:15   And it would be interesting--

00:43:21   we can parlay this into our next conversation

00:43:23   about feed reading.

00:43:24   And I'm curious, as feed readers now start to adopt JSON feed,

00:43:29   I'm curious what they will do when--

00:43:33   let's say somebody is using a feed reader

00:43:35   and they want to subscribe to Daring Fireball.

00:43:37   And they just-- they say-- it says new feed.

00:43:39   And you type in daringfireball.net.

00:43:42   And on the back end, both of my feeds are discoverable.

00:43:46   There's an RSS feed, is that technically an Atom feed,

00:43:49   but for the sake of, we'll just call it RSS for clarity.

00:43:53   There's an RSS feed and there's a JSON feed.

00:43:55   At what point do you think feed readers

00:43:57   might start preferring the JSON feed?

00:44:00   - I think many will, yeah, it's hard to know,

00:44:05   but I think some might soon because there's,

00:44:09   It kind of switches the code path in your app to something that's simpler,

00:44:13   maybe even faster in some cases.

00:44:17   It's hard to know. And the other thing to think about is it's not, we don't

00:44:21   expect everything to change overnight, but you have to start somewhere.

00:44:25   And so I agree with Brent, I think this is more than I thought

00:44:29   we'd see in the first week or two. And it gives me a lot of hope that

00:44:33   you fast forward not just weeks or months, but like

00:44:37   five years, 10 years, I mean, things change over years.

00:44:41   And starting now, which we didn't start earlier,

00:44:44   but starting now works too.

00:44:46   - Brent, what do you think?

00:44:50   - You know, it looks like Feedbin, for instance,

00:44:54   may already be preferring JSON feed

00:44:56   or certainly seems to be leaning that direction,

00:45:00   where others like Feedly aren't even sure yet

00:45:02   that they want to support it.

00:45:04   So I don't really know how long it's gonna take

00:45:08   feed readers in general to prefer that or, you know,

00:45:12   we'll see, a lot, yeah, a lot can happen in five years.

00:45:16   You know, and it may be that there's some other

00:45:18   syndication format in five years that just blows

00:45:20   all this away and whatever, you know, who knows?

00:45:25   Hard to predict, but I think, you know,

00:45:27   JSON feed will do well and will make the ecosystem better.

00:45:32   - It just loaded the feed bin.

00:45:33   Feedbin is an online feed reader.

00:45:38   And it's so funny.

00:45:41   I don't use it, so I don't have any feeds in mind.

00:45:43   But it's a very nice little iCloud.com style web app

00:45:49   that looks sort of like a little bit like a native app.

00:45:52   And because I have nothing there in the content column,

00:45:55   they just show an outline of a hamburger.

00:45:58   Like a real hamburger, not a hamburger menu.

00:46:00   (laughing)

00:46:02   - Making me happy.

00:46:03   All right, we'll speak--

00:46:04   - And the nice thing about some of those,

00:46:05   like Feedbin is also like a RSS syncing,

00:46:08   - Right.

00:46:09   - You know, feed syncing thing.

00:46:10   So there's lots of native apps that support Feedbin

00:46:14   that don't even really need to add direct support

00:46:17   to JSON feed necessarily, and they'll get,

00:46:20   they'll be, you know, quote unquote compatible.

00:46:22   And I think the other unknown is how much innovation

00:46:26   this will spark.

00:46:27   You know, we have like extensions in JSON feed,

00:46:29   people coming up with new ideas, things they want feeds to do.

00:46:32   And I'm hopeful about that because we haven't, I mean, when Google Reader shut down, that

00:46:37   was kind of like good news, bad news.

00:46:39   And the good news was that it did spark kind of some innovation and like more feed syncing

00:46:44   engines and services.

00:46:46   And we haven't seen much like that, but I'm hopeful that we might see something else like

00:46:50   that.

00:46:51   Like some feed reader will take a leap and say, "I'm going to add a new feature."

00:46:54   Imagine that.

00:46:55   and I'm gonna add a new feature to a feed reader

00:46:58   that no one has seen before.

00:46:59   And so we'll see.

00:47:00   - It sometimes seems to me like things now

00:47:04   are a little calcified,

00:47:06   like the bones of the web have hardened.

00:47:09   And in order to do something new, like JSON feed

00:47:14   or add new features to a feed reader, whatever,

00:47:17   like you have to go through a bunch of hurdles

00:47:19   and pass gatekeepers and have all these people explaining

00:47:23   why you're doing it wrong.

00:47:24   And, you know, years ago, we would just make things and people would like them or not.

00:47:30   And it was fun. And so, part of the message here is like, look, we can have fun and we don't actually

00:47:37   have to, we don't have to listen to all the gatekeepers, all the people who would stop us

00:47:42   from doing things. Now, it could be that what we're doing isn't the right thing or has a bunch

00:47:47   of flaws, you know, maybe, maybe not. But the point is, you know, let's get back to the place

00:47:53   where we actually do make new things and have a good time doing it.

00:47:57   It is fun, and I've written that too, that to me this whole thing with JSON feed is fun.

00:48:02   And of course that hopelessly brands me as a nerd that I think that a new JSON-based syndication feed

00:48:08   is fun. But it is, I have to admit, I've had a bit of a thrill just watching this thing take off over

00:48:16   the last week or two. And it is fun. It was fun for me to write the little script that makes the

00:48:23   JSON feed for Daring Fireball. It was a fun programming project for me in the way that I enjoy

00:48:32   little things that you can complete in the afternoon programming projects. It was very fun.

00:48:40   I think Dr. Drang wrote a post about creating one for his website at Lean Crew.

00:48:47   He more or less said the same thing. As a little scratch and itch,

00:48:53   do it in an afternoon programming project. It was as-built on the tin, this is an easy thing to do.

00:49:06   Ironically, I think of all of us who worked on the spec, I was the last one to actually

00:49:10   write code to generate a feed, like the day before we published. I remember it would be easy, so,

00:49:17   you know, whatever. Yeah. It's funny though, because that is true. I can vouch for that.

00:49:23   And I remember it was like, we were like, you were like, here's a checklist of things that need to be

00:49:28   done before we announced this publicly. And one of them was have an actual JSON feed for Inessential.

00:49:34   - Yeah, and for the JSON feed site itself,

00:49:37   which both use the same content management system,

00:49:40   which is really one big, hairy Ruby script.

00:49:43   - Right.

00:49:44   I don't want to keep hammering on XML,

00:49:46   but I will say, though, that,

00:49:48   not that it's hard to make an RSS feed for a site

00:49:51   if you're writing your own, doing it on your own

00:49:54   as opposed to using WordPress or something,

00:49:56   but I can verify firsthand that with the weird system

00:50:00   I have behind the scenes at Daring Fireball,

00:50:01   where I take, long story short,

00:50:04   the system at Daring Fireball,

00:50:07   my short entries are a different blog behind the scenes

00:50:10   than my longer entries.

00:50:11   And then to just have one feed,

00:50:13   I have a script that takes two separate feeds,

00:50:16   one from my link list entries, one from my articles,

00:50:18   and blends them together into one feed.

00:50:21   And I wrote that myself.

00:50:23   And I have had times in the past 10, 15 years

00:50:28   where that's broken, like when I've upgraded

00:50:30   of the server and move to a new server where text starts getting encoded differently because there's

00:50:35   different modules. It's not trivial. You wouldn't want to save generating an XML feed for the last

00:50:42   minute. Whereas JSON feed, I could see why you weren't worried about it. And you're a big believer

00:50:49   in Murphy's Law, right, Brent? Oh yeah, yeah, yeah, absolutely. Well, because it's true.

00:50:55   But Murphy's Law often involves XML. All right, speaking of feed readers, Brent, you have an

00:51:03   announcement to make. Yeah, I've actually been working on a new feed reader for quite some time

00:51:09   as one of my nights and weekends project. And I thought for quite a long time, you know, what I

00:51:15   wanted to do with it. And for a long time, I thought, I'll make it, you know, a for-pay

00:51:19   commercial thing, you know, make some money. I've decided against that. So the name of the reader is

00:51:24   Evergreen. And it is up on GitHub, there's a repository, github.com/brentsimmons/evergreen.

00:51:34   And it's not quite usable yet, except by extreme masochists. But it's coming along. And eventually,

00:51:41   we will have a modern nice cool Mac, RSS reader, and Adam reader and JSON feed reader.

00:51:49   I was gonna say is it going to support JSON feed?

00:51:52   Of course, yeah. But tellingly, I haven't actually written the JSON feed support for it yet, so

00:51:57   at the moment it's only running on my machine and it only works with RSS and Atom.

00:52:03   But you know, maybe I have 15 minutes later today and I'll fix that.

00:52:06   So it's Mac only?

00:52:10   Open source.

00:52:12   Open source.

00:52:13   And tell me why it's Mac only.

00:52:19   It's Mac only, mainly because my two big passions in my career have been the open web and the

00:52:29   Macintosh desktop, Mac apps. iOS apps were kind of fun, but also so massively heartbreaking that

00:52:35   I can't love that the way I love the Mac. And so for me, the intersection of the open web and the

00:52:42   Mac desktop is my favorite place to work. And that's why I work on things like Frontier,

00:52:46   and that's why I've worked on RSS readers. That's why I started Mars Edit a long, long time ago.

00:52:52   So that's my favorite place. And so I'm writing another feed reader because I,

00:52:58   you know, that's me. That's what I do.

00:53:00   So right now, your day job, though, for the last what, like, how long have you been at OmniGroup?

00:53:05   Two years?

00:53:06   Two and a half years.

00:53:07   Two and a half years. What do you work on at OmniGroup?

00:53:09   For the past year and a half, maybe I've been on OmniOutliner. And I also love Outliners.

00:53:16   and this is my favorite Omni app,

00:53:19   so it's been great working on that.

00:53:21   And I've been solely on the Mac version this whole time,

00:53:24   at least so far.

00:53:26   Before that, I worked on OmniFocus for Mac.

00:53:28   - Right, but Mac apps in particular.

00:53:31   - Absolutely, yeah.

00:53:32   - And we've had this discussion now,

00:53:34   obviously, long-time listeners of the show know

00:53:36   that you and I, along with Dave Whiskus,

00:53:38   collaborated on an iOS app,

00:53:43   ultimately it was only an iOS app,

00:53:45   although we had plans for a Mac app,

00:53:46   we can go over that some other day,

00:53:48   Vesper from a couple of years ago.

00:53:51   And in our postmortems of Vesper,

00:53:57   one of our big regrets was that we strategically,

00:54:01   I think I'm speaking for both of us,

00:54:02   but we wished that we had done the Mac version first,

00:54:06   both for business reasons and it just seems

00:54:11   like it was a strategic error.

00:54:14   I think we kind of got blindsided, or blinded by the--

00:54:19   sort of like what I said about how the web was--

00:54:24   everybody was blinded by HTML and the web in the mid '90s.

00:54:27   Five, six years ago, iPhone apps were such the thing.

00:54:32   And I don't think you ever enjoyed writing an iPhone app

00:54:36   as much as you enjoyed making a Mac app.

00:54:39   Yeah, it's really-- it's no comparison.

00:54:42   even in the early days of iOS.

00:54:43   And I had NetNewswire for iOS,

00:54:46   well, for iPhone was up on day one of the app store.

00:54:49   And that was cool initially

00:54:52   'cause the iPhones were so new and exciting,

00:54:54   but they kind of wore off for me.

00:54:57   I've been a long, long time Mac user

00:54:59   and I love writing Mac apps, just way much more.

00:55:04   - It's a different, you often hear the,

00:55:08   I think there's more people out there,

00:55:10   like let's say WWDC in a few weeks,

00:55:13   there will be more people attending WWDC

00:55:17   who would raise their hand and say that they prefer iOS,

00:55:20   writing iOS apps to writing Mac apps.

00:55:23   And again, not to go out in the weeds

00:55:25   on programming differences,

00:55:26   but that people find iOS's UI kit more,

00:55:31   they just like it better than they like the equivalent

00:55:37   on Mac, which is called AppKit,

00:55:39   which dates back to the next days.

00:55:41   And so what you're saying is really the opposite though,

00:55:44   that you prefer the Mac to iOS,

00:55:46   but it's not really, from your perspective,

00:55:48   I don't think it's really an AppKit versus UIKit thing,

00:55:50   it's more of a, the freedom of a Mac app,

00:55:55   especially one that's not sandboxed, you know,

00:55:59   it's liberating in some very literal ways.

00:56:05   - It really is.

00:56:06   The personal computer revolution changed the world dramatically.

00:56:11   It brought, going back to democratization, right, it brought power to anybody who could

00:56:17   manage to get a computer in their life.

00:56:20   And that's huge, really, really huge, and it remains huge.

00:56:24   And iOS still isn't liberating in quite that same way.

00:56:29   Maybe it's liberating in other ways, for sure.

00:56:31   You know, you have it in your pocket wherever you go.

00:56:35   But the kind of deeper things that you can do on a Mac are still difficult to impossible

00:56:40   on iOS.

00:56:42   And I like that.

00:56:43   I like being able to do those deeper things and to enable users to do deeper things.

00:56:49   And I sense a certain frustration from you personally about the—again, not like your

00:56:57   anti-app store, but that distributing your software through the app store has pluses

00:57:03   and minuses, but that the minuses weigh you down. It makes it less likely that you're going to do

00:57:08   something for iOS as a nights and weekends type thing. Yeah, that's right. It adds a bunch of

00:57:16   housekeeping. It adds a bunch of stuff I'd just rather not spend time doing, and it separates

00:57:23   me from my users. And I don't like that at all. The fact that Apple provides a download space for

00:57:32   your apps. It's kind of nice, but I wasn't really asking for that. I can just use S3

00:57:37   or whatever. I mean, who cares?

00:57:38   It's sort of a solved problem, right? Nobody—there was a point where it really was, as an indie

00:57:43   developer, it was actually an expense to like, "Well, where am I going to host the actual

00:57:47   like, I guess it was like a .sit file at the time. Where's my stuff at archive with my

00:57:54   app going to be?" Because the bandwidth—but I haven't heard the last time that somebody

00:58:00   ran up a bandwidth bill on downloads.

00:58:03   - Right, and just being on the App Store doesn't, you know,

00:58:06   replace the fact that you need to do marketing.

00:58:08   So whether there's an App Store or not,

00:58:09   you still have to do marketing.

00:58:11   It really just doesn't help that much.

00:58:16   Having something on the App Store,

00:58:17   people aren't just gonna magically find your app.

00:58:19   You still have to do all the stuff you would have done

00:58:21   without an App Store.

00:58:23   - So why another feed reader?

00:58:28   just out of love because I love it.

00:58:30   Another big reason is, you know, I love these technologies.

00:58:34   I love the open web, I love feeds,

00:58:37   and I'd like to see more people use it.

00:58:40   And so that goes to why I'm making it free.

00:58:43   Yeah, I could not, in other words,

00:58:49   like one day, a few years ago,

00:58:52   I just found myself writing an RSS parser,

00:58:54   and I'm like, yep, I'm doing this,

00:58:56   Because obviously my fingers want me to do this and I have no choice.

00:58:59   The name Evergreen is so great too. I wonder, like, how much did that lock you into the idea of,

00:59:08   you know, you have a great name, you almost have to finish writing it out.

00:59:11   That was a relatively recent change, actually. It's had a few different names. The first name was

00:59:16   Seneca, which I love. It's a beautiful name. And, you know, it's the old Roman senator.

00:59:23   It was also the name of the company that made page mill, though they spelled it with a C instead of

00:59:27   an S. And I've wanted to use that name since that time. But the problem is there's also the Seneca

00:59:35   brand apple juice, and I just couldn't get away from that association. I didn't want people coming

00:59:40   to my site thinking that they're going to learn about apple juice. It just didn't work.

00:59:45   Mad Fientist The book, I can't say they're well read enough to have read more than one,

00:59:52   But the one book from the Roman senator Seneca that I think he's best known for is on the

00:59:56   Shortness of Life, which is a great—and a lot of really old books is actually almost

01:00:02   more like an extended essay than a book.

01:00:05   But I will put a link in the show notes to it because it's really a wonderful essay,

01:00:10   something that was written, what, like 2,000 years ago that seems as applicable today as

01:00:15   ever.

01:00:16   Yeah.

01:00:17   And it kind of went to my motivations for writing the app.

01:00:21   It's like, you know, apparently this is what I love doing,

01:00:23   so why not just do it?

01:00:25   - I can tell that you're happy

01:00:32   with the set of projects on your plate.

01:00:35   You and I have been friends for a very long time,

01:00:37   and I can just tell you,

01:00:39   it almost sounds like you do have a lot on your plate.

01:00:41   You've got a very juicy day job.

01:00:44   I mean,

01:00:47   we said, you're retooling Frontier to run on a modern Mac. JSON feed, in some sense,

01:00:56   it's kind of, you know, at least that's in the past tense. Like, maybe there will be

01:01:00   an update or something, but if there is, it'll be minor. So you don't have to do a lot of

01:01:03   work on JSON feed, and now you've got—

01:01:05   Yeah, that was a side project of a side project.

01:01:08   Right. But it is related, though, where I feel like if—I think we're heading to a

01:01:15   path where when Evergreen is at a place where it's usable, where it's more of a closer to

01:01:22   being—yeah, I would call this a complete feed reader. By that time, I'll bet a decent

01:01:28   chunk of the stuff that people are putting into it are JSON feeds. And one of the things—are

01:01:34   you going to have local feeds?

01:01:37   At some point, possibly not in 1.0, but yeah. Yeah, scripted local feeds.

01:01:41   Right, so NetNewswire supported local feeds.

01:01:44   And what you could do, and what that means

01:01:46   is if you're a scripter, you could write your own feeds

01:01:51   locally on your Mac and subscribe to them.

01:01:54   And it could be something like-- if you have a shared Dropbox

01:01:59   folder with people at work, you could generate your own feed

01:02:04   of when items appear in there.

01:02:06   And then if you want to, that would be your notification.

01:02:09   If you're in Newswire all the time, you could see,

01:02:11   oh, there's new items in my shared Dropbox folder,

01:02:14   and that's the thing that you wrote yourself.

01:02:17   I think that it will, in Evergreen,

01:02:21   I think most scripted feeds will be JSON feeds

01:02:24   because they're so much easier to write.

01:02:25   If you're writing a feed,

01:02:27   if you're starting right now to write your own custom feed,

01:02:29   why in the world would you choose

01:02:31   anything other than JSON feed?

01:02:33   - Yep, yeah, 'cause it's as simple as

01:02:35   you build the data structure in code

01:02:38   and say, "All right, JSONify this," and there, we're done.

01:02:43   - So it's 2017, and Brent Simmons is working

01:02:48   on Frontier, an outliner. (laughs)

01:02:52   - Yeah, I know, I know.

01:02:54   - A feed reader.

01:02:55   - I have like three passions, and I do all three of them,

01:02:58   and that's that.

01:02:59   Which means I'm super lucky, and I had to get

01:03:04   to the age of 49 to be this lucky,

01:03:07   but you know, I've worked my way there.

01:03:10   - All right, let me take another break here

01:03:11   and thank our next sponsor.

01:03:13   It is our good friends at Squarespace.

01:03:18   You've heard of Squarespace.

01:03:20   They sponsor the show all the time.

01:03:21   But listen to me, listen to me.

01:03:23   I'm gonna make it short

01:03:24   because you know what they are already.

01:03:26   Squarespace, you go there,

01:03:28   type squarespace.com in your browser.

01:03:30   You go there, you can say start a free trial

01:03:32   and you start a free trial.

01:03:33   And you're already, at that moment,

01:03:35   you're already building your website.

01:03:36   You've got templates to choose from that

01:03:39   are both stylistic templates in terms of what

01:03:41   do you think it's going to look like and functional templates

01:03:44   in terms of what is it that you're making.

01:03:46   Are you starting a new podcast?

01:03:48   Well, then you can start a blog type thing in Squarespace

01:03:51   where you'll have entries and that sort of thing.

01:03:56   Or are you building a store because you're selling stuff?

01:03:58   Maybe you're making t-shirts or something like that

01:04:01   and you want to sell them.

01:04:02   The next thing you know, half an hour later,

01:04:04   your website is finished and it's there.

01:04:06   and it's a real website, the thing that you make in Squarespace, it is the thing.

01:04:11   There is no separate mode for like, well, here's what it would look like,

01:04:15   and now you have to build it in generator or something like that.

01:04:17   Like as you make these choices and drag these things out,

01:04:21   and move them around on screen and change the names, you have a website.

01:04:25   It's that easy.

01:04:26   So next time you have an idea that needs a website, I'm telling you right now,

01:04:30   go to squarespace.com and use this code, Gruber.

01:04:35   That's my last name.

01:04:36   But you don't need to use that code until you buy.

01:04:38   So go there and just spend 30 minutes trying

01:04:41   to build it in Squarespace.

01:04:42   And you're probably just-- you're

01:04:44   going to realize that there's no reason to do it anywhere else.

01:04:46   They handle everything-- hosting, domain name,

01:04:48   registration, everything you need.

01:04:51   There's web stats, all of your stats

01:04:53   that you need for who's coming to your site, where

01:04:55   are they coming from, how many hits a day you're getting.

01:04:57   Squarespace has all that covered, all of it.

01:04:59   Just remember my last name, Gruber, when you pay,

01:05:02   and you'll get 10% off your first order.

01:05:04   My thanks to Squarespace for their continued sponsorship of the talk show.

01:05:10   Anything else you want to talk about on Evergreen?

01:05:12   Oh, just the meaning of the name.

01:05:16   I think the obvious thing is the idea that the open web and feeds and syndication are

01:05:21   Evergreen things.

01:05:24   They haven't gone away.

01:05:25   There's still a lot of people that like this stuff, and still a lot of people who will

01:05:28   like this stuff.

01:05:30   But it's also, I live in Washington state, which is the Evergreen state.

01:05:34   I went to Evergreen State College.

01:05:37   So it has both some public and some personal meaning.

01:05:41   I just love the name.

01:05:43   I do love the name.

01:05:44   Manton.

01:05:45   I know Manton loves it.

01:05:46   I think Manton loves it more than you do.

01:05:49   And I didn't know all the backstory there.

01:05:50   I just knew part of that.

01:05:52   So I love it even more now.

01:05:53   I have a question for you, Brennan.

01:05:55   mentioned the first thing you said about Evergreen was the GitHub URL and you've

01:06:01   open-sourced some stuff but in the past I think most of the things you open

01:06:06   source are later in a project when it's done or you know or it's you know mature

01:06:12   or whatever and this is the first thing I can think of in a while that you've

01:06:15   open-sourced at the very beginning have you thought about like what that means

01:06:20   like what is that going to change any way you approach this and how the app will evolve or,

01:06:26   you know, be forked into other apps and you know, who knows, you know, it's kind of

01:06:29   just a different process than you've used before.

01:06:33   Yeah, that's a good question. So this is open source, as is the work I'm doing on Frontier.

01:06:38   And for me, it's exciting because I feel in a way like I'm performing in public.

01:06:46   I get the right blog posts about it.

01:06:48   People who want to follow the commits can look at it

01:06:51   and just see how something like this is made.

01:06:55   And maybe for people who aren't developers,

01:06:58   but know enough to be able to understand what's going on,

01:07:01   maybe it'll be interesting to them.

01:07:03   And maybe for newer developers,

01:07:05   it'll be a way to learn from my mistakes

01:07:10   as well as the things that I do well.

01:07:14   So I almost feel like I'm inventing a new literary form,

01:07:19   not as high art, but the form of, you know,

01:07:25   here's a bunch of code,

01:07:26   here's a bunch of writing about that code.

01:07:29   Not that nobody's ever done that before,

01:07:30   of course they have,

01:07:31   but I'm just really into that aspect of it.

01:07:36   Of all my things I've made,

01:07:38   my blog is my longest running, started in 1999.

01:07:42   And it's also the thing I'm most proud of.

01:07:44   So sometimes I think I'm doing all this

01:07:46   just so I have something to write about.

01:07:48   (laughing)

01:07:50   - I'm keenly aware of blogs that predate Daring Fireball

01:07:55   because it's, when I had the idea to do Daring Fireball,

01:08:00   it was, the motivation was like a ball rolling downhill

01:08:05   where every day it went by before I launched it,

01:08:08   I wished more I already had it.

01:08:10   and I had it, you know. And it was the blogs that other people were writing that was making

01:08:18   me want to do it, right? It's, you know, Kotke and Inessential and Andy Bayo's waxy.org

01:08:26   launched I think about six months before Daring Fireball. And the ones that are still going,

01:08:30   I'm so happy about. I'm so happy that Inessential is still going. Every once in a while, I'm

01:08:35   reading Kotke. I read it every day, but every once in a while, I'm like, "You know what?

01:08:39   I fucking love that Jason Kottke is still killing it with Kottke.

01:08:42   Yeah, he's amazing.

01:08:44   Yeah.

01:08:45   It just makes me so happy that it's just all these years gone by, and I could totally

01:08:51   see that.

01:08:52   And the original blog, Scripting News, still going strong.

01:08:55   Of course.

01:08:56   Of course.

01:08:57   Absolutely.

01:08:58   Yeah, definitely.

01:08:59   And it ties into the creation of RSS and podcasting and everything with Dave Weiner, and absolutely

01:09:01   a huge, huge motivating force.

01:09:04   One of the things about Dave that was a huge inspiration for me, beyond his technical contributions

01:09:10   and the creation of all these things that my entire career hangs on, but one of the

01:09:16   things about Dave that I was so super inspired by was that Dave had a column for Wired magazine.

01:09:32   I forget if it was just on the web

01:09:33   or if he was in the actual paper,

01:09:35   but I know he was on Hotwired.

01:09:36   And he had his blog.

01:09:41   And the thing about Dave that was very clear

01:09:43   is that I could tell that he liked writing for his blog

01:09:45   better than he did writing for somebody else.

01:09:47   And it wasn't like he started the blog

01:09:49   so that he could get a column at Wired.

01:09:51   It was like he wrote the column at Wired

01:09:53   so that more people would read his stuff,

01:09:54   but it was, you know,

01:09:56   his own thing was the more important thing.

01:09:58   And that's the thing that he's, you know,

01:10:00   25 years later still doing.

01:10:01   And it was a huge inspiration for me,

01:10:03   which was that I wanted to do Daring Fireball

01:10:05   and make it, make Daring Fireball my career,

01:10:07   not write Daring Fireball, get well-known

01:10:10   and then go write for Macworld or something.

01:10:12   So anyway, there's a nice shout out to Dave.

01:10:16   - I remember-- - And it's funny at that,

01:10:19   at that time, I mean, I remember feeling like,

01:10:22   gosh, there's so many blogs, like, do we need another blog?

01:10:25   Do I need to start one?

01:10:26   I know some people today are probably feeling that way.

01:10:28   Like maybe they want to start a blog,

01:10:29   but there's so many.

01:10:31   But of course, like 10, 15 years ago,

01:10:36   it was certainly not too late to start a blog.

01:10:38   Now, if you started a blog that long ago,

01:10:39   you were one of the oldest blogs on the web.

01:10:42   And so, I don't know, I hope people kind of can help

01:10:46   put that in perspective for people.

01:10:47   Like it's never too late.

01:10:50   And a lot of these blogs, I mean, we talk about Twitter,

01:10:53   we talk about Facebook and how long

01:10:54   these services might be around.

01:10:56   They're all younger than like our blogs.

01:10:59   And so, you know, it's a, when you stretch it out five, 10, 15 years, where do you want your writing to be?

01:11:07   Like where, if you're passionate about writing on the web, obviously Dave is, obviously you all are, where do you want that content to live?

01:11:13   And it's, you know, I think blogs obviously are a great solution.

01:11:18   Hold that thought, man.

01:11:26   I was going to tell the story of how I got into Frontier in the first place.

01:11:29   I don't know if I've ever said before. Well, hold that thought. I'm going to tell you about another

01:11:37   friend of the show. And we'll do that, and then we're going to talk about man and blogging.

01:11:42   But it's our good friends at Away. Away is a company, another one of these podcast,

01:11:50   prototypical podcast sponsors that sell stuff direct to you. What do they make? They make

01:11:55   luggage. They make really nice suitcases, and they have a carry-on. The carry-on is sort of their

01:12:01   prime example. That's the one that you want to look at. I've got one. I've been using it for,

01:12:08   I forget how many months now, but it's now my go-to carry-on for everywhere I go. Hard case,

01:12:14   really nicely made. Mine still looks brand new. I mean, the carry-ons, you get a lot less wear and

01:12:19   and tear on because they don't go underneath the airplane.

01:12:22   Really nice size.

01:12:23   Wonderful wheels.

01:12:25   The wheels-- oh my god.

01:12:26   I had a carry-on suitcase.

01:12:27   Maybe it was just because it was old.

01:12:28   But I had one that was like-- as I'd go through the airport,

01:12:31   it was like squeaking and made terrible noise.

01:12:34   The way it rolls so nice, it's like you don't even

01:12:37   have to put any energy into it.

01:12:38   It almost goes too fast.

01:12:40   But here's the thing that they've got that is so brilliant

01:12:43   is they've built into the carry-on suitcase

01:12:46   a battery charger.

01:12:48   It's like, by the standards of something

01:12:51   you would carry in your pocket, it's huge.

01:12:54   It's got two USB ports, so two phones or two iPads.

01:12:57   You can charge them at once.

01:12:58   Anything that charges by USB, you can charge from this thing.

01:13:01   And so when you're at the airport

01:13:03   and you're waiting for your flight to go off,

01:13:05   you don't have to hunt around for one of the two

01:13:07   seats in the whole terminal that has a charger

01:13:10   or electrical outlet nearby.

01:13:12   And they never put them near seats anyway.

01:13:14   Everybody, if you go to the airport,

01:13:15   you see people sitting on the floor

01:13:17   so that they can be near the port

01:13:18   and there's probably somebody already sitting there.

01:13:21   You just take any seat you can

01:13:22   and if you need to charge your phone,

01:13:23   you just plug it right in your suitcase.

01:13:25   It is brilliant.

01:13:26   This is such a great idea.

01:13:27   And it's a really great suitcase.

01:13:30   They've got all sorts of nice stuff inside

01:13:31   to help you organize your stuff,

01:13:33   keep your shirts separate and not get 'em wrinkled,

01:13:36   stuff like that.

01:13:38   So what do you do to find out more?

01:13:41   Go to their website.

01:13:42   It's awaytravel.com.

01:13:44   awaytravel.com/talkshow

01:13:48   and use the promo code talkshow during checkout

01:13:51   and you will save 20 bucks on your suitcase.

01:13:54   I've got one, I recommend it super thoroughly.

01:13:57   Go there and check it out, awaytravel.com/talkshow.

01:14:02   All right, back to the show.

01:14:04   And Brent, you were gonna tell a story

01:14:05   about how you got involved with Frontier in the first place.

01:14:08   - Yeah, it's not a huge story, but so it was 1995

01:14:11   I was literally, I had a job as a secretary. I didn't have a CS degree. And the office had four

01:14:17   people in it, including me, but we all had Macs, so I was a secretary. And one night, I was bored

01:14:23   at home and I typed into the search engine in my browser, which I think was Lycos at the time,

01:14:32   before Google even existed, "free Mac software" was my search term. And what that brought up was

01:14:39   an article of Dave Weiner's on Hotwired, I'd never heard of him before, where he was talking about

01:14:44   the release of Aretha, which was a free version of Frontier, technically a Frontier 4.0 beta.

01:14:52   And I'm like, "Oh, something for programming. Cool. I want to get back into programming."

01:14:56   I was thinking to myself, I downloaded it and I loved it. And like, that,

01:15:00   the entire rest of my career comes from like that one search on that one day.

01:15:06   [laughter]

01:15:11   That's kind of amazing, right?

01:15:13   Yeah.

01:15:14   And everything falls out of that.

01:15:17   Syndication formats, outliners.

01:15:20   I mean, that is the one thing, too, that maybe we didn't mention before about Frontier,

01:15:24   is that the source code editor for Frontier was an outliner,

01:15:29   not just a simple text editor.

01:15:31   editor.

01:15:32   And people tend to write almost all modern programming

01:15:36   languages in an outline-like format, where you say--

01:15:41   if you say if this, then do these things,

01:15:45   the do these things block, people

01:15:47   tend to tab them in one more level of hierarchy

01:15:51   to the right.

01:15:52   And then when you're done with that block of only do this

01:15:55   if this if statement is true, you

01:15:58   go back out to the next level.

01:15:59   but Frontier took it to the level where it was literally

01:16:03   like on the outliner, like enforced as an outliner.

01:16:08   - Right.

01:16:09   And if you have a good outliner, it makes restructuring,

01:16:12   indenting, unindenting, et cetera,

01:16:14   really, really easy and really, really fast.

01:16:17   And it also makes it nice, you can collapse stuff

01:16:20   so you can see your code at a higher level and so on.

01:16:23   I know we have code folding

01:16:25   in a lot of text editors these days,

01:16:27   but an outliner is, that's like the cheap version

01:16:30   of what a good outliner gets you.

01:16:32   - Right, and it gets rid of any arguments

01:16:34   over tabs versus spaces.

01:16:36   - Yeah, that's right, 'cause who cares?

01:16:38   - My favorite story about working with you,

01:16:41   I think I've said this before on the show,

01:16:43   but with Vesper, you handled all of the programming.

01:16:46   And there's one line of code

01:16:50   that was like a regular expression that I wrote.

01:16:53   I wrote one line of code for Vesper,

01:16:54   and of course it was a regular expression.

01:16:56   But at one point, I did have Vesper checked out so I could do my own builds, because it's

01:17:03   just what you're doing, you're developing.

01:17:05   I could update changes.

01:17:07   And there were things I would commit, like language, like if there was stuff to write,

01:17:11   I might contribute stuff like that.

01:17:13   But one time I started just—I was like, "You know what?

01:17:15   I wonder how the hell this works."

01:17:16   And I just started going through the source code to Vesper, and I realized that you were

01:17:21   all over the map on tabs versus spaces.

01:17:24   Right, yeah.

01:17:25   So, I was, all these people were like, "You should use spaces."

01:17:29   So, I'm like, started best for them, I'm like, "Okay, I'm going to switch to spaces."

01:17:33   And a little while in, I'm like, "God, I hate spaces.

01:17:35   I'm going to go back to using tabs."

01:17:37   But I didn't go through and reformat everything.

01:17:39   And so, on my machine, everything was indented and lined up perfectly.

01:17:43   But if your settings were different from mine, I think you said at one point I indented like

01:17:49   a drunken sailor.

01:17:50   That's exactly what it looked like.

01:17:52   But on my machine, it was all perfect.

01:17:54   So yeah.

01:17:55   And I've stuck with tabs ever since. It's at that Omni where spaces are the rule.

01:17:59   For those who don't know, it's a long-standing and never-ending debate in the programming world,

01:18:05   where some programmers, when they indent code, they use spaces, and some use tabs.

01:18:10   And it gets very, very—sometimes these arguments can get very emotional, because the stakes are so low, right?

01:18:22   It's just like anything in life. Because it seems like such a trivial issue, people

01:18:29   get very worked up about it. But usually, an institution like a group, a company, or

01:18:34   something like the Omni Group is going to just have a, "Here's our coding standards.

01:18:37   Everybody uses spaces. Then there's no debate." I was appalled by the state of Vesper's

01:18:44   indentation.

01:18:45   I'm a little surprised.

01:18:46   I would have been too if I had seen that. But again, on my machine, everything was perfect.

01:18:51   So yeah, I don't know what to say.

01:18:53   - Omni use the spaces is fascinating to me

01:18:55   because I'm certainly tabs and I'm not gonna start

01:18:58   or finish that debate on this.

01:18:59   But traditionally I feel like Mac programmers,

01:19:02   especially classic Mac,

01:19:04   like I remember when I started programming the Mac

01:19:06   in the classic days, like no one used spaces.

01:19:09   I mean, I literally, I can't remember any

01:19:11   ever encountering code with spaces instead of tabs.

01:19:14   And slowly over the years and decades,

01:19:17   especially as people come from other programming communities,

01:19:20   spaces become more and more dominant,

01:19:22   so I would be surprised now if spaces aren't more common.

01:19:25   But I'm kind of surprised to hear about Omni.

01:19:27   That's fascinating.

01:19:27   - Oh, maybe they're old Next developers.

01:19:29   - Yeah, exactly.

01:19:29   That's kind of a wrinkle in things.

01:19:32   - My basic, I'm with you, man,

01:19:35   and I think Mac users tend to be tabs people,

01:19:38   and my thought was, always was,

01:19:40   I mean, this is back to the '90s,

01:19:41   is why in the world would I want four spaces

01:19:44   when I have to backspace, backspace, backspace, backspace

01:19:46   to get rid of one when I can just hit backspace once

01:19:49   to get rid of a tab?

01:19:50   And yes, I know that everybody who codes with spaces now,

01:19:53   that modern code editors will smartly delete

01:19:57   all four spaces when you hit it,

01:19:58   so it treats it the same way.

01:20:00   But why create the need for a special case?

01:20:03   Like, it's exactly what the tab key is for.

01:20:06   - Right, that's why the tab key exists.

01:20:09   And like, I might want my indentation to look much wider

01:20:12   than, you know, I might want it to look like eight

01:20:14   or something, and you can't do that with spaces.

01:20:17   I think, to your point about editors kind of hide this,

01:20:20   I bet a lot of people don't even know what they're setting.

01:20:24   Xcode might default to spaces now, I'm not sure,

01:20:27   but I bet most people don't even know

01:20:29   if they're using tabs or spaces.

01:20:32   - Kids today don't even know if they should be upset

01:20:34   about tabs versus spaces.

01:20:35   (laughing)

01:20:38   God damn kids.

01:20:39   - Yeah.

01:20:40   - All right, so Manton, I mentioned it before.

01:20:46   Micro.blog, that's your new platform for microblogging.

01:20:51   Tell me about it.

01:20:54   - Sure, so the idea is with microblogging,

01:20:58   and is, you know, Twitter, you know,

01:21:00   people like Twitter, right?

01:21:02   Posts are short, they're easy, kind of effortless.

01:21:05   You should put that on your own site too,

01:21:06   is the basic premise.

01:21:07   Like you should have a blog,

01:21:08   and you can have short posts on there, and it's fine.

01:21:11   And short posts, you know, a lot of people,

01:21:14   they don't wanna start a blog, or they have a blog,

01:21:16   they don't know what to write because it's kind of daunting.

01:21:18   They have to have a title and write multiple paragraphs

01:21:21   and have to sound really intelligent.

01:21:22   And with short microblogging, it removes all of that, right?

01:21:27   It's okay to just post something that's a couple sentences.

01:21:30   And that's the basic premise.

01:21:32   It's a blog publishing platform,

01:21:34   but it's also kind of a social network.

01:21:35   So you can follow people like you can on Twitter.

01:21:38   You can cross post to Twitter.

01:21:40   And going kind of back to JSON-FE2,

01:21:43   I mean, it shares some similar themes

01:21:46   and just like helping get the message out, kind of like encouraging

01:21:51   people to think about blogs and feed readers again.

01:21:53   That's the, that's the most important goal, I think, of microdot blog.

01:21:57   Now you launched this as a Kickstarter campaign.

01:22:00   Um, and I know I, as somebody who contributed to the Kickstarter campaign,

01:22:07   that's where I got my microdot blog account from.

01:22:10   Where does it stand now on like signups?

01:22:12   I haven't even looked like can people who didn't

01:22:15   warn in on a Kickstarter get an account at micro.blog?

01:22:20   - Not yet, it's still for Kickstarter backers.

01:22:23   So I opened it up to Kickstarter backers

01:22:27   about a month ago now.

01:22:28   And I guess we're kind of on track

01:22:31   for where we thought it would be,

01:22:33   but you kind of using that early period

01:22:36   with Kickstarter backers to get feedback, make it better.

01:22:40   The iPhone app is not in the app store yet, right?

01:22:42   So it's all via test flights, so it's kind of still a beta.

01:22:45   And then we'll slowly start opening it up to more people

01:22:49   and eventually everybody, yeah, pretty soon,

01:22:51   but don't have an exact date yet.

01:22:53   - But it's also the sort of thing where it's federated,

01:22:56   where somebody else can create their own hosted service

01:23:00   that is completely compatible.

01:23:03   It's not like, I think it's worth clarifying

01:23:06   that your micro.blog is not an attempt

01:23:08   to make like a quote unquote open Twitter.

01:23:12   It's not a unified centralized social network type thing.

01:23:17   It's really just a hosting service for short posts.

01:23:21   - Right, and it's a little confusing

01:23:23   'cause it's kind of a mix of things.

01:23:24   And it's not right now completely federated.

01:23:27   Like if people have heard of Mastodon,

01:23:30   which has got some popularity over the last month or so,

01:23:34   which is more federated,

01:23:36   where you have more kind of instances

01:23:38   of a Twitter-like service running.

01:23:41   It's a little different than that in that instead of like,

01:23:45   just installing the micro.blog software yourself,

01:23:47   you just use blog software, right?

01:23:50   So you just use WordPress.

01:23:51   Like if you wanna run your own site,

01:23:52   you just use WordPress or Jekyll

01:23:55   or some other blog publishing platform that you like.

01:23:59   And then it hooks together into micro.blog

01:24:01   so you can follow people.

01:24:03   And if you don't, if WordPress is too much

01:24:05   and you just want something simple,

01:24:06   then we can host a microblog for you

01:24:08   and just make it really easy.

01:24:09   And that's part of it, just like making this easier.

01:24:11   I think blog feed readers, publishing platforms,

01:24:16   they're not as easy as they should be.

01:24:19   And that's why Twitter and Facebook are so popular in part

01:24:22   because it just makes it a lot easier.

01:24:25   I was thinking back to,

01:24:28   when you wrote, John, about Twitter apps

01:24:32   are like a UI playground years ago,

01:24:34   it's like there's all this excitement in Twitter apps.

01:24:38   And of course, Twitter started discouraging

01:24:41   third-party apps and that kind of faded away. But there was a time where people were having

01:24:45   a lot of fun building these apps because you could do so much in the UI with such a simple

01:24:52   idea. And I think that simple idea can be for other blogs, not just Twitter. It should be that

01:24:59   easy to post to your own site, basically. That's a good way to put it. You should write that down.

01:25:05   It should be micro.blog. It should be that easy to post to your own site.

01:25:11   - That's good. - And you support things.

01:25:12   You've got support for things like photos.

01:25:15   So you could, if you wanted to,

01:25:17   somebody's micro.blog feed might just be like a sort of,

01:25:22   I follow you there, and you often post updates

01:25:25   about your work on micro.blog itself.

01:25:28   It's sort of like your public record of,

01:25:31   here's the progress I'm making on this thing

01:25:33   that I know that people are following along with.

01:25:36   But somebody else could do it

01:25:38   and effectively use their micro.blog

01:25:40   like their own personal self-hosted Instagram, where they just post like a, you know, take one

01:25:46   nice photo every day and post it. Yep. Yeah. And I'm seeing a lot of that. I'm really happy to see

01:25:51   it. And that the official microdubler app tries to kind of encourage that by having, you know,

01:25:56   it's not as full feature as Instagram, but it has the filters and it has square photos, which

01:26:02   actually turns out they work really well in timelines like that. And it just make it really

01:26:07   easy to post photos.

01:26:10   And I think that's really important.

01:26:11   I think like photo blogging is like a really important kind of variation on microblogging.

01:26:17   You don't have to write a lot.

01:26:19   You can, everyone takes photos.

01:26:21   Sometimes they're really good and worth sharing.

01:26:23   And Instagram is an interesting point now too as being part of Facebook.

01:26:28   I'm not going to say there's going to be a pushback against Instagram.

01:26:31   Like Instagram is probably not going anywhere.

01:26:33   I still love Instagram.

01:26:35   But I think there are a lot of people that are aware of the trade-offs with using Instagram

01:26:41   and Facebook, and they love the idea of having those photos on their own blog as kind of

01:26:46   like the first they go to my blog, and the next they optionally go to Twitter or Instagram.

01:26:53   Making money is often in conflict with simplicity.

01:26:59   That's a broad statement, but I think it's often true.

01:27:03   And I think Instagram is an example of that, where I still like Instagram a lot, but I

01:27:08   don't like it as much as I used to when Instagram was just square photos with filters, and there

01:27:15   was nothing else.

01:27:17   I get the stories thing now.

01:27:19   I don't really—I posted like—I went through a car wash a couple weeks ago, and I love

01:27:25   being in it.

01:27:26   Ever since I was a kid, I like driving my car through a car wash.

01:27:29   It's just like neat sounds.

01:27:31   I don't know, and it looks cool.

01:27:32   so I posted an Instagram story from the car wash.

01:27:35   But for the most part, I don't really get the idea

01:27:38   of posting something that's gonna disappear.

01:27:40   It just doesn't fit me personality-wise.

01:27:45   There's all sorts of stuff that I would never post

01:27:47   to the internet just because,

01:27:49   obviously I'm a public person in terms of my writing

01:27:54   and stuff, but I'm in large part pretty private.

01:27:57   So I don't do things, like I don't check,

01:28:00   when I go to a restaurant, I don't check in.

01:28:01   I've never done that.

01:28:02   I don't understand it.

01:28:03   I don't know why I would want to.

01:28:05   I don't know why I'd want other people

01:28:07   to know what restaurant I'm at, et cetera.

01:28:09   But I just feel, I can kind of ignore it in Instagram,

01:28:14   but it just, I don't know.

01:28:16   It just seems to me like two different things,

01:28:19   whereas I look at, like I'm looking at micro.blog right now

01:28:23   and I'm scrolling down and it's like,

01:28:24   well, this is just nice.

01:28:25   It's just like a list of things I signed up to see

01:28:27   and then the only things that are there

01:28:29   the date that they were posted, a reply button, and a favorite button. And that's it. I like that.

01:28:35   Brent Durand (01h00m 11s): Yeah. The idea is kind of back to basics in a way. And of course,

01:28:40   no ads and things like that because the business is just helping people post their blog or help

01:28:46   make it easier. The business is not to grow to billions of users and put ads in their face.

01:28:51   Jim Collins (01h00m 28s): And again, all this stuff that the three of us are talking about today,

01:28:53   they all sort of interrelate. And Brent, I think that there's an angle with that with making

01:28:57   Evergreen just a free open source Mac app where you've got a day job at Omni Group,

01:29:03   which is a company that knows how to make money on software, but that frees you up.

01:29:08   Like Evergreen is, it must be liberating in some ways that you don't have to worry about

01:29:12   Evergreen selling for $19 a copy or whatever the price would be.

01:29:17   It very much is. Yeah. I kept thinking, well, at some point I'll have to deal with licenses

01:29:22   and demo version? Do I make a lite version available? And what about when people lose

01:29:27   their serial number?" And I'm like, "Ugh, don't make me." And it's just like, "You know, I don't

01:29:33   have to do it. All right, so I won't make that money, but whatever, I'm fine."

01:29:37   So it's a lot easier to have fun when there's no need to make money.

01:29:46   Matt, you've got a complicated relationship with Twitter in history.

01:29:49   And so one of the things that you've done in the past is you—I think it's correct to talk about

01:29:57   it in a past sense—but you had Tweet Library, which was an iPhone app, right?

01:30:04   Matt

01:30:04   Yeah, it started as an iPad app and then it became a universal app for both iPhone and iPad.

01:30:09   And it's, again, it's the same, it's just like with Brent, it's your same obsessions coming back over. Tell us about, what was Tweet Library?

01:30:17   Yeah, so and then Tweet Library kind of came out of that same period that I referenced too, of like lots of innovation in Twitter apps.

01:30:23   And my take on it was, it actually kind of fits in with your Instagram comment too, is like, why would I want to post something that disappears?

01:30:32   And I feel the same way. I kind of experimented with Instagram stories, but I don't have a Snapchat account.

01:30:38   To me, if I'm taking a picture or I'm writing something, if I'm bothering to write it down, it kind of matters to me.

01:30:44   And so I want it to last forever as long as possible. I want it to be in my domain name, and I want to be able to find it later.

01:30:51   And so Tweet Library was along those lines of, "How can I download all my tweets, search them, filter them by keywords or date, maybe export them or collect tweets together?"

01:31:01   And back then, Twitter was, I mean, Twitter has some,

01:31:06   it has better search now, at least in the website,

01:31:09   has better like collecting tweets together.

01:31:12   But back then it was much more difficult

01:31:14   to find old tweets.

01:31:15   And so I wanted an app that could do that.

01:31:18   You're right in the past tense, I don't sell it anymore.

01:31:22   It was hard to let that app go,

01:31:24   but I went through a phase of being very frustrated

01:31:28   Twitter and it didn't make much sense to keep working on that app for that reason

01:31:34   and also just because there were other apps that started to do the same thing.

01:31:37   Yeah and it's a semi-recent thing but they now, Twitter does now have a thing

01:31:43   where you can say send me an archive of all of my tweets from history and then

01:31:47   like two days later you get an email with like a download link. Yeah and I

01:31:51   actually added a feature to tweet library where you could, yeah you get a

01:31:54   download link that's like a zip file and I you could import that directly into

01:31:57   which was really great because the first version of Tweet Library couldn't do that.

01:32:01   You basically had to run the app every once in a while, make sure it downloaded everything for you.

01:32:05   But you yourself

01:32:09   don't really use Twitter anymore?

01:32:13   Not really. I got frustrated

01:32:17   when Twitter was just becoming

01:32:21   developer hostile. We're talking about

01:32:25   about feeds a lot, they removed their RSS feeds is one example of something they did,

01:32:30   locked down their API a little more, you know, put limits on how big a

01:32:35   Twitter app could get in terms of popularity compared to the official app, the whole famous

01:32:40   kind of app tokens that they limited and various other shutting down other Twitter apps.

01:32:47   And so I kind of left, I kind of threw a fin, left Twitter for a number of years.

01:32:53   And in fact, my original Twitter account, which is over 10 years ago now, I do not post to it and don't log in as it ever anymore.

01:33:03   As kind of a, I left Twitter, it was actually one year after Steve Jobs died and I collected a bunch of stuff about Steve, a lot of tweets and stuff.

01:33:12   And I wanted to mark the occasion of leaving.

01:33:16   It's like this is something that I think was great about Twitter, like something that made Twitter really special.

01:33:21   And so I just haven't touched it.

01:33:22   I just let it be what it is.

01:33:24   And I feel like if I went back to that account,

01:33:26   it would kind of, you know, it would like cheapen

01:33:30   like what I was trying to capture.

01:33:33   And that was like five years ago now, I guess,

01:33:35   four or five years ago.

01:33:36   And so what I have done though,

01:33:37   is I created a separate Twitter account,

01:33:40   Manton2 where I cross post stuff.

01:33:42   So if I post something in my blog,

01:33:43   automatically cross posts to Twitter.

01:33:45   And I started as an experiment and I thought I would stop,

01:33:48   but I just kind of kept doing it anyway

01:33:51   for people who don't have feed readers and they want to kind of keep up with my blog,

01:33:55   they can follow that account.

01:33:56   Or if they want to effectively use Twitter as a sort of poor man's feed reader.

01:34:01   Exactly.

01:34:02   And I know a lot of people do that.

01:34:03   I personally, I mean, if that works for you, I guess that's great.

01:34:06   But I mean, I love traditional feed readers and hope to see more activity, obviously,

01:34:11   in feed readers with JSON feed and whatnot.

01:34:13   So that doesn't work for me, but if it works for you, you know, you can follow Twitter

01:34:17   accounts that way.

01:34:20   So where do you see, how do you think the launch of Microdublog has gone so far?

01:34:26   I think overall good.

01:34:28   It's very limited, of course, with Kickstarter backers.

01:34:32   It wasn't, honestly, it wasn't really ready when I opened it up to Kickstarter backers.

01:34:37   Like, it needed probably a few more weeks, at least, of baking.

01:34:41   And there were bugs and there were issues.

01:34:45   And so I'm obviously really glad that it was limited to a smaller audience.

01:34:49   But I feel like we've worked through a bunch of those.

01:34:51   I feel like it still has,

01:34:53   there's still a bunch of things to improve.

01:34:55   And, you know, there's a bunch for me to work on

01:34:59   before the public launch.

01:35:00   But overall, I think it's good.

01:35:02   And I think it's resonating with certain people.

01:35:04   You know, some people don't get it and that's okay.

01:35:06   But some people are excited about it

01:35:08   and kind of get the potential

01:35:10   for what it's trying to do with blogs.

01:35:12   - Now, one of the things you were able to do

01:35:14   through the Kickstarter, I think it was like a extra level,

01:35:17   but you made enough through the Kickstarter where you said,

01:35:20   if we hit this level, I'll hire a community,

01:35:23   what's Jean's title?

01:35:27   - Yeah, community manager was--

01:35:29   - You hired the great Jean McDonald of,

01:35:32   formerly at Smile Software, AppCamp for Girls co-founder,

01:35:37   and all-around amazing person.

01:35:39   She's, what's, community coordinator?

01:35:43   - I guess, so when I wrote the Kickstarter update

01:35:46   about halfway through talking about like a stretch goal

01:35:49   for the project community manager was the term I used.

01:35:53   Now, Jean, I mean, I didn't think I'd be so lucky

01:35:56   to get someone as great as her

01:35:58   with so much experience that she has.

01:35:59   So I don't know if that term is perfect anymore

01:36:03   for everything that I think she's gonna be able to help

01:36:06   with the project, but yeah, I couldn't be happier.

01:36:09   I mean, she's got great experience, Smile and AppCamp.

01:36:13   And I wanted to, I didn't want to wait to address issues

01:36:18   of potential just kind of hate and harassment

01:36:22   and the kind of problems that we see

01:36:25   almost kind of run unchecked sometimes on Twitter.

01:36:27   I mean, I don't completely blame Twitter for some of that,

01:36:31   but I do kind of blame them for not trying to work

01:36:35   on that stuff earlier.

01:36:36   And so my thought is start earlier,

01:36:40   try to get out in front of those kinds of issues.

01:36:42   and then it won't blow up into a huge problem

01:36:44   because it's very difficult after it becomes a problem.

01:36:47   And like I said, I don't completely blame Twitter

01:36:49   because it's hard for them to solve now.

01:36:51   If they had started earlier,

01:36:53   maybe it wouldn't be quite as bad.

01:36:55   - It's like any kind of infestation.

01:36:58   The earlier you can address it, the better.

01:37:01   Or even if you're redoing your patio or your deck,

01:37:10   If you make sure that the door closes with a good seal

01:37:13   to keep ants out, it's better to do it now

01:37:16   than to wait 'til you've got an ant infestation

01:37:19   in your house.

01:37:20   And I don't know, I think Twitter sort of,

01:37:23   I know people there, and I know that there's,

01:37:26   I don't think there's a single person at the company

01:37:27   who's happy about the abuse that takes place

01:37:30   on the platform, but I think that they've chalked it up

01:37:33   to, ah, we'll fix it eventually.

01:37:35   But once it takes root, it's a lot harder to take care of.

01:37:39   So I think it was very smart for you to treat this as a,

01:37:44   hey, here's something that's on my plate

01:37:46   while it's still a Kickstarter.

01:37:48   And it's an idea in my head,

01:37:50   as opposed to waiting until it might be too late.

01:37:53   - Yeah, and because some of these things

01:37:55   need to be addressed through design and features,

01:37:59   not just hiring more people to police tweets, right?

01:38:03   So there's some things inherent in how Twitter works

01:38:07   with reposting, with hashtags and search and trending.

01:38:11   There's a lot of areas where people

01:38:16   will get attention that they don't want,

01:38:19   is I guess a simplified way to put it.

01:38:21   And so it's almost impossible to change some of those.

01:38:23   There's like fundamental ways that Twitter works.

01:38:26   And sometimes those are great things.

01:38:28   Like I said, I tried to highlight when I left Twitter,

01:38:32   like some of the great things that Twitter enables,

01:38:34   but sometimes not good things happen

01:38:37   because of the way features work.

01:38:38   So with Micro.bo, I didn't wanna just copy

01:38:42   every Twitter feature.

01:38:43   I wanted to think about every single feature,

01:38:47   every part of the UI, the design of the app,

01:38:50   just to see if it would be one of those things

01:38:54   where people could be harassed, for example.

01:38:57   And so it is, again, back to basics, it's limited

01:39:01   and we'll be adding more features,

01:39:02   but there's some things we won't add

01:39:04   because I feel like they encourage bad behavior.

01:39:07   - So one of the things that's interesting about it

01:39:09   is that it's like Twitter,

01:39:12   a micro.blog post has just one text field.

01:39:15   You just type in it and then you hit post

01:39:17   and it's posted so you don't have to come up with a title.

01:39:19   In fact, you can't, there are no titles.

01:39:22   - Right.

01:39:23   - I think you're exactly right,

01:39:26   you mentioned this a couple minutes ago,

01:39:27   where I think that that's so freeing in some ways,

01:39:32   And I often think about it with email, where I don't like to half-ass my subjects, but

01:39:38   there's a lot of times where I'll sit there and stare at the subject and I think,

01:39:42   "You know what?

01:39:43   Screw it.

01:39:44   I'll just hit them up on iMessage instead," because then I don't have to come up with

01:39:46   the subject.

01:39:48   It's a weird psychological barrier.

01:39:52   I would never think to do a site like Daring Fireball without titles, because that's

01:39:57   my job, and it's something I take very carefully.

01:40:02   So I don't mind the formality of always having a title.

01:40:06   And I don't really expose them.

01:40:08   But all 17 years worth of-- or however long,

01:40:14   15 years of daring fireball posts--

01:40:16   have tags with categories and stuff like that.

01:40:19   I don't mind that because I feel like, hey, this is my job.

01:40:23   I should straighten up, smooth out the wrinkles in my shirt,

01:40:26   make sure I don't have crumbs on my face.

01:40:28   Whereas when I'm just shooting off at the hip on Twitter,

01:40:30   Who gives a shit?

01:40:31   - Yeah, and different kind of workflows

01:40:36   work for different people.

01:40:38   And I think that for some people that's totally fine,

01:40:42   just like throw out whatever thing on Twitter.

01:40:45   But there's a lot of people that I think would benefit

01:40:48   from maybe a little thinking about it a little bit

01:40:51   before they post something.

01:40:55   - Maybe like our president?

01:40:56   (laughing)

01:40:57   Just say him.

01:40:58   - Maybe, maybe just a little.

01:41:00   But anyway, blogging should be easier, it should be as easy as Twitter.

01:41:05   You should still think about what you're posting.

01:41:07   But for some people they don't care if it lasts, they don't care if it's searchable or they can find it again.

01:41:13   But for other people the idea that even if I'm just like this quick comment or joke on Twitter, even that is worth keeping.

01:41:21   It's worth having my own domain name, it's worth being able to find later and link to.

01:41:26   And so it just depends. That's what you want to get out of it.

01:41:29   want to get out of it. So differences between micro dot blog and twitter, one of them

01:41:34   and again full circle comes to one of our creations. You support markdown for

01:41:38   text formatting, which I've seen people suggest that twitter should

01:41:43   do. And I kind of think that they can't now. There's no way that they can like

01:41:48   there's a sort of expectation in twitter that if you type an asterisk and then a word

01:41:53   and then another asterisk that you're going to see the asterisks, you know, uh yeah,

01:41:57   - Yeah, it might be too late.

01:41:59   - But you also have--

01:42:00   - And the idea there is just like,

01:42:01   tweets are fine, I guess.

01:42:03   But like, if you look at a short tweet-like post,

01:42:08   and instead of having like a bunch of URLs

01:42:11   at the end of it or something,

01:42:12   if it has inline links and maybe something's in bold,

01:42:16   like look at both of those side to side

01:42:19   and it looks really great.

01:42:21   - Yeah.

01:42:22   - Like it just really looks nice

01:42:24   when you use like just simple markdown

01:42:26   And it just, when you're scrolling through your timeline and something's in bold and then there's an

01:42:31   inline link or something, it just looks really nice.

01:42:33   And you don't have to, you know, do a microblog post that way, but you can.

01:42:37   I think it just adds something, a kind of a clarity to the

01:42:42   timeline.

01:42:43   There's an underappreciated aspect to writing for the web.

01:42:46   And I maybe somebody has written about it in a way, but I've never seen it, but

01:42:52   it's like just implicit rather than explicitly talked about.

01:42:56   And I certainly don't think anybody learns about it

01:42:58   in school, even though I think it should be taught

01:43:00   the same way other forms of grammar are,

01:43:01   which is where do you put a link?

01:43:04   What words do you use for the link

01:43:06   when you're linking to something?

01:43:07   I think very carefully about it every time

01:43:09   I put a link in my writing, like which words.

01:43:12   And it bothers me sometimes, and I often notice it

01:43:15   in like articles at like a old,

01:43:18   long-standing print publication, like a newspaper,

01:43:21   where if the New York Times is writing about something

01:43:25   Washington Post reported it first. They'll say this was first reported in an article by the

01:43:29   Washington Post, and they'll make the link just the word article. And I think, no, it should be

01:43:33   like article by the Washington Post. Like add a couple more words to that link.

01:43:37   Yeah. I wonder if they're almost trying to hide the link.

01:43:42   That's what I think. No, that's exactly what I read into that, though. I read at this meta level

01:43:48   when I see the links, and I think, oh, they're, you know, they're, that's exactly what I think.

01:43:52   I think that's sort of like, you know, they're throwing shade on them by making the link as

01:43:57   short as possible. Like, all right, we'll give you credit for this, but we're going to make it

01:44:00   as inconspicuous as possible. And I do think that I think that we've, in some ways, we've gone

01:44:08   backwards with these posting formats like Twitter and Facebook, where if you want to have a URL,

01:44:14   you have to show the whole URL.

01:44:16   It's not that-- there were some people who've

01:44:22   pushed for URLs being completely hidden,

01:44:25   and the way that browsers have sort of-- they still

01:44:28   haven't done away with them entirely.

01:44:30   But Safari typically just shows your domain name

01:44:36   in the location field until you click in the location field,

01:44:38   and then it shows the whole URL.

01:44:40   They've slowly but surely made them,

01:44:42   tried to make them less of a user-facing thing.

01:44:47   But we've ended up in this world where

01:44:49   when you share URLs on Twitter and stuff like that,

01:44:52   you have to see the whole ugly thing.

01:44:53   And so many people have CMS systems

01:44:56   that generate these ugly URLs.

01:44:58   And even if you don't have ugly URLs, all of these people

01:45:01   now post these UTM turds for SEO tracking

01:45:06   or whatever the hell they're for.

01:45:07   And so the URLs have gotten uglier over time,

01:45:11   and we're stuck looking at them.

01:45:13   - Yeah, and Twitter tries to clean them up a little bit,

01:45:17   like truncate's part of them, but yeah,

01:45:20   it can get really, a lot of clutter.

01:45:23   - Very clutter, and just being able to do square bracket,

01:45:27   end square bracket, put the URL in parentheses afterwards,

01:45:30   and then have it render just as a nice word.

01:45:34   Like, who would have thought in 1996 that in 2017

01:45:38   we'd be saying, you know what's nice?

01:45:39   It's a blocking system where you can make links.

01:45:42   (laughing)

01:45:44   It doesn't seem like something that we would be praising

01:45:48   a new blocking platform for in 2017, but there it is.

01:45:53   And that's the thing.

01:45:53   - It's the basis for the entire web.

01:45:55   - Right.

01:45:56   - I mean.

01:45:58   - And like, if there's one theme that underscores

01:46:00   a lot of what we've talked about today,

01:46:02   it's like, things should be better.

01:46:03   Like we deserve a better web by now, right?

01:46:06   And like, I think Twitter should have evolved

01:46:09   more quickly, they ran into issues and leadership changes

01:46:13   and whatnot and that happens, but it should be better.

01:46:17   Feed readers should, I mean feed readers should

01:46:19   in some cases work, should embrace ideas

01:46:22   from social networks.

01:46:23   And yeah, so there's progress to be made

01:46:26   and I'm excited for that because what Brent said

01:46:30   about these themes in his life of working on an outliner,

01:46:34   writing on his blog, these things that last

01:46:38   and he's still happy doing 20 years later.

01:46:41   I feel the same way about blogging.

01:46:42   I can't believe actually it took me this long

01:46:44   to build a blogging platform.

01:46:45   I probably should have built one a long time ago.

01:46:48   But I'm glad that there's still unsolved problems.

01:46:50   There's still room for improvement.

01:46:52   - I think that I don't wanna be too melodramatic,

01:46:55   but I feel like Google Reader was a catastrophe

01:46:59   in the sense of the meteor that killed all the dinosaurs

01:47:04   a couple hundred million years ago.

01:47:06   Google Reader became so popular and so central.

01:47:10   And it was even-- because it was central and it had APIs,

01:47:13   it was-- even for people who didn't look at Google Reader,

01:47:16   like NetNewswire had to support it as the syncing engine.

01:47:20   I'm looking at NetNewswire, but it's

01:47:22   using Google Reader behind the scenes

01:47:24   to do the syncing so that an app on my iPhone

01:47:27   can see the same read on read status

01:47:29   and have the same subscription feeds.

01:47:31   And when Google Reader went away,

01:47:33   it did so much damage to the open web.

01:47:36   And it's our own fault for letting the open web become

01:47:39   so dependent on one centralized proprietary thing

01:47:43   from a company.

01:47:44   Like the open web thrives when there's multiplicity.

01:47:49   But it is funny, though.

01:47:50   I feel like in hindsight, it was bad for the web

01:47:54   that Google Reader went away.

01:47:55   And I've said it before, traffic during Fireball plummeted.

01:47:58   I mean, I lost 25% of my page views per month just like that,

01:48:03   just gone.

01:48:03   And it never returned.

01:48:05   Luckily, I don't think readership is down.

01:48:07   I just think the number of times a day

01:48:09   that people came to the site went down

01:48:11   because Google Reader was their way

01:48:12   to get notified when something new was posted.

01:48:16   Thankfully, I never monetized the site by page views.

01:48:20   It was always based on how many people

01:48:22   and what I could charge sponsors per week.

01:48:23   But other sites that had page view-based things

01:48:26   lost 25% of their revenue just like that.

01:48:31   But much like the catastrophe of the meteor,

01:48:34   There has been an awful lot,

01:48:37   like there's so many more feed syncing services now

01:48:40   than there were when Google Reader went away.

01:48:42   Just quietly, the feed, I don't want to say industry

01:48:47   because that's the wrong word,

01:48:48   but the community surrounding feeds

01:48:50   has sort of routed around that,

01:48:52   and it's good that there's so many options now

01:48:54   for things like syncing feeds.

01:48:56   I don't know if you guys agree. - Yeah, definitely.

01:49:00   Yeah, and it's kind of like,

01:49:02   well, maybe these small mammals will take over now that the dinosaurs are dead, and

01:49:07   something good will come of that.

01:49:09   Dave: People definitely still read Daring Fireball through feed readers. I just looked

01:49:13   at it the other day and how many hits there are to the feed, and they come from a wide

01:49:18   variety of sources. Wait, there's no one dominant feed reader anymore, which I think is a good

01:49:23   thing.

01:49:24   Tim Cynova Yeah, I think so, too.

01:49:25   Dave: All right, I got one more sponsor to thank, and it's our good friends at MailRout.

01:49:30   and then I want to talk to you guys a little bit about WWDC

01:49:32   and then we'll wrap it up.

01:49:33   But our sponsor right now, it's Good Friends at MailRoute.

01:49:37   MailRoute is a company, it's the group behind MailRoute

01:49:41   has been working together for 20 years.

01:49:44   They started in 1997, they were at Microsoft for a while,

01:49:47   and now they have their own company, MailRoute.

01:49:50   And all they do, this is it,

01:49:52   all they do is handle email filtering.

01:49:56   You point, if you have a domain name for your company,

01:49:59   your personal site, anything like that.

01:50:01   You point your MX records for your domain name to mail route.

01:50:04   And your mail goes to them first.

01:50:06   And then they forward it on to your existing mail server.

01:50:09   So they're not hosting your email.

01:50:11   Your hosting service stays exactly the same.

01:50:14   You don't have to change your clients at all,

01:50:16   because they all just talk to the same server.

01:50:18   It's just that all incoming email

01:50:19   goes through mail route first.

01:50:21   And guess what gets filtered out?

01:50:22   All of the junk.

01:50:24   All the viruses and the scammy, spammy attachments,

01:50:28   All that stuff just goes away.

01:50:31   And MailRout has APIs, so if you're an expert,

01:50:34   if you're a professional system administrator,

01:50:35   you can write, integrate it with your software.

01:50:37   They have APIs that you can connect to.

01:50:39   They have great user-facing stuff,

01:50:42   so the users can go there and get a report

01:50:46   of which emails got filtered and stuff like that,

01:50:48   see a list of the ones that are maybe in the gray area

01:50:52   just to double-check it with your eyeballs if you want to.

01:50:55   Everybody's getting out of this business.

01:50:57   Even Google has come out recently and said that they encourage people who use Google

01:51:00   Apps for email, for their company email, to use a gateway service like MailRoute first

01:51:05   so that they don't have to be the front line of filtering out your email.

01:51:08   It's a terrific, terrific service.

01:51:10   I personally know a bunch of people who use MailRoute on their domains now, and I don't

01:51:14   know a single person who's started using MailRoute who's stopped.

01:51:19   It's so good.

01:51:20   It does one thing.

01:51:21   They do one thing really well.

01:51:24   And I don't even know who's second place is in the business.

01:51:27   It's so great.

01:51:29   And I think they have one of the best offers

01:51:31   you're ever, ever gonna hear from a sponsor.

01:51:33   You go to mailroute.net/tts.

01:51:36   That's like the initials, the talk show, mailroute.net/tts.

01:51:39   You get a 30-day free trial.

01:51:41   And then when you sign up through that link,

01:51:43   you get 10% off for the lifetime of your account.

01:51:47   So like I said a couple weeks ago,

01:51:49   you could be using them for 20 years

01:51:51   and you'll still be saving 10%.

01:51:53   It's an amazing deal.

01:51:53   you'll save tons of money.

01:51:55   So go to mailroute.net/tts.

01:51:58   So WWDC's coming up.

01:52:01   You guys are going, right?

01:52:03   - Oh yeah.

01:52:04   - Man, are you coming?

01:52:05   - Well, not actually going to the conference,

01:52:06   but everything else.

01:52:09   - The same here.

01:52:10   I'm not going to the conference, but I'll be there.

01:52:11   I'll be there for a few days.

01:52:13   - I think it's gonna be so weird.

01:52:15   The three of us have been in WWDC for a long time now,

01:52:21   at least the last 10 years or so.

01:52:22   I think we've been, I've been to everyone,

01:52:24   I think you guys have too, or at least most of them,

01:52:27   and we hang out together and we go to the same restaurants

01:52:30   and we drink beer at the same places and it's,

01:52:33   I'm ready for a shakeup, but I think it's gonna be

01:52:36   so bizarre because it's, I am sort of a creature of habit

01:52:39   and it's gonna be weird not being able to go

01:52:42   to the House of Shields.

01:52:43   - That's exactly my thought too.

01:52:45   It's like we always know we'll end up

01:52:47   at the House of Shields at the end of the night.

01:52:49   Everything else may be up in the air,

01:52:50   but we have that one habit especially.

01:52:54   - If we had to do it this time,

01:52:55   that's gonna be a story.

01:52:57   - Yeah, that's probably a mistake.

01:53:00   I know, yeah, we'll work it out.

01:53:02   I mean, you know, somehow it'll be different.

01:53:05   - All right, one of the events that is going on at WWDC

01:53:08   is there's gonna be a screening of App the Human Story.

01:53:12   That's a documentary movie.

01:53:13   It's been in the work for a couple of years now,

01:53:15   but it's finally coming out as a real deal.

01:53:20   a terrific documentary that I was interviewed for it, Brent, I know you are. I'm looking

01:53:27   at the website right now, and it's actually a picture of you, Brent, at your computer,

01:53:30   footage from the movie. So there's going to be a—

01:53:33   It's me at Omni, actually, right there.

01:53:35   Is it really?

01:53:36   Mm-hmm.

01:53:37   Boy, that's a nice desk. There's a screening. I don't know. As we speak right now, it looks

01:53:42   like there's a lot of open tickets available. By the time this episode airs, I don't know

01:53:45   if that's true or not, but if it is, you can go to the show notes, and I will have

01:53:48   a link to where you can sign up for this. But they are selling tickets to a screening

01:53:54   June 4th, that's Sunday, the day before the WWDC keynote, right there in San Jose.

01:54:01   So if you're going to be in the area, either if you live there or if you're going to

01:54:05   be in the area for WWDC, you can go. And then afterwards, there's going to be a panel

01:54:08   discussion that—I think I'm actually leading the panel discussion. Brent, I know you're

01:54:13   on the panel talking about the movie. So this is going to be great. And the best thing about

01:54:18   Is this screening, all the proceeds for it are going to AppCamp for girls, which is a terrific program.

01:54:26   So there's that. I don't know what else you guys want to talk about.

01:54:30   If you have one wish for WWDC for Apple to announce, what would it be?

01:54:34   Bug fixes for Mac OS.

01:54:38   Matt?

01:54:40   I think Siri improvements for Siri for developers.

01:54:44   I think I'm a big fan of the Echo

01:54:47   and I think Amazon in some ways is way ahead.

01:54:50   So I don't know if there'll be any hardware or anything,

01:54:53   but I think there needs to be more

01:54:56   with the developer SDK for Siri.

01:55:01   With the Echo you can do like,

01:55:03   there's thousands of skills and stuff you can add

01:55:05   to the Echo and the Apple needs, I think more here.

01:55:09   I think they can do more.

01:55:10   - They've effectively taken the opposite approach,

01:55:12   where last year when they announced SiriKit,

01:55:14   they were like, and SiriKit works for the following

01:55:17   like three or four things.

01:55:19   So like, and some of them are useful,

01:55:21   like ride hailing services, right?

01:55:23   So you can like tell Siri to get you an Uber,

01:55:26   and because ride hailing service is one of like

01:55:29   the three or four hard-coded things that it does,

01:55:33   the Uber app has APIs to say, okay,

01:55:36   when somebody asks for a ride,

01:55:37   you know, do call these things and then all of a sudden you're in the uber app and it's getting you an uber or a lift or whichever one you want.

01:55:44   Um, but like hard coding the ideas for what you're going to do is not the way that software platforms take off because the thing that's popular is never predicted in advance.

01:55:57   Well, yeah, it's so limiting and I understand why they did it that way.

01:56:00   And there are some advantages like for localization is a big one.

01:56:04   Apple can handle some of the details about the phrasing in different languages.

01:56:08   That's important.

01:56:10   But I want to be able to do more.

01:56:13   I mean, we've been talking about blogging a lot.

01:56:15   I mean, I should be able to ask Siri to post to my blog.

01:56:17   And right now, I guess I could maybe overload the messaging part of Siri,

01:56:22   but that sounds like a hack.

01:56:24   And so I think at the very least, Apple needs to, let's say, add 30 or 40 new types of things that Siri can do

01:56:32   and maybe even have another one that's like, oh, and anything.

01:56:38   Some more flexible way to extend it.

01:56:40   I think that they know that.

01:56:42   I'm not putting out the idea that Apple thought

01:56:45   that having three or four things that Siri could do

01:56:47   was the be all end all.

01:56:48   I think that they shipped what was ready to ship,

01:56:51   and it was better to ship it in a limited form

01:56:53   than not ship it at all.

01:56:55   And I agree with that.

01:56:57   It's better that you can at least send messages

01:57:00   through this than if you couldn't do anything.

01:57:02   But I really hope that this has been a productive year

01:57:05   for the Siri kit team.

01:57:07   I think that's a good wish.

01:57:09   And I almost feel like if it's not,

01:57:13   it's a warning sign about this current state of Apple

01:57:16   as a company and are they able to keep moving fast

01:57:20   and in new directions because it feels like something

01:57:23   they really should be doing.

01:57:25   I'm also with you Brent.

01:57:26   I hope that the Mac announcements are relatively quiet

01:57:30   that it's not really about, wow, lots of new stuff in macOS. I really hope that it's sort of a quiet,

01:57:35   snow leopard style. We're actually just making stuff more reliable.

01:57:41   Jared: Yeah, that'd be great. macOS, it's mature. They don't need to force themselves to find new

01:57:47   features for it. Just, you know, make it faster and fix bugs. Yep.

01:57:53   Anything else you guys wanted to talk about?

01:57:56   Or did I hit everything?

01:57:58   Anything about Evergreen or JSON feed or micro.blog

01:58:02   that I didn't ask about but you wanted to talk about?

01:58:05   - That would be covered a lot.

01:58:09   - I'll take it as a no.

01:58:11   (laughing)

01:58:13   - You know, I like all this stuff fits together.

01:58:17   - It really does.

01:58:18   - It just does, yeah.

01:58:19   And I like that a lot.

01:58:20   - I even like how it fits together with Markdown

01:58:22   where people will be writing their blog posts

01:58:24   in markdown format and posting them to their micro.blog,

01:58:28   and then people will read those things in Evergreen.

01:58:32   Pretty nice.

01:58:35   Anyway, the other thing that I just love,

01:58:37   and I just had a podcast with Jim Dalrymple

01:58:39   and signed off the same way,

01:58:40   I love being able to say right now,

01:58:42   I will see you too soon, and I look forward to it.

01:58:45   - Yeah, cool, right on.

01:58:48   - See you in San Jose.

01:58:49   [BLANK_AUDIO]