Unofficial Accidental Tech Podcast transcripts (generated by computer, so expect errors).

24: Double Meta

Writing your own model class, Casey’s app, John’s app idea, Ask Patents, difficult games, eggs, and beaches.

Episode Description:
  • Non-developers might want to skip the first 35 minutes: a technical discussion of FMDB, SQLite, and implementing your own generic "model" class. Plus: Casey finally gets to talk about .NET. (Note from Marco: The day after recording, I rewrote my model class to rely on KVC instead of runtime tricks and reflection. Please email Casey.)
  • The types of programmers who can and should write their own low-level classes.
  • Casey's app, Fast Text, and why he wrote it in 2010.
  • John's unfulfilled app idea and name.
  • Getting yourself moving on an iOS app.
  • Victory Lap for Ask Patents.
  • A 29-minute after-show extravaganza about lazy input sanitization and parameterization, extremely difficult games, eggs, and beaches.

Sponsored by:

  • Hover: High-quality, no-hassle domain registration. Use promo code ATP for 10% off.
  • 23andMe: Order your 23andMe DNA kit today for just $99.

MP3 Header

Transcribed using Whisper large_v2 (transcription) + WAV2VEC2_ASR_LARGE_LV60K_960H (alignment) + Pyannote (speaker diaritization).

Transcript start

⏹️ ▶️ John Don’t pick the drop tables one though because uh apple probably does not It’s not protected

⏹️ ▶️ John against injection attacks.

⏹️ ▶️ Marco Yeah, right. Yeah, we’ll take down the whole itunes store

⏹️ ▶️ Casey I do like uh, i’m double meta or meta. However, you’d like to pronounce it. I thought that was good

⏹️ ▶️ Casey, John Who says

⏹️ ▶️ John meta i’ve i’ve heard that occasionally but it’s it’s much more rare than you know The gif gif

⏹️ ▶️ John thing like that’s like 50 50 but meta. No, i’m, sorry. That’s that’s not that’s not good

⏹️ ▶️ Marco This reminds me of when I brought up the brawl phase in neutral, but I wrote

⏹️ ▶️ Marco my first VA list function a few minutes ago. Like all this time I’ve known

⏹️ ▶️ Marco that it’s a thing. I’ve known, you know, that this is how you do variable argument

⏹️ ▶️ Marco list C functions, but I’ve never actually needed to write one. Really?

⏹️ ▶️ Marco Until like an hour ago.

⏹️ ▶️ Casey God, I did that at my first job, which was C++ for DOS. I don’t

⏹️ ▶️ Casey remember why I did it, but I did it. It was weird. So, what did you use it for? Am I allowed to ask?

⏹️ ▶️ Marco Yeah, if you want. So, for my new big thing,

⏹️ ▶️ Marco I’ve now done, in substantially shipping products, I’ve now done

⏹️ ▶️ Marco both core data in the magazine. And granted, that’s a pretty light

⏹️ ▶️ Marco use of Core Data, but it’s still a shipping production use of this

⏹️ ▶️ Marco thing for a real app that’s not entirely trivial. So

⏹️ ▶️ Marco I’ve used Core Data, and in Instapaper, I used SQLite just raw.

⏹️ ▶️ Marco And I made a few lightweight utility functions to wrap on top of it,

⏹️ ▶️ Marco but I didn’t – everything was really just done via raw queries and raw calls

⏹️ ▶️ Marco to the SQLite API. And I know it’s not pronounced as SQLite and I don’t care. I also say

⏹️ ▶️ Marco GIF, oh well. Suck it. So anyway,

⏹️ ▶️ Marco I, so for my new project, now that I’ve seen both,

⏹️ ▶️ Marco I would like to get back to SQLite a little bit, just because

⏹️ ▶️ Marco Core Data is really nice for a very large set of things, But this is something where I expect

⏹️ ▶️ Marco to be dealing with a lot of data. And I know when you have large data sets that

⏹️ ▶️ Marco core data performance problems can pretty easily arise and can often be very, very hard to get around.

⏹️ ▶️ Marco So I decided to use Gus Mueller’s awesome

⏹️ ▶️ Marco FMDB, which is a pretty lightweight wrapper

⏹️ ▶️ Marco around SQLite. And what I decided to build was a similarly

⏹️ ▶️ Marco lightweight model class on top of that. And this

⏹️ ▶️ Marco is probably one of those things where if you hear a programmer saying they made their own model class, chances

⏹️ ▶️ Marco are it was a bad idea. And

⏹️ ▶️ Marco, Casey mine,

⏹️ ▶️ Marco chances are mine is probably a bad idea as well, but I’m doing it anyway, just like writing my own blog engine and roasting

⏹️ ▶️ Marco my own coffee. I’m doing these things anyway, even though it’s generally not worth it.

⏹️ ▶️ Marco So okay, the main argument against this, this is the classic like programmer know-it-all

⏹️ ▶️ Marco wanting to rewrite something really critical that everyone’s done a million times, and chances are my version

⏹️ ▶️ Marco is going to have bugs. You know, they’re re-implementing Unix joke or Emacs or Lisp or whatever the joke

⏹️ ▶️ Marco is. They’re probably all three. So

⏹️ ▶️ Marco it is Lisp? Okay, I thought it was Unix. Okay, I’ll have to look that up. Anyways,

⏹️ ▶️ Marco actually, of course you’re right, John. the kind of thing you would know.

⏹️ ▶️ John It’s not re-implementing, it’s like,

⏹️ ▶️ John, Marco you

⏹️ ▶️ John know, any program eventually includes a, you know, half-assed buggy

⏹️ ▶️ John re-implementation of Lisp or something like that. I’m paraphrasing.

⏹️ ▶️ Marco Yeah, I’m pretty sure that is the thing I’m referring to. Okay, anyway, so, and there’s

⏹️ ▶️ Marco already probably a million of these things out there, but I don’t like using other people’s

⏹️ ▶️ Marco frameworks that do substantial, like, non-trivial things.

⏹️ ▶️ Marco I don’t generally tend to use those except apples and You know things

⏹️ ▶️ Marco that I just really could not write myself, but And I’m you know I’m okay using other people’s

⏹️ ▶️ Marco like utility functions stuff like that And that’s why I’m okay using FM DB because not only do a lot of people use it and Gus Mueller’s

⏹️ ▶️ Marco a good programmer But I can I can look at the code. It’s not a very large library

⏹️ ▶️ Marco It’s it’s actually very very compact And it really is just like it’s really just convenience

⏹️ ▶️ Marco wrappers around sqlite for the most part And so if you so it you know,

⏹️ ▶️ Marco it’s pretty thin

⏹️ ▶️ Casey, Marco So you’re

⏹️ ▶️ Casey not you’re not like an AF networking fan then

⏹️ ▶️ Marco AF networking I I added it to the magazine Fairly late like in I think

⏹️ ▶️ Marco in the most recent version of the magazine I think I added it for for some some relatively

⏹️ ▶️ Marco non or some relatively trivial thing. I’ve really just wanted to try it I know AF networking is very very good and and it’s

⏹️ ▶️ Marco programmer. Is that is that Matt with three Ts Thompson

⏹️ ▶️ Casey who writes that? I believe that’s right.

⏹️ ▶️ Casey, Marco Anyway, he’s

⏹️ ▶️ Marco really, really good. I have no problem using his code because he’s ridiculously good.

⏹️ ▶️ Marco We’ll have to look that up. I’m pretty sure it’s him.

⏹️ ▶️ Marco Everyone uses AFNetworking, so I know that it probably is not buggy, and if there is a bug, it’s probably going to get fixed pretty

⏹️ ▶️ Marco quickly. That’s another thing. They do a lot of things

⏹️ ▶️ Marco there. It’s still a fairly thin layer, though. parts of it I guess are different

⏹️ ▶️ Marco widths, thicknesses, but yeah. So anyway,

⏹️ ▶️ Marco long story short, I decided to write my own model class. And this involves,

⏹️ ▶️ Marco you know, anytime you write something like this, there’s a lot of weird design decisions you have to make.

⏹️ ▶️ Marco This is one of the first times I’ve really had to dive in to Objective-C

⏹️ ▶️ Marco runtime stuff. And I’m trying to avoid it being hacky and bad. And

⏹️ ▶️ Marco right now, I’m calling into some runtime functions to basically do reflection. And

⏹️ ▶️ Marco I know we had a whole reflection topic on the topic list. I wonder if we can get to this now.

⏹️ ▶️ Marco But we certainly can. Yeah. But in dynamic languages,

⏹️ ▶️ Marco like most of the web languages, like the advanced scripting languages and stuff,

⏹️ ▶️ Marco it’s very, very easy to just inspect your variables and see what the class has

⏹️ ▶️ Marco and do crazy things to it and everything else. With Objective-C, a lot

⏹️ ▶️ Marco of that is possible. Some of it’s not. But it’s actually more possible

⏹️ ▶️ Marco than I thought it was. So one thing I’m doing is

⏹️ ▶️ Marco the model class has its own dictionary mapping column names

⏹️ ▶️ Marco to their values.

⏹️ ▶️ Casey Oh, that’s so awful, but carry on.

⏹️ ▶️ Marco Wait, hold on.

⏹️ ▶️ Casey Go

⏹️ ▶️ Casey, Marco on. Well, it’s awful.

⏹️ ▶️ Casey Well, it’s awful in that coming from a.NET

⏹️ ▶️ Casey background and C sharp background, that is not at all how I would handle it. But in Objective-C, that

⏹️ ▶️ Casey probably is exactly how I would handle it. So I’ll tell you the other approach when you’re done. So I’m sorry, carry

⏹️ ▶️ Casey on.

⏹️ ▶️ Marco No, please tell me now.

⏹️ ▶️ Casey Oh, all right. So you’ve just lost the floor for an hour and John, you might as well just hang up.

⏹️ ▶️ Casey So one of the things I’ve been wanting to talk about on ATP for a long time is having a leg

⏹️ ▶️ Casey in both the.NET and the Objective-C and Cocoa worlds is that

⏹️ ▶️ Casey there’s a lot of obvious differences between the two platforms. And by and large,

⏹️ ▶️ Casey I really, really like the decisions that Apple’s made. And my friend, Jamie Pinkham, said to me

⏹️ ▶️ Casey once, when I was complaining about, for example, how convoluted handling dates

⏹️ ▶️ Casey are within COCO, he said, and I was saying, oh, well, why isn’t there just a date class that handles

⏹️ ▶️ Casey everything? And he said it more eloquently than I’m about to recount it, but he said something to the order of,

⏹️ ▶️ Casey you know, is it really that complex, or is it just properly abstracted? And it was one of those,

⏹️ ▶️ Casey you know, total mind explosions. And I was like, you know what, you’re actually right about that. think that

⏹️ ▶️ Casey Cocoa and Cocoa Touch are really, really well done. However, reflection in Cocoa

⏹️ ▶️ Casey and Cocoa Touch, not as well done as I would like. So let’s

⏹️ ▶️ Casey give you an example by way of how would I have done the same thing in.NET. And this all cued

⏹️ ▶️ Casey for me when you tweeted about three or four days ago about what do you call

⏹️ ▶️ Casey the thing that represents the unique identifier for an object. Naturally,

⏹️ ▶️ Casey in most languages, that would be ID. But in Objective-C, you can’t really do that

⏹️ ▶️ Casey because ID

⏹️ ▶️ Casey, Marco is a key. That’s not true,

⏹️ ▶️ Marco actually. You can, it works just fine, which is a little bit scary, which is probably why you shouldn’t do it.

⏹️ ▶️ Marco, Casey Well, that’s right. But it does work.

⏹️ ▶️ Marco You can name a variable ID. Mine was even type ID. That’s,

⏹️ ▶️ Casey God, that makes me hurt so bad. But the point I’m driving at is whether or not it’s technically allowed,

⏹️ ▶️ Casey it’s just not a good plan. And I think we can all agree about that. So what would I have done in.NET?

⏹️ ▶️ Casey What’s really great about.NET is reflection is, in my personal opinion, a first-class

⏹️ ▶️ Casey portion of the language, and.NET is really metadata heavy. What that means is,

⏹️ ▶️ Casey when I have what a.NET programmer would call field, but a Objective-C

⏹️ ▶️ Casey programmer would call an IVAR, basically a variable within a class, I can actually decorate

⏹️ ▶️ Casey that variable with arbitrary things that we call attributes.

⏹️ ▶️ Casey If you imagine a class definition, you can say that you have a variable that’s

⏹️ ▶️ Casey called unique identifier, for example. Well, you can put an attribute that’s associated

⏹️ ▶️ Casey with that variable, and that attribute is actually an instance of a class

⏹️ ▶️ Casey that inherits from a certain base class called, guess what, attribute. So I could make an attribute

⏹️ ▶️ Casey that decorates that field that specifies what the column name

⏹️ ▶️ Casey is for that IVAR. So let me play this back. I’ve got a class,

⏹️ ▶️ Casey I’ve got a class that’s in my application that may

⏹️ ▶️ Casey or may not use the same terms as I want to use in my data store.

⏹️ ▶️ Casey So I could call whatever this is, this variable, like I said,

⏹️ ▶️ Casey unique identifier, I could call that unique identifier in my C-sharp

⏹️ ▶️ Casey code, but I could decorate it with an attribute that says, hey, when you go back to the database,

⏹️ ▶️ Casey it’s actually called ID. And so that’s really, really powerful,

⏹️ ▶️ Casey being able to easily, and that’s the key here, easily introspect and reflect upon yourself

⏹️ ▶️ Casey and see what metadata you have about your own classes. And I

⏹️ ▶️ Casey use this constantly. When I first learned about it, it was one of those things where I had a hammer, so everything

⏹️ ▶️ Casey was a nail. And I’m not proud of that. But as I’ve gotten

⏹️ ▶️ Casey to be a more mature programmer, I still use this all the time. And you can write your own custom attributes,

⏹️ ▶️ Casey I said, you can use a ton of existing attributes, but being able to decorate your code

⏹️ ▶️ Casey and, and give yourself help on what to do with your code is

⏹️ ▶️ Casey the most powerful thing in the world. So to bring this back to Coco, what I would have liked to have

⏹️ ▶️ Casey been able to do is do the same thing, or for you to have been able to do is to do the same thing and have this Ivar

⏹️ ▶️ Casey that’s maybe called identifier, but in the database is called ID. And you don’t have

⏹️ ▶️ Casey to have a stupid freaking dictionary or hash table or whatever the case may be, hanging

⏹️ ▶️ Casey out doing that conversion. It’s all in line. It’s a first class

⏹️ ▶️ Casey part of that class. Did that make any sense at all?

⏹️ ▶️ Marco It did. That’s actually really cool. Because, I mean, I don’t even I think,

⏹️ ▶️ Marco I think there actually is buried in the runtime, a way in Objective-C

⏹️ ▶️ Marco to attach arbitrary objects to any NS object, but I don’t

⏹️ ▶️ Marco, Casey think Oh, there certainly is. Be

⏹️ ▶️ Marco exposed. And either way, you probably shouldn’t be doing things with that.

⏹️ ▶️ Marco There’s a lot of things with designing low-level model and

⏹️ ▶️ Marco reflection-type classes and things like that. There’s a lot of times where there’s something you can do that

⏹️ ▶️ Marco you probably shouldn’t do, and a lot of room for terrible hacks.

⏹️ ▶️ Casey Right, and you could do an associated object. But that’s a little bit different, because that’s more of saying,

⏹️ ▶️ Casey I’m probably to butcher this because I haven’t done it in a while, but if memory serves, that’s saying, hey, for this

⏹️ ▶️ Casey instance of this class, I want to have this arbitrary object associated with it. Whereas what I’m talking

⏹️ ▶️ Casey about is at a class level, I’m defining an additional piece of metadata

⏹️ ▶️ Casey that’s part of that class definition. And again, it’s just extremely powerful. And I think you’re right, Marco.

⏹️ ▶️ Casey I think you can do a lot of this with Objective-C. And I’ve looked into reflection in Objective-C, and

⏹️ ▶️ Casey a lot of it is possible, a whole heck of a lot of it. But the thing

⏹️ ▶️ Casey that’s crummy about it, and we’ve complained about this as a threesome before, is that you’ve got to drop into the C

⏹️ ▶️ Casey runtime. You were saying this just a few minutes ago. You’ve got to drop into the Objective-C runtime, which is

⏹️ ▶️ Casey all straight C, which once you get used to the cushy world of Objective-C, it’s just,

⏹️ ▶️ Casey ugh,

⏹️ ▶️ Marco it’s gross. It’s not that, I mean, you know, I had to write Maloch and Free earlier today for the first time in a

⏹️ ▶️ Marco while, but, you You know, it’s like, it’s like 10 lines of C in the middle of this wonderful,

⏹️ ▶️ Marco, Casey objective

⏹️ ▶️ Marco C, cushy playland. I mean, it’s not, it’s not that bad.

⏹️ ▶️ Casey So, so what would you have done in PHP? And John, I’d like to know where Pearl fits in

⏹️ ▶️ Casey if we ever give you a chance to talk, but like what would you have done if you were trying to solve the same problem in PHP?

⏹️ ▶️ Marco Well, I have solved the same problem in PHP. I, I, I use for Instapaper for the magazine,

⏹️ ▶️ Marco for the new things. I, I do use my own MVC framework that is very thin and lightweight,

⏹️ ▶️ Marco so I can use SQL directly. All the same goals, actually. Well, most of the same goals.

⏹️ ▶️ Marco And so I have solved this problem in PHP. And I basically

⏹️ ▶️ Marco I think I do roughly the same thing with, like, you know, storing the attributes of

⏹️ ▶️ Marco a model object as a dictionary of, you know, strings to value of, you know, keys to values and those

⏹️ ▶️ Marco keys match database column names. And, you know, there’s all sorts

⏹️ ▶️ Marco of things you can do. By the way, I love if Merlin is actually listening to this, and if he’s still listening, I’m

⏹️ ▶️ Marco getting him back so hard for all that comic book talk and back to work.

⏹️ ▶️ Marco This is glorious. So, you know, it there’s always

⏹️ ▶️ Marco this is one of the reasons why I like doing this kind of programming at programming at this level, solving these kinds of problems,

⏹️ ▶️ Marco that they’ve been solved a million times before, even though my implementation might not be very good for some people

⏹️ ▶️ Marco or for some things or for myself even. I love it because there’s so many

⏹️ ▶️ Marco design decisions that you can make that really do have a pretty big impact. So

⏹️ ▶️ Marco one of the things, and I don’t wanna talk about this for too much of the show, just because I think it will get a little bit boring,

⏹️ ▶️ Marco even for people who aren’t Merlin, but I think one of the things about,

⏹️ ▶️ Marco one of the hardest parts about this is like, how do you expose the database fields on the object,

⏹️ ▶️ Marco and how much code or boilerplate has to be written

⏹️ ▶️ Marco in the subclasses, so in the model classes, how much do you have to do, and how

⏹️ ▶️ Marco are the columns represented? So in my thing, I actually do a very similar trick to what Core

⏹️ ▶️ Marco Data does, because you can tell at runtime, which I actually don’t know why you can

⏹️ ▶️ Marco tell this at runtime, but can, you can tell at runtime whether a property

⏹️ ▶️ Marco was declared dynamic and or whether rather whether its implementation was declared dynamic

⏹️ ▶️ Marco and whether and what you know if it has custom getters or setters. All that stuff is available at runtime

⏹️ ▶️ Marco from the runtime APIs. So I’m basically making it so that you can you

⏹️ ▶️ Marco can set and get arbitrary column names just via a dictionary API. But

⏹️ ▶️ Marco it also treats any dynamic property as a database column. And then it does

⏹️ ▶️ Marco useful things. So you can have a property that’s an NSURL. And if you

⏹️ ▶️ Marco declare it dynamic in the implementation file, then the runtime will see that. And so

⏹️ ▶️ Marco at runtime, it’ll say any access to and from that is the database field named that.

⏹️ ▶️ Marco And then you can just call save, and it works. and you can call the query functions,

⏹️ ▶️ Marco get them, and it maps into them on read. So it’s

⏹️ ▶️ Marco a very simple model layer. This is one of the

⏹️ ▶️ Marco reasons why I write my own model layers in the languages that I like.

⏹️ ▶️ Marco I don’t usually like the model layer to have to do that much. And specifically,

⏹️ ▶️ Marco I treat databases the way that most programmers of previously high traffic web applications

⏹️ ▶️ Marco treat databases, which is infrequently and gently. And so

⏹️ ▶️ Marco I don’t like ORMs and really these crazy, very high

⏹️ ▶️ Marco functioning model type APIs, where they’ll go look up associated objects

⏹️ ▶️ Marco for you and do extra queries on your behalf. And I don’t like query builders. I

⏹️ ▶️ Marco like to write the query myself so I can choose exactly how it’s querying the database and optimize it.

⏹️ ▶️ Marco And I don’t like anything that creates the tables for me. I don’t like the core data GUI

⏹️ ▶️ Marco about the model declarations and the migrations. Oh, migrations

⏹️ ▶️ Marco are rough. So I’m basically doing something that

⏹️ ▶️ Marco it is more of a convenience wrapper than a functional wrapper if that makes sense. Like it’s not

⏹️ ▶️ Marco doing a whole bunch of magic. It’s just getting rid of boilerplate. Does that

⏹️ ▶️ Marco make sense?

⏹️ ▶️ Casey It does. And I guess to me, I view a model

⏹️ ▶️ Casey as the buffer between the completely myopic database world

⏹️ ▶️ Casey and the completely myopic application level. And I agree with you

⏹️ ▶️ Casey that a model should be extremely dumb. It should basically be a bucket and nothing else.

⏹️ ▶️ Casey But I would I would hate not having it around, because I want my application code to speak

⏹️ ▶️ Casey to classes and very little else, and I want my database to speak to

⏹️ ▶️ Casey itself in some intermediary layer that translates from database to model and back. And

⏹️ ▶️ Casey I think we’re saying the same thing. But when you said, I’m writing a model and I can’t believe I’m doing

⏹️ ▶️ Casey that, etc., etc., it struck me funny because I would hate not to have one.

⏹️ ▶️ Marco one. Yeah.

⏹️ ▶️ Casey, Marco So John.

⏹️ ▶️ Casey Yeah, I was about to say, John, where do you land on all this?

⏹️ ▶️ John I’ll get back to something that Marco said in the beginning when he drew this topic about how he was making his own model

⏹️ ▶️ John class, and that’s probably a mistake. In case he said he thought it wasn’t. And

⏹️ ▶️ John thinking about this topic, I see that a lot. It’s kind of like a class system

⏹️ ▶️ John pun for programmers. I don’t

⏹️ ▶️ John, Marco think you have to

⏹️ ▶️ John label your puns. Maybe Marco has a lot of, but I mean it like, you know, you know how I mean

⏹️ ▶️ John it. Maybe Marco has not seen this as much as Casey, who’s been

⏹️ ▶️ John out in a J-O-B job for longer, but I see it all the time. People

⏹️ ▶️ John can draw distinctions of all sorts with programmers based on their experience, what language they use, what their education is or whatever,

⏹️ ▶️ John and this distinction, I think, is the most important one, much more so than any of those other things. No matter what their education

⏹️ ▶️ John is, how long they’ve been doing it, what language they’re writing in, I usually tend to bin

⏹️ ▶️ John programmers into two groups. One is the programmers who

⏹️ ▶️ John take something that someone else wrote and use it to make a program. They learn Ruby on Rails

⏹️ ▶️ John and they make a web application. They learn UIKit and they make an iOS

⏹️ ▶️ John application. And those people distinguish between

⏹️ ▶️ John the magical elves that make the things they’re going to use to write their program and their program.

⏹️ ▶️ John And the second set of people make no distinction between the things they’re

⏹️ ▶️ John using to write their program and their program. It’s all one continuous thing. And those are the people who are going to

⏹️ ▶️ John write their own thing, even though the vendor provides one. Or those are the people who are going to write

⏹️ ▶️ John their own web frameworks, or their own blog engines, or like, in the extreme case, their own language.

⏹️ ▶️ John Like, it’s a complete continuum, and there’s no hard and fast line between these are the words that I

⏹️ ▶️ John type to make my program work, and this is my program. Like, I don’t know if you want to call tool builders,

⏹️ ▶️ John because you don’t necessarily have to be that type of thing, but there are some people who will never cross that line. And in every

⏹️ ▶️ John environment they find themselves in programming, they will draw that distinction somewhere and say, that

⏹️ ▶️ John is other, and I don’t do that, and that is magic, and I call those things to make my program work. And then my program is

⏹️ ▶️ John a series of conditionals and loops variables in classes or whatever, they use that thing to do their work. Uh,

⏹️ ▶️ John and I think that that distinction is like, like when I

⏹️ ▶️ John heard Bargasol, I probably shouldn’t write there that I probably should write my own model class,

⏹️ ▶️ John being afraid to like trying to draw that line and like using it as a barrier and saying I shouldn’t cross over the line.

⏹️ ▶️ John Now one is like practicality, like maybe you shouldn’t write your own language and compiler to do this, you know, a tip calculator program or

⏹️ ▶️ John something. Right. Uh, so that’s one side of it. But the other side of it is that I see a lot of people who draw that line and are afraid to

⏹️ ▶️ John ever cross it. And everyone starts with that line because you don’t know what the heck you’re doing when you start out, right? But I would encourage

⏹️ ▶️ John everybody who thinks they can recognize that line to realize that line doesn’t exist. It’s all just one big continuum

⏹️ ▶️ John of code written by people. And there’s no reason you can’t write a better one of whatever it is that you’re

⏹️ ▶️ John using all the way up and down the chain. And in some cases you should. And obviously, you know, like

⏹️ ▶️ John knowing when you should and when you shouldn’t is a whole separate matter, but never like, you know, I wouldn’t,

⏹️ ▶️ John Even Marco, if there’s a reason not to do it, it’s not because, oh, I’m going to screw it up. Because

⏹️ ▶️ John the people who made those things are, like, at a certain point, they’re just other people, too, right? Who made FMDB? It’s just

⏹️ ▶️ John another guy, right? And the only way you will ever get good at doing something

⏹️ ▶️ John like that is to decide, I’m going to make my own thing here. And then your thing might not be as good,

⏹️ ▶️ John but the fifth version of your thing will be as good. And then you’ve just become one of those people. Now that line is gone.

⏹️ ▶️ John So that’s my take on this whole meta topic. I’m going to do a meta topic

⏹️ ▶️ John for a metadata topic. Get it? I’m double meta. And as for the

⏹️ ▶️ John actual things you’re all talking about there, I don’t want to go, oh, Simpsons did it on you. But I always do. Simpsons

⏹️ ▶️ John did it, right? So all this stuff is kind of all to have in the Perl world. And

⏹️ ▶️ John the path that I’ve sort of traveled, and I think a lot of the Perl community traveled on the same topic

⏹️ ▶️ John is kind of, you know, in the beginning,

⏹️ ▶️ John you’ve got a way to send SQL queries somewhere, and that’s annoying, and someone writes some nicer

⏹️ ▶️ John way to wrap that up, and that’s nicer, but then you’re like, okay, well, now I want to make some, like, classes

⏹️ ▶️ John associated with things that are going to be associated with tables, and it’s kind of annoying to write all that, which

⏹️ ▶️ John fields are associated with which columns, and like Marco was getting to, how much do I have to write? Like, after you’ve

⏹️ ▶️ John done 10 or 20 of those things, at a certain point, you’re like, can I type less and get the same effect? All right?

⏹️ ▶️ John And then you’re like, you know what, can I type even less? You go like the, you know, the active record rails type thing, where you’re like,

⏹️ ▶️ John why do I have to type anything? Can’t I just inspect the database and figure out what all the columns are and do all that stuff for

⏹️ ▶️ John me? And it’s like, look, I can type one line and my whole thing is done, right?

⏹️ ▶️ John And, you know, you can do that in dynamic languages. You can probably do that in Objective-C if you really wanted to get down and dirty

⏹️ ▶️ John with the Objective-C runtime, although you probably don’t. probably don’t, but just don’t have anything. Just

⏹️ ▶️ John inspect the database, figure out the classes, figure out the tables, make your classes based

⏹️ ▶️ John on them, have a thing that manages the conventions for naming, and all this other crap.

⏹️ ▶️ John And I think the next step beyond that, which I found probably the biggest

⏹️ ▶️ John leap, the first biggest leap was the one where you get into the race to see how little

⏹️ ▶️ John typing you can do to get useful work done. And the second biggest leap, I think, is when you get to the point

⏹️ ▶️ John where you realize that tying your classes to the structure of your database tables is a terrible idea, not

⏹️ ▶️ John just in terms of the field names, but structurally, period. Because maybe this doesn’t happen

⏹️ ▶️ John in small projects or projects with a single developer, but in large projects and big companies that evolve

⏹️ ▶️ John over many, many years, inevitably, the structure of your database has almost no relation to the way you want your

⏹️ ▶️ John application to work, like not at all, not on the table basis, not on anything. Like it’s just ridiculously divergent.

⏹️ ▶️ John And in some ways, you could say, well, that’s bad, because things are diverging and they’re getting all messed up. But sometimes

⏹️ ▶️ John it’s necessary, because the way your data is structured has to evolve in a direction for performance or scaling

⏹️ ▶️ John reasons that has no bearing whatsoever on how you would like to deal with it in your application. So I think the next step

⏹️ ▶️ John in the sequence is to give yourself tools to get your data out of the database,

⏹️ ▶️ John but make sure you don’t tie any of what you guys are calling model objects, although I hate that term.

⏹️ ▶️ John You don’t tie any of the inner workings of your application to the structure or storage location or anything

⏹️ ▶️ John having to do with the stuff in the database. You still need some tool to make it so you don’t have to type a million lines of code every time you wanna get

⏹️ ▶️ John data out of the database and inflate your values into URL objects and data objects and do all that

⏹️ ▶️ John nice stuff. And you still want to be able to do, to not have to type that annoying boilerplate code,

⏹️ ▶️ John but you have to make another box on the graph and say, okay, this is my code that gets the

⏹️ ▶️ John crap out of the database. This is what’s get created from the data in the database. And those two are pretty

⏹️ ▶️ John much entirely unrelated. And actually, this helps in development too, because you can mock out the stuff that you don’t have in the database.

⏹️ ▶️ John And other stuff, you can just have text files. There’s other stuff you can just hard code stuff. Or like, the rest of your application won’t care,

⏹️ ▶️ John because it deals with things that have no relation to the storage location or structure of the thing.

⏹️ ▶️ John And sometimes, even when you’re doing a project yourself, that can free you to say, this is the correct table

⏹️ ▶️ John structure, which you know from just doing database stuff, you know which queries are going to be efficient, what indexes you need, what things should be normalized and

⏹️ ▶️ John not. But when I’m in my application, it would be convenient if the structure was really like this. So make

⏹️ ▶️ John the things that your application deals with look the way they’re most convenient for the application to deal with and then have some sort of

⏹️ ▶️ John layer Which yes is sometimes annoying to write But it will save you later some sort of layer that translates between the two

⏹️ ▶️ John in sometimes Byzantine ways So that

⏹️ ▶️ John that I think is a case where all the things you’re talking about with a reflection come in at every level of

⏹️ ▶️ John that because the thing you make that like Makes it convenient for you to get stuff out of database that needs metadata and then the next thing that you make that

⏹️ ▶️ John that takes the data from the database and and puts it into the things that your application

⏹️ ▶️ John is going to deal with, like your application’s idealized view of the world that doesn’t reflect the possible

⏹️ ▶️ John nastiness of the database because of weirdness. That needs some metadata to do that thing because you don’t want to write

⏹️ ▶️ John that code up all by yourself. And then finally your application, your top-level thing, gets to deal with objects

⏹️ ▶️ John that look like, that are, you know, magically delicious, that are just like, wow, this is so convenient. This is exactly what I

⏹️ ▶️ John needed for this, for my application. It is, you know, it’s your idealized view of the world. wouldn’t it be

⏹️ ▶️ John great if we just had three objects and they did this? And you’re like, it’s so hard to do that when you’re an experienced programmer because you think,

⏹️ ▶️ John but I can’t, that object can’t exist to do that because I know that’s going to be on these two tables. And this information is

⏹️ ▶️ John from a third table. And so you end up making things that are tied to your database table. So

⏹️ ▶️ John that’s more or less the path I’ve walked on this topic in Perl and in other

⏹️ ▶️ John languages. And some people, they call it like anti-ORM backlash because

⏹️ ▶️ John the ORM is like the active record phase. and you get to that phase and you realize you’re kind of in a dead end and you’ve done a terrible thing.

⏹️ ▶️ John But you’re not really. Like, you’ve created something that’s useful, but you

⏹️ ▶️ John need something else as well. So everything that you’ve done

⏹️ ▶️ John is helping you move forward. There’s just another place where you can also move forward.

⏹️ ▶️ John, Marco That was a lot of stuff.

⏹️ ▶️ Marco Yeah, I’ll just let that settle in. I think you’re right,

⏹️ ▶️ Marco though, that there’s always this kind of battle

⏹️ ▶️ Marco between the objects that are fully abstracted from the data and the messiness

⏹️ ▶️ Marco or the structure of the database. One of the things that I think

⏹️ ▶️ Marco core data does a little bit badly for my taste is that it’s

⏹️ ▶️ Marco too much on that object side where core data, even though it is

⏹️ ▶️ Marco based on a database storage junction and in many ways behaves like a database.

⏹️ ▶️ Marco In many ways, it doesn’t let you treat it like a database. And so you’re kind

⏹️ ▶️ Marco of like there’s a whole class of operations that are very easy to do in

⏹️ ▶️ Marco a database. Things like a lot of things involving multiple records or batches or ranges or things like that.

⏹️ ▶️ Marco Things that core data either can’t do very well or can’t do at all.

⏹️ ▶️ John Yeah, it’s trying to give you the idealized object version, but not letting you say anything about the

⏹️ ▶️ John database. You don’t worry about the database. You just tell us how you want the idealized view of the world in your application,

⏹️ ▶️ John and we’ll just persist to that. And you’re like, really, I would like to have some influence over that process,

⏹️ ▶️ John because I have some ideas that you may find interesting.

⏹️ ▶️ Marco Right, exactly. And a lot of times, it’s also necessary for performance.

⏹️ ▶️ Marco When you have an app that has a ton of data or that has

⏹️ ▶️ Marco maybe one table or one object type that has a lot of entries, and they’re all very small or something, and you want to do

⏹️ ▶️ Marco some kind of batch, like that kind of thing.

⏹️ ▶️ Marco, John Yeah, because you structure your data. So because

⏹️ ▶️ John you know the seven queries that your application is going to run most of the time. And you know what will

⏹️ ▶️ John make those queries fast and what will not make them fast. And core data, as far as I’m aware, gives you no way to

⏹️ ▶️ John influence the way it stores your stuff. Like you just make your convenient object graph, and you have to kind of like

⏹️ ▶️ John either kind of guess or intuit or understand enough about a core data’s implementation of how it’s going to lay that out and have to know

⏹️ ▶️ John what operations does core data make available and what queries will that translate into and will those be efficient. And that’s like,

⏹️ ▶️ John you would rather just, you know, look, I know these are going to, like, I bet applications probably just run, like, three

⏹️ ▶️ John possibly performance critical queries all the time. And you just say, look, Core Data,

⏹️ ▶️ John just do this. This is all I want. Everything else, I don’t care what you do, but these are the three essential queries. And it’s like, nope, I will

⏹️ ▶️ John structure your stuff for you. You don’t worry about it. So like, for small applications, that’s fine. But anyone who’s done a web

⏹️ ▶️ John application, it’s not like they’re taking you to Core Data with web allocations. But at a certain point, native applications

⏹️ ▶️ John start, I mean, not that they’re not web scale, but the timing is much more critical and the devices

⏹️ ▶️ John are slower. So, at a certain point, even a native application, you would like to have

⏹️ ▶️ John that kind of influence, which is why, Marco, you keep coming back to doing your own thing with raw

⏹️ ▶️ John SQLite, because then you have control over that.

⏹️ ▶️ Marco Exactly, because you have the SQLite on one side, which is SQLite, however

⏹️ ▶️ Marco you say it. I’m going to pronounce it every different

⏹️ ▶️ Marco, John way during the show.

⏹️ ▶️ John You shouldn’t. Don’t let me bully

⏹️ ▶️ Marco you into my way of saying it. You say it however you want. isn’t it officially something like SQLite?

⏹️ ▶️ John Yeah, I don’t know. The official one is

⏹️ ▶️ John, Marco either. I say it the way I say

⏹️ ▶️ Marco it. Anyway, SQLite. We’re going to say it every way. All right. That thing, you have that

⏹️ ▶️ Marco on one side, and that doesn’t know anything about objects, about your objects and your code.

⏹️ ▶️ Marco It’s totally just raw. There is no attempt to even

⏹️ ▶️ Marco do anything higher level than just database rows, and that’s it. Then

⏹️ ▶️ Marco on the other end, you have core data, which is all about the objects and their mappings

⏹️ ▶️ Marco and it doesn’t expose anything about the database and pretends like the database isn’t

⏹️ ▶️ Marco there to you, the user of it. And so my thing is kind

⏹️ ▶️ Marco of in the middle. And I actually do intend to open source this. I’m writing

⏹️ ▶️ Marco with the intention of open sourcing it and writing it to be a standalone piece so it can be. But,

⏹️ ▶️ Marco oh, who knows when I’ll get to that. I do intend to do that. Maybe later this fall. And,

⏹️ ▶️ Marco you know, I, my thing, I want to be in the middle of that continuum, because I feel like there isn’t,

⏹️ ▶️ Marco there aren’t enough choices there. And what’s there, a lot of, what’s there is basically a

⏹️ ▶️ Marco whole bunch of people like me making the things for themselves to varying, with varying degrees of success, varying

⏹️ ▶️ Marco degrees of people using it and reporting bugs, and varying degrees of functionality. And

⏹️ ▶️ Marco it’s a lot like to-do apps. Like, if you’re the kind of person who can make one of these model layers,

⏹️ ▶️ Marco or something like this. The chances that you’re going to be happy enough with somebody else’s to want

⏹️ ▶️ Marco to use theirs instead of making your own is pretty low. And

⏹️ ▶️ Marco so, you know, for me, you know, I’m doing my own thing like I usually do, which is

⏹️ ▶️ Marco sometimes good, sometimes bad. And so, yeah, I’m making

⏹️ ▶️ Marco this thing kind of between SQLite and Core Data, and I’m going to

⏹️ ▶️ Marco use it, and we’ll see what happens, I guess.

⏹️ ▶️ John And I think in native applications, again, not that they’re like small, small, but like

⏹️ ▶️ John you’re not writing a system for a product

⏹️ ▶️ John that’s going to have seven incarnations. Like, you know, if you, if you are making, let me think of something like this, like

⏹️ ▶️ John not Gmail, not LinkedIn, maybe Facebook, maybe some sort of

⏹️ ▶️ John big giant web service used by millions of people that has 10 different ways to interface with it. But

⏹️ ▶️ John even just within their own company, that’s where you really want to have your data access

⏹️ ▶️ John layer, and then above that, have your object layer that gives you the idealized representation.

⏹️ ▶️ John And then have a whole bunch of other people in the company or whatever writing business logic, writing automation

⏹️ ▶️ John things, writing stuff. And all they ever use is the idealized view of the

⏹️ ▶️ John product, which has an ever-changing relationship with how things

⏹️ ▶️ John are actually stored or used. so that you’re isolating the whole rest of the people. I just talked about this line between the

⏹️ ▶️ John people who are writing the thing and people who are using the thing. Individual programmers shouldn’t see that line, but if you’re trying to

⏹️ ▶️ John scale up a company, it’s a good idea to have people building at various layers. And you want everyone who’s just

⏹️ ▶️ John writing, you know, a bunch of reports that run, or a bunch of jobs that do maintenance stuff, or the people who write the web

⏹️ ▶️ John front end, or the people who write the native app, you want all of those people to be using an interface

⏹️ ▶️ John that has almost no relation to the implementation if you could possibly help it. And then another set

⏹️ ▶️ John of people dealing with how that idealized view of the product interfaces with the data

⏹️ ▶️ John store back end. Because they’re going to constantly have to change it. They’re going to use different data stores. They’re going to rearrange stuff. They’re going to do normalized tables. They’re

⏹️ ▶️ John going to rename things. They’re going to do different versions of tables. And you don’t want anyone else to see

⏹️ ▶️ John that. But when you’re just doing one native iOS application, maybe with a web server or something, especially using

⏹️ ▶️ John a different language for it, the web part of it, it’s probably not critical that you make this kind

⏹️ ▶️ John of enterprise-y distinction. I just offered it up as the next evolution

⏹️ ▶️ John of, so you’ve gone and done yourself an active record type thing, which queries

⏹️ ▶️ John the database and gets the structure and builds all your classes on the fly, according to some convention with the pluralizer and all this other stuff,

⏹️ ▶️ John and you’re still sad. Maybe it’s because you actually want that next thing.

⏹️ ▶️ John Awesome.

⏹️ ▶️ Casey Well, why don’t you tell us about something that’s pretty awesome, and then I want to speak in favor of core data briefly, and then we can

⏹️ ▶️ Casey give up on this probably extremely boring topic.

⏹️ ▶️ Marco All right. Hang in there, Merlin. You’re almost there. All right.

⏹️ ▶️ Marco This week, we are sponsored once again by Hover. Hover is high

⏹️ ▶️ Marco quality, no hassle domain registration. So they believe that everyone

⏹️ ▶️ Marco should be able to take control of their online identity, have your own domain name, and they

⏹️ ▶️ Marco make it easy to do so. They, Co, Com, TV, tons of country code TLDs.

⏹️ ▶️ Marco You know, there’s all these TLDs out there now. They keep making new ones. Hover keeps adding them. it’s great.

⏹️ ▶️ Marco So they take all the hassle and friction out of owning and managing domain names. Now

⏹️ ▶️ Marco I bet everyone listening to the show is probably nerdy enough to have bought a domain name in the past. And

⏹️ ▶️ Marco if you bought a domain name anywhere else, I imagine you were not that happy with the experience because

⏹️ ▶️ Marco I’ve bought them in a lot of places and they’re pretty rough.

⏹️ ▶️ Marco Most of the places are pretty rough. Hover is to me like a breath of fresh share. Like, they are just

⏹️ ▶️ Marco so easy. They’re honest. They don’t try to upsell you with all sorts of like weird sleazy

⏹️ ▶️ Marco stuff. There’s no like, there’s no checkbox on checkout that’s like, don’t not stop sending

⏹️ ▶️ Marco me the newsletter that doesn’t sell my privacy for $10 a month. Like, they don’t try to mislead you. They don’t try to

⏹️ ▶️ Marco like get all sleazy and get more money out of you. It’s just honest, direct, straightforward domain

⏹️ ▶️ Marco sales. And their management system is very good too. You know, they it’s, it’s well designed.

⏹️ ▶️ Marco There’s, there’s easy access to all the features they offer and they do offer quite a lot and

⏹️ ▶️ Marco in fact they actually just added something new they added Google Apps for Business you can add Google Apps for Business

⏹️ ▶️ Marco to any domain from Hover new or old domains they even give you a free 30-day trial

⏹️ ▶️ Marco on that and then prices start at $6 a month per user it’s really

⏹️ ▶️ Marco great so anyway go to slash ATP you can use promo

⏹️ ▶️ Marco code ATP to get 10% off and you should of course you should do that I mean, I use Dan’s promo

⏹️ ▶️ Marco codes forever, you can use ours. So use promo code ATP at

⏹️ ▶️ Marco to get 10% off any domain purchase and any service purchase. Hover’s a great company, really.

⏹️ ▶️ Marco They even have no hold phone service. You just call

⏹️ ▶️ Marco them Monday through Friday, 8am to 8pm Eastern, and you’ll be speaking to a live person. They will just pick

⏹️ ▶️ Marco up the phone and there’s a person. It’s not a bot. You don’t have to say, representative, track

⏹️ ▶️ Marco a package, none of that stuff. know, it’s I hate all those things are terrible. They know that too. They don’t do

⏹️ ▶️ Marco it. They give you only a human. It’s it’s just great. So go to slash

⏹️ ▶️ Marco ATP to get your next domain use promo code ATP for 10% off. Thanks a lot to hover for sponsoring the show.

⏹️ ▶️ Casey So to briefly speak in favor of core data, so my really crummy,

⏹️ ▶️ Casey although soon to be not crummy since it’s all straight UI kit, so it’s gonna look great in iOS seven.

⏹️ ▶️ Casey But my really crummy iPhone app, which I wrote basically as an exercise to teach myself how to write an iPhone

⏹️ ▶️ Casey app.

⏹️ ▶️ Casey, Marco And also- You know you

⏹️ ▶️ Marco can plug it, that’s allowed.

⏹️ ▶️ Casey Well, it’s called Fast Text and it’s embarrassing on iOS 6, but it’s gonna be brilliant on iOS 7

⏹️ ▶️ Casey because I’m going to change virtually nothing and it will all just look magical and pretty. But in any case,

⏹️ ▶️ Casey the app doesn’t do a whole heck of a lot. The point is to do one thing really quickly and that’s send

⏹️ ▶️ Casey a canned text message. So the idea is you pop open the app, you say who you wanna send it to, which is

⏹️ ▶️ Casey presumably a list of people that you’ve already set up, what message you’d want to send, or maybe I got that backwards. I think I did because

⏹️ ▶️ Casey I haven’t used it in a couple of days. But anyway, the point is you pick who, you pick what, and then you say go.

⏹️ ▶️ Casey And that actually uses Core Data. And that is actually a really, really

⏹️ ▶️ Casey great use of Core Data because candidly, it’s very, very simple. It’s two entities,

⏹️ ▶️ Casey it’s a total of like 10 attributes between the two entities, and it worked

⏹️ ▶️ Casey really well. And one of the things I liked so much about it And was that when I

⏹️ ▶️ Casey decided to add support for sending messages to email addresses as well as just phone numbers,

⏹️ ▶️ Casey I had to add a column, if you will, or an attribute

⏹️ ▶️ Casey to say, well, is this thing an email address or a number? And obviously I could have parsed that

⏹️ ▶️ Casey out, whatever. The point I’m driving at, though, is that I had to do a core data migration. And to be honest, for me, because

⏹️ ▶️ Casey this was such a simple use case, it actually worked really, really well. It was really nice.

⏹️ ▶️ Casey And I said in Xcode, hey, I’m going to make a new version of this model. Here’s what’s different

⏹️ ▶️ Casey about it. Then I wrote a couple of lines of code in my app delegate to handle it. And everything

⏹️ ▶️ Casey just happened magically. And I’ve actually had no real issues with core data.

⏹️ ▶️ Casey But to be fair, this is an extremely simple use case. And to me, I think that’s what’s great.

⏹️ ▶️ Casey This is core data’s bread and butter, is to do something really simple. All I want was

⏹️ ▶️ Casey a way in which I can persist a very small object graph, and that’s like

⏹️ ▶️ Casey out of the book, which I would look up if the developer portal was up. It’s like out of the book, exactly

⏹️ ▶️ Casey what Core Data is meant for. So I agree with what you’re saying that in a lot of ways, Core Data is this really big, scary abstraction

⏹️ ▶️ Casey that you don’t want to just relinquish your life to, so to speak. But for me, it worked out really, really

⏹️ ▶️ Casey well. You could

⏹️ ▶️ John have just used property lists. I mean,

⏹️ ▶️ John, Casey not

⏹️ ▶️ John just the property list backend of Core Data, but like literal property lists, because the volume of data is so

⏹️ ▶️ John little. You basically made the sample application they would have you make if you’re doing the core

⏹️ ▶️ John, Casey data demo.

⏹️ ▶️ John What are you saying, man? No, I mean for the core data part. Like you said, two entities and not a lot of

⏹️ ▶️ John them. Because I don’t know how many text messages your application can store as a limit, but presumably

⏹️ ▶️ John people are not going to store 10,000 canned text messages because you’ve defeated the purpose of the application. You’re supposed to

⏹️ ▶️ John find it quickly. So yeah, you could have gotten away with the property list. And in fact, that’s what a lot of people did

⏹️ ▶️ John for a long time. I mean, at a certain point, it becomes ridiculous. But

⏹️ ▶️ Casey you’re absolutely right. And a lot of fast techs, a lot of the purpose of it was in a series

⏹️ ▶️ Casey of engineering lessons and exercises for myself. And part of the reason I used Core Data was just,

⏹️ ▶️ Casey I want to learn Core Data. I want to see what it’s all about. So when everyone complains and moans about it, I can say, oh, yeah, you know, I understand

⏹️ ▶️ Casey why you’re saying that. And I could complain and moan with the next guy. But for

⏹️ ▶️ Casey me, it actually worked out really nicely.

⏹️ ▶️ John Yeah, no, you should have plugged your program sooner. Because you kept mentioning your program, and I never bothered to look up what it was. And I looked up what it

⏹️ ▶️ John was, like, I don’t know, maybe you tweeted something about it this week. And I’m like, oh, that’s a useful program. You should, you know. I don’t

⏹️ ▶️ John know if there’s 100 other programs out there that do that. And obviously, I don’t send text messages to people. So that’s why I’m not

⏹️ ▶️ John in that field. But that’s exactly, I think that would be, is this a common category

⏹️ ▶️ John of program, the canned text message sender?

⏹️ ▶️ Casey Well, I don’t know if it’s common. But it was actually, it’s funny hearing Marco

⏹️ ▶️ Casey talk about a lot of the things that he’s talked about, both in Build and Analyze and here. It was a very funny

⏹️ ▶️ Casey exercise, an interesting exercise for me, because I’d love to be able to just magically invent

⏹️ ▶️ Casey the next Instapaper and be able to do something independently and take

⏹️ ▶️ Casey, Marco that whole time. Right, and that

⏹️ ▶️ Casey doesn’t have any competition. Right, exactly. But what I’m driving at is, it would be cool to work

⏹️ ▶️ Casey for myself, but I feel like I need that magical idea. And so flashback to, I think it was iOS 4,

⏹️ ▶️ Casey when I want to say it’s MF message composed view controller, or whatever it is. Basically they added the ability

⏹️ ▶️ Casey for an app to send text messages. And so I found that out at

⏹️ ▶️ Casey that WWDC, which I guess was 2011, is that right? It doesn’t matter. I found out at that WWDC

⏹️ ▶️ Casey that they’re going to do this. I was like, I know what I can do with that. And so I had to figure out how

⏹️ ▶️ Casey to build and ship the app in order to, I

⏹️ ▶️ Casey wanted to be in on day one of iOS 4. And so the reason I think it’s so funny is

⏹️ ▶️ Casey because in the smallest, littlest way, this was

⏹️ ▶️ Casey a Casey-sized exercise in doing the sorts of things that many of my peers

⏹️ ▶️ Casey do for a living, in that I had an idea and I needed to execute, and I needed to execute by a

⏹️ ▶️ Casey certain date, not unlike what, say, Underscore did with Feed Wrangler. And it was just a very funny thing,

⏹️ ▶️ Casey and that’s why it was really rewarding, because I was able to get this little appropriately

⏹️ ▶️ Casey sized view of the world that a lot of my good friends and peers have.

⏹️ ▶️ Casey I know that was kind of a side note, but it’s fun. It’s a very simple app, but

⏹️ ▶️ Casey it’s very useful and I use it all the time.

⏹️ ▶️ John So if you didn’t write that app, if you went into the app store, have you looked at the competitors or there are other applications?

⏹️ ▶️ John, Casey Oh, there certainly are.

⏹️ ▶️ John Is there a well-known one that most people use that I would know about if I was into texting?

⏹️ ▶️ Casey I don’t know if there’s a well-known one. I mean, it’s

⏹️ ▶️ Casey, John because

⏹️ ▶️ John there’s no insta paper of the market.

⏹️ ▶️ Casey If there is, I don’t know it, to be honest. And I’ve never taken, the app was not a money making

⏹️ ▶️ Casey venture. In fact, I’ve probably put a couple hundred dollars into it that I haven’t gotten out. I mean, I’ve

⏹️ ▶️ Casey gotten paycheck, I’ve gotten checks from Apple for it, but I’ve spent more between the $100

⏹️ ▶️ Casey annual developer account and paying 40 bucks or whatever it was for

⏹️ ▶️ Casey Opacity Express to hand draw the world’s worst icon.

⏹️ ▶️ Marco I like it.

⏹️ ▶️ Casey I was pretty proud of it, to be honest, but if I’m honest with myself, it’s pretty rough.

⏹️ ▶️ John I think I saw the icon, and if it’s what I’m thinking of, it’s no good.

⏹️ ▶️ Casey Thank you for not letting me down, Sean.

⏹️ ▶️ John That actually is what, speaking of applications, that is a lot of

⏹️ ▶️ John the time what separates the application that someone makes and barely makes back its money in developer

⏹️ ▶️ John fees and the one that does is putting in a little bit of extra money

⏹️ ▶️ John for a designer to do your icon and like getting the UI

⏹️ ▶️ John to look nicer. Like window dressing, marketing type, not marketing in terms of like paying money to advertise or whatever, but like

⏹️ ▶️ John when someone sees your page, what is the impression they get? And Apple hammers in this like crazy in W3C, like

⏹️ ▶️ John the first impression someone gets when they glance at your application, uh, you know, has no

⏹️ ▶️ John reflection on the functionality in your application because if there are a lot of these applications and can text messages, what’s going to

⏹️ ▶️ John differentiate them is like the one that like make someone feel good to have it on their home screen, feel good

⏹️ ▶️ John to launch it and use it. And every time they do, they feel good about that experience. That’s why I was seven is such an opportunity because

⏹️ ▶️ John all of a sudden these applications that people used to feel good about using now they will not feel as good when they’re using iOS seven

⏹️ ▶️ John because this one’s will look old and you know, ugly and strange or whatever. So

⏹️ ▶️ John that could have been all that separated you from perhaps not Instapaper-level success, but at the very least,

⏹️ ▶️ John being in the black instead of the red on lifetime for this application is just a nicer icon, a

⏹️ ▶️ John little bit nicer UI. Oh, you’re absolutely right. And some screenshots with puppies in them or

⏹️ ▶️ John something.

⏹️ ▶️ Casey No, you’re absolutely right. And that’s the thing is, again, this was more the Fast Text

⏹️ ▶️ Casey was written in order for me to be able to look myself in the mirror and say, you know what, you did get something in the App Store. And

⏹️ ▶️ Casey even if everyone around you thinks it’s a flaming turd, at least you can say, you

⏹️ ▶️ Casey know what, one way or another, that’s mine and I did that. And I wrote it at a time where I barely could write

⏹️ ▶️ Casey Hello World and Objective-C. And that’s not to say it’s not stable and whatnot and blah, blah, blah. But

⏹️ ▶️ Casey what I’m driving at though is that it was a really great exercise to teach myself this entire pipeline.

⏹️ ▶️ Casey And I’m really glad I did it. And I keep it there, to be honest, if I’m really candid, I keep it

⏹️ ▶️ Casey there more as kind of a trophy for myself.

⏹️ ▶️ Casey You know, look at what I was able to do. And everyone else who may have seen it and is listening

⏹️ ▶️ Casey may or may not be laughing about all that, but I’m okay with that because I’m still proud of it, even though it looks like

⏹️ ▶️ Casey crap in iOS 6. But wait for iOS 7, it’s gonna

⏹️ ▶️ Marco be great. I’m watching it just climb the ranks tonight as all 204 live listeners go out

⏹️ ▶️ Marco and buy it. Something

⏹️ ▶️ Marco, John like that.

⏹️ ▶️ John, Marco You

⏹️ ▶️ John could have a Casey self-esteem sale where… Don’t buy it to use

⏹️ ▶️ John it, buy it to acknowledge Casey’s trophy

⏹️ ▶️ John, Casey for it. I mean,

⏹️ ▶️ John hey, it’s farther than I got with my iOS idea when they announced the SDK, which was

⏹️ ▶️ John a joke tip calculator, which I wrote about half of. And then I said, you know what? What’s

⏹️ ▶️ John, Marco the joke?

⏹️ ▶️ John What? I’ve said this before on other projects. It was a tip calculator, which I knew there would be a bazillion

⏹️ ▶️ John of, because it’s like five minutes to write. And sure enough, there were a bazillion of

⏹️ ▶️ John them. And the name of the application is it does other things which is probably a copyright infringement on Seinfeld but that that

⏹️ ▶️ John that’s the joke yeah I’m not have you seen that episode of have you heard of

⏹️ ▶️ John, Casey Seinfeld

⏹️ ▶️ John, Marco television show

⏹️ ▶️ John it does other things yes have you ever seen Seinfeld

⏹️ ▶️ Marco yeah I think I’ve seen all of them

⏹️ ▶️ Marco, John but I know that line from a

⏹️ ▶️ John episode

⏹️ ▶️ Marco I forget what the context was

⏹️ ▶️ John oh well anyway you can google for it does other things Seinfeld and find out it’s not that funny which is it

⏹️ ▶️ John one other reason why the application does not appear on the store but that’s you know I mean I bailed

⏹️ ▶️ John out because I saw the writing on the wall But I would have liked to have just gotten through the process the reason I don’t go through the

⏹️ ▶️ John process is because say I get A working application that does what I wanted to do

⏹️ ▶️ John Then I need a nice double that amount of time to work on the icon in the UI Because otherwise

⏹️ ▶️ John I’ll just obsess over it be like no I can’t ship this It’s too boring looking and then by

⏹️ ▶️ John that point eight thousand other type of calculators have come out, and it’s too late

⏹️ ▶️ Marco I would love to see you ship an app

⏹️ ▶️ Marco, John of anything

⏹️ ▶️ Marco I mean I don’t care what it did or didn’t do I would just love to see like what you consider

⏹️ ▶️ Marco shippable because I honestly I’d be sure I’d be shocked if you ever ship something like that in public like

⏹️ ▶️ Marco and I guess your reviews are even larger scale than most

⏹️ ▶️ Marco, John people have.

⏹️ ▶️ John They’re much larger scale receptacles for feedback let’s say

⏹️ ▶️ John people have opinions and they offer them on writing is much worse than putting out I

⏹️ ▶️ John mean like what look at all the open source code I put out all the pearl like most of the pro code that’s up on C pan for me is just

⏹️ ▶️ John terrible because it’s been written years and years ago and I leave it up there because like well look so maybe someone’s finding it

⏹️ ▶️ John useful or whatever but it’s kind of the difficult thing about working in

⏹️ ▶️ John a regular job. You try to do open source stuff so you have something that you can like show

⏹️ ▶️ John as like here’s an example of my code. My open source stuff at this point I’d be like don’t look at that. Let me tell like

⏹️ ▶️ John the best the best thing I could do if everyone on job interview would be like here’s Here’s some sample code from my open source projects

⏹️ ▶️ John and let me tell you what’s wrong with it as a demonstration of how I’ve grown since I wrote this thing.

⏹️ ▶️ John That’s actually – that

⏹️ ▶️ John, Marco would be surprisingly effective interview, I think.

⏹️ ▶️ John Yeah, but you want to show them as like, here’s my shipping app. Like that’s what – you get a job in Apple. You’re like, look, I made this

⏹️ ▶️ John app and then I’m awesome and the app is awesome. Hire me and then Apple hires you. That’s the easiest way and

⏹️ ▶️ John in the door.

⏹️ ▶️ Casey So to build on the thought of you shipping something that people can see, since

⏹️ ▶️ Casey you’re a celebrity in the little bubble in which we live, does that, if you had a really good

⏹️ ▶️ Casey idea, do you think that would prevent you or scare you off from, actually, I

⏹️ ▶️ Casey, John guess I could ask

⏹️ ▶️ Casey both of you, but.

⏹️ ▶️ John I’m always looking for a good idea for an iOS app. I have been since day one, the tip calculator, you know, like, that’s

⏹️ ▶️ John like me looking for an idea. My brother is also constantly trying to look for an idea. He’s

⏹️ ▶️ John trying to look for a get-rich-quick idea, and I’m, so am I, to be

⏹️ ▶️ John, Marco frank. So

⏹️ ▶️ John, Casey Chuck. We just

⏹️ ▶️ John try, like, we’ve talked about a million dollar homepage before, right, haven’t we?

⏹️ ▶️ Marco Oh yeah, well, not on this show, I don’t think, but.

⏹️ ▶️ John, Marco Yeah,

⏹️ ▶️ John and it

⏹️ ▶️ John, Marco may be in

⏹️ ▶️ John real life. But anyway, that’s the ultimate idea, where you have no money at risk, no time at risk,

⏹️ ▶️ John really easy to do, makes money, makes everybody happy who’s involved with the project, is amusing to people who

⏹️ ▶️ John are not involved with the project. That’s pretty much the best example of that type of

⏹️ ▶️ John project I’ve ever seen in my life. And if there’s an iOS app equivalent, yet I haven’t found one. There’s plenty of ways to make money

⏹️ ▶️ John in the App Store that are scummy and scammy and make people sad, but that’s not what we’re looking for.

⏹️ ▶️ John And of course, you can make money like the old fashioned me by making a good app, which is really hard.

⏹️ ▶️ John If I ever had an idea for a Mac app even, like an iOS or Mac app, if I had an idea for an app that

⏹️ ▶️ John didn’t exist that I would like that I thought I could write, I would do it. But that stuff never comes together.

⏹️ ▶️ John It’s always like two out of three or one out of three.

⏹️ ▶️ Casey But that’s not directly answering my question, which is, let’s say you had this great idea and you felt

⏹️ ▶️ Casey at least moderately confident that you could do at least a moderately passable job. Would the fact

⏹️ ▶️ Casey that you’re Mr. Hypercritical scare you away

⏹️ ▶️ Casey, John from

⏹️ ▶️ Casey, Marco releasing

⏹️ ▶️ Marco it? No, not at all. Not at all. I mean, if anything, that should provide a fountain of infinite ideas,

⏹️ ▶️ Marco because you can look at any app you use, any app you ever need to use, and

⏹️ ▶️ Marco you can say, oh, well, if I did it, it would be different in these ways. Yeah, but

⏹️ ▶️ John do I want to do it? Do I think I’d be capable of actually doing a better job? Do I really want to do it? Do I

⏹️ ▶️ John have… You know how much time it takes to make a real application. It’s a big commitment. Commitment, you’re right. So I really

⏹️ ▶️ John it would it would really need to be like something like oh I’ve got to make this app like that’s it would have to be like that not just

⏹️ ▶️ John simply Oh, I think I can make a better one of those because it just takes so much time and I and like

⏹️ ▶️ John any notoriety I might have would encourage me not discourage me because all that would translate to is like look

⏹️ ▶️ John For every every tiny point of internet notoriety. I have that is one extra point

⏹️ ▶️ John on You know on sales possibilities, right? Like, it’s not fair, but that’s the way it works. Like,

⏹️ ▶️ John if people know who you are to begin with, then they’ll know about your application at least. So you have such a leg up with awareness

⏹️ ▶️ John and everything. Oh,

⏹️ ▶️ John, Marco yeah.

⏹️ ▶️ John If you got it, use it. Yeah, so that wouldn’t be the reason I would be doing it. But

⏹️ ▶️ John it would have to be a fire under my butt where, like, look, I need it. Like it was for you with Bugshot. You’re like, I just need this application to exist.

⏹️ ▶️ John And you’re at the point where you can rattle that off in a week. Like, I’m not at that point. So it has to be

⏹️ ▶️ John real. I have to just be like, look, I cannot sleep until I write this application. because my ramp up time would be significant

⏹️ ▶️ John starting from zero,

⏹️ ▶️ Marco right? Even that though, like, yeah, I mean, for me, it was like, I’m an experienced iOS developer, so it didn’t take me

⏹️ ▶️ Marco that long. I already knew how to do all this stuff. The icon even accidentally made itself. And then,

⏹️ ▶️ Marco you know, even that app, I said, I will spend a couple of days doing this app. That’s

⏹️ ▶️ Marco all I can really justify spending on it, because it’s going to make, you know, like 20 bucks a day for the next two years, you know? So

⏹️ ▶️ Marco I can’t justify doing a whole lot more on this app, just a few days of work, I can get back to my other

⏹️ ▶️ Marco stuff. And a few days became like ten days. It was like

⏹️ ▶️ Marco seven days to build version one, and then I got a break while it was being approved. And then

⏹️ ▶️ Marco within a few days of it being released, I was working on 1.1 to fix all the bugs that everyone found and then

⏹️ ▶️ Marco to add a couple of minor enhancements, and that took a couple more days. So all in, this is

⏹️ ▶️ Marco almost two weeks solid for this app. And

⏹️ ▶️ Marco I should clarify for Sam the Geek in the chat room, yeah, it’s going to make $20 a day maybe

⏹️ ▶️ Marco for the next couple of months. After that, it might go down further

⏹️ ▶️ Marco, Casey to close to zero. Oh

⏹️ ▶️ Casey yeah. No, he’s absolutely right. This is not a joke and I probably shouldn’t share this publicly, but whatever.

⏹️ ▶️ Casey I am genuinely excited when I get an app banning email and the number on it is anything more than zero.

⏹️ ▶️ Casey That’s like awesome. I just sold something to someone. That’s really exciting.

⏹️ ▶️ Casey So, 20 bucks a day is nothing to shake your fist at. I know you said that jokingly, but that is

⏹️ ▶️ Casey, Marco nothing to shake your fist at. No,

⏹️ ▶️ Marco no, that’s not a joke. I mean, like when I made Nursing Clock last year,

⏹️ ▶️ Marco the breastfeeding timer, I released that and even that took a little bit longer than I thought it would. Even

⏹️ ▶️ Marco the nap that had almost no effort into it at all, that took like a few days to really polish it and make it releasable

⏹️ ▶️ Marco in any shape. And even that, over its entire life, it made I think $70. I

⏹️ ▶️ Marco mean, it wasn’t a whole lot. I even ended up pulling it down after

⏹️ ▶️ Marco I think about six months or so because there was a somebody had tipped me off there was a

⏹️ ▶️ Marco patent troll going around suing or threatening to sue people who made child care

⏹️ ▶️ Marco related apps and even though mine was not

⏹️ ▶️ Marco wouldn’t have applied or the patent wouldn’t have applied we all know that doesn’t really matter and so I just

⏹️ ▶️ Marco bought like you know what this app has made like seventy dollars in six months it’s not even worth the risk of

⏹️ ▶️ Marco having a patent troll come after me. So I just pulled it down.

⏹️ ▶️ Marco, John Patents

⏹️ ▶️ John fostering innovation.

⏹️ ▶️ Marco Exactly. We should get to that actually. But first, let me tell you about our second sponsor. Our second

⏹️ ▶️ Marco sponsor this week is a new sponsor, but you might have heard of them recently on other awesome shows and blogs.

⏹️ ▶️ Marco They are 23andMe. So 23andMe, it’s a pretty cool service.

⏹️ ▶️ Marco It’s a little hard to explain, but here’s the gist of it. They

⏹️ ▶️ Marco are a DNA profiling service. So here’s what you do.

⏹️ ▶️ Marco You give them a basically they send you a kit. You give them a saliva

⏹️ ▶️ Marco sample. You don’t have to poke your arm or anything. There’s no blood involved. You give them a saliva sample. You

⏹️ ▶️ Marco send it back and they provide a return package. The lab analyzes it. And then it gives

⏹️ ▶️ Marco you a full report about stuff about you. So

⏹️ ▶️ Marco here’s the gist of it. They give you the tools to better understand how your genes may impact your health.

⏹️ ▶️ Marco So this helps you and your doctor find health areas to keep an eye on. They have over 240

⏹️ ▶️ Marco personalized health, trait, and ancestry reports. And they can help you understand your genetics.

⏹️ ▶️ Marco So they give you ancestry information. You can discover your global origins. You can find, like, if you

⏹️ ▶️ Marco have any, like, celebrity relatives, they will give you, like, a list of celebrities that are, like, distant relatives of yours. You can also

⏹️ ▶️ Marco find other living relatives through their analysis. They have over a quarter

⏹️ ▶️ Marco million members. So this makes it the largest DNA ancestry service in the world.

⏹️ ▶️ Marco And so the chances of them finding something cool about you are pretty good. So

⏹️ ▶️ Marco anyway, it includes a few fun points, too. It tells you how closely related you are to Neanderthals.

⏹️ ▶️ Marco They even can tell why you may not like cilantro.

⏹️ ▶️ Marco There’s a gene for that. They can tell you how quickly you metabolize coffee, which of course is

⏹️ ▶️ Marco cool for me to know. So, anyway, you can order your 23andMe DNA

⏹️ ▶️ Marco kit today for just $99 at slash ATP.

⏹️ ▶️ Marco That’s 23 and me, the number 23 and then the words slash

⏹️ ▶️ Marco ATP. Check it out. It’s pretty cool. And just a really great way

⏹️ ▶️ Marco for, you know, just to take a look at your DNA and to learn some cool stuff about yourself.

⏹️ ▶️ Marco So thanks a lot 23andMe for sponsoring the show.

⏹️ ▶️ John That is the avocado… not avocado… asparagus pee smell gene? Is that a genetic

⏹️ ▶️ John thing or is that not genetic? I think that’s everybody.

⏹️ ▶️ Casey No. I mean it’s just…

⏹️ ▶️ Casey, Marco well… I think you have to eat

⏹️ ▶️ Marco, John a lot of

⏹️ ▶️ Marco asparagus.

⏹️ ▶️ John What I heard from like third-hand was like there was it that it was genetically related

⏹️ ▶️ John and that the people with the gene made their pee smell and they could smell it

⏹️ ▶️ John and people without the gene their pee did not smell and they couldn’t smell that other people smell like pee.

⏹️ ▶️ Casey I thought it was that the pee always smells but only

⏹️ ▶️ Casey, John some people can smell

⏹️ ▶️ John it. But only some people can smell it. Some, I don’t know, I know nothing about

⏹️ ▶️ John, Casey it.

⏹️ ▶️ Casey This is terrible because…

⏹️ ▶️ John Oh here we go here we go slash health slash asparagus

⏹️ ▶️ John metabolite detection.

⏹️ ▶️ John, Marco Of course they would know

⏹️ ▶️ John this. 23andme has got it covered and it is genetic apparently.

⏹️ ▶️ John, Casey That’s

⏹️ ▶️ Casey Aaron is a biology teacher. I could have asked her if she was home at the moment, but she is not.

⏹️ ▶️ Casey Oh, a good thing 23andMe didn’t let us down.

⏹️ ▶️ Marco Awesome. Anyway, thanks for sponsoring.

⏹️ ▶️ Casey All right, so what else are we talking about?

⏹️ ▶️ Marco Do you want to talk about AskPatents at all? Certainly do.

⏹️ ▶️ John John, go for it. So this was a Stack Exchange site that was made like months and months

⏹️ ▶️ John ago, wasn’t it? Like maybe last

⏹️ ▶️ John, Marco year? Yeah, a while ago.

⏹️ ▶️ John A long time ago. It was the brainchild of Joel Spolsky and the Stack

⏹️ ▶️ John Exchange guys in cooperation with the US Patent Office, I believe, even from the get-go.

⏹️ ▶️ John It’s a Stack Exchange site, like Stack Overflow, whatever, you ask questions or whatever. But this one is meant

⏹️ ▶️ John to collaboratively find prior art for patents. So someone will post a patent, and then

⏹️ ▶️ John other people will try to look up prior art for it and post it as the answer. So basically, the implied question to all of them is, here’s

⏹️ ▶️ John a patent. Is there some prior art? And then anyone can post an answer, like, oh, here’s a prior art

⏹️ ▶️ John for this, or whatever. And the goal of the site was to be like, OK, well, we all

⏹️ ▶️ John know these patents are stupid and trying to patent things that shouldn’t be patentable. But it’s really difficult, apparently,

⏹️ ▶️ John for the US Patent Office to do the research necessary to find the prior art,

⏹️ ▶️ John even though, like, when we look at it, like, can you just call up a graphics programmer, then ask them, and they’ll tell you the eight

⏹️ ▶️ John times? Anyway. And so that’s how this was supposed to work. And

⏹️ ▶️ John finally, I think they got, this was their very first confirmed case where a patent was posted,

⏹️ ▶️ John someone found an answer, and the patent was invalidated. And in the invalidation of the patent by the

⏹️ ▶️ John person in the US Patent Office, they cited directly this answer on this site. And Joel did

⏹️ ▶️ John the answer, and Joel said it took him like 10 minutes of Googling to find prior, because again, it’s not hard to find prior art pieces because the patents are

⏹️ ▶️ John awful, right? So Joel wrote a story called Victory Lap for Ask Patents, describing

⏹️ ▶️ John the sequence of events and saying basically, look, this took me 10 minutes of Googling. If you hate patents and you’re a software

⏹️ ▶️ John developer or whatever, come onto our site, pick a patent that you think is stupid, Google for prior

⏹️ ▶️ John art, paste it in there, and wait for the incredibly slow wheels of

⏹️ ▶️ John government to turn, and six months later, maybe that patent will get invalidated. Of course, this is a Microsoft patent and they’re appealing,

⏹️ ▶️ John so who knows how it will end up coming out. The interesting bit, this

⏹️ ▶️ John I pasted into the show notes, is that Joel says that his dream is that companies will hear about this

⏹️ ▶️ John site and use it offensively against other companies because if like Apple or Google or whatever dedicates

⏹️ ▶️ John like one or two people to just go on that site and look for patents that Google is applying

⏹️ ▶️ John for and spend 10 minutes to go find prior art for them, that it will become like, you know, so patents

⏹️ ▶️ John are sort of defensive where they patent every company patents everything they can, but it’s good to have a big patent portfolio. But if each company also had

⏹️ ▶️ John an offensive wing, who all they did was watch their competitors and watch for the super dumb patents that they apply

⏹️ ▶️ John for, and then invalidate them all by finding prior art, that would be a good sort of mutually

⏹️ ▶️ John assured destruction scenario where large companies prevent each other from having

⏹️ ▶️ John terrible patents. Of course, this is not the actual solution. The actual solution would be for the maybe the US Patent Office could

⏹️ ▶️ John do this work because it doesn’t seem like it’s that hard. It takes 10 minutes of googling and of course my position is that no patent should exist

⏹️ ▶️ John ever for anything. But anyway, every little bit, every little bit counts. So I’m

⏹️ ▶️ John excited that at least one patent has been at least, if not permanently thwarted, then

⏹️ ▶️ John possibly delayed on its trip to being a super dumb patent. So

⏹️ ▶️ John good job Joel and the Stack Exchange guys.

⏹️ ▶️ Marco Yeah, it’s so cool that AskPatents even exists and that the USPTO

⏹️ ▶️ Marco kind of encouraged it, or at least is being friendly with it. There

⏹️ ▶️ Marco is, of course, that great question of, you know, Joel is a programmer

⏹️ ▶️ Marco and he could look at this stuff from this Microsoft patent that he cited and any others that you look

⏹️ ▶️ Marco on there, and he said, like, he assumed going into this that it would be pretty hard to

⏹️ ▶️ Marco read patents and to figure out what they are and to invalidate them. But in fact, once he started trying to do it,

⏹️ ▶️ Marco that it was easier than he expected. And that it only takes a few minutes to read a patent. And

⏹️ ▶️ Marco he linked to a post, maybe we’ll link to it too, about how to read a patent in 60 seconds. Because they all try

⏹️ ▶️ Marco to be very obfuscated to try to get granted and try to get past

⏹️ ▶️ Marco any potential conflicts or duplicates or to try to become more overreaching than they otherwise

⏹️ ▶️ Marco would have. They go for obfuscation to attempt to confuse

⏹️ ▶️ Marco the patent examiners. So the problem is,

⏹️ ▶️ Marco if one working programmer, and granted Joel is a good and knowledgeable programmer, but

⏹️ ▶️ Marco still, if one programmer can look at a patent application and kind

⏹️ ▶️ Marco of see through it that quickly, why can’t the patent office

⏹️ ▶️ Marco do something similar? If they can say, yeah, we can have patents

⏹️ ▶️ Marco on graphics programming techniques, why can’t they either have or contract with graphics

⏹️ ▶️ Marco programmers to look at any graphics-related patents? I’m really glad

⏹️ ▶️ Marco that AskPatents exists, and obviously it needs to exist, but why it needs to exist

⏹️ ▶️ Marco is kind of a problem.

⏹️ ▶️ John This is a government-run agency, and they don’t have anything to do with hiring money. You can’t pay a graphics programmer

⏹️ ▶️ John any amount. They’re outsourcing the part that can’t be done at scale,

⏹️ ▶️ John because there’s a limited number of patent employees. Those employees only know about patents and know nothing

⏹️ ▶️ John about the domain areas. And by the same token, Joel could not have written

⏹️ ▶️ John that ridiculous document that codifies the rejection of the patent.

⏹️ ▶️ John Joel could not have written that, because that requires the lawyer-like expertise of the people in the patent office to

⏹️ ▶️ John know what form you have to do things, and what is a valid rejection, What must you like that’s

⏹️ ▶️ John the skill that they’re bringing to the table you know that to be able to Navigate this

⏹️ ▶️ John legal just like lawyers like you know you may have an intuitive feel of

⏹️ ▶️ John You know what’s right and wrong and how to prove things, but if you’re not a lawyer You don’t know how to actually do it right so

⏹️ ▶️ John This is just finding people like look you find me the prior art and then the US Patent Office says we’ll take it from here So

⏹️ ▶️ John you did that part of the work for us We’ll take that and probably spend ten times as much time doing this stupid

⏹️ ▶️ John legalese dance in this formal document structure to reject the patent and bring it through this all these

⏹️ ▶️ John bureaucratic. I mean just try clicking through to that rejection He’s like he explains how to find the rejection

⏹️ ▶️ John It is like the preliminary draft rejection finalized form like try to read it. It just you

⏹️ ▶️ John know You cannot penetrate even the rejection of the patent let alone the patent itself and that

⏹️ ▶️ John that how to read a patent in 60 seconds Is good because it tells you just ignore everything and go right to this section and look at these three things That’s enough

⏹️ ▶️ John for you to get going. It’s a broken, stupid, bureaucratic system that

⏹️ ▶️ John doesn’t work right. And this does not make it better. Like, this doesn’t cure it. But

⏹️ ▶️ John if anything that stops crappy patents from getting granted is a good thing. So,

⏹️ ▶️ John and this was just, you know, like sort of the community trying to make government better. Maybe

⏹️ ▶️ John not against their will, but certainly like, look, we’re here to help you in government saying, okay, we will accept

⏹️ ▶️ John your help in this matter, and then it producing at least one actual result.

⏹️ ▶️ Casey Well, it’s a brilliant idea if people are into it, but it seems to me that

⏹️ ▶️ Casey it’s tough to get people into it. Said differently, you know, here it is that the patent office

⏹️ ▶️ Casey is sort of kind of reaching out to the community and saying, hey, people who are experts in

⏹️ ▶️ Casey these things that patents are, go help us find this prior art. But the key is that they’re, you

⏹️ ▶️ Casey know, we’re experts, you know, Joel is an expert, or at least you could easily argue as such.

⏹️ ▶️ Casey And I don’t know how the patent office works internally, but I got to imagine they don’t have an expert for every darn

⏹️ ▶️ Casey field of patentable stuff under the sun. And so it strikes me

⏹️ ▶️ Casey as a brilliant idea. But I’m not sure that when I get bored on a weekday evening

⏹️ ▶️ Casey night, I’m going to sit there cruising for patents to shoot down.

⏹️ ▶️ John Well, I mean, Joel, but Joel’s got the right idea. He says, like, who is actually sufficiently motivated

⏹️ ▶️ John to use this site. And who’s sufficiently motivated are the companies who get patents, because they

⏹️ ▶️ John have a financial incentive to prevent. Apple has a financial incentive to make every single patent

⏹️ ▶️ John Google files be invalidated, right? And vice versa. Google has that same motive. So if you

⏹️ ▶️ John can get these big companies with tons of money to put even a few people on this, it’s so easy

⏹️ ▶️ John to do, because you’re going to be invalidating patents in a domain that you know. Apple probably knows about the domains that

⏹️ ▶️ John Google’s going to file patents and vice versa, because they’re both in the same industry. Get all these guys to, instead of spending

⏹️ ▶️ John all their energy patenting everything under the sun, take part of their energy. Because now, suddenly, they have

⏹️ ▶️ John an influence. It used to be you had no way to get your other guys’ patents invalidated. You had to wait for them to be

⏹️ ▶️ John granted or rejected. And then you could try to invalidate them to court. Whereas now, if the patent office is like, look,

⏹️ ▶️ John we’re willing to accept some help here. This patent has been applied for. Here’s the application.

⏹️ ▶️ John And Apple goes out and finds prior art and heads it off at the pass. I don’t know if those

⏹️ ▶️ John companies are actually going to do that, but they are the ones who have both the motivation and the skill to do this.

⏹️ ▶️ John I think it would be a great idea because I hate all patents. Like I said, another thing that would cure this whole problem is just

⏹️ ▶️ John to eliminate the entire patent system and office and all the employees and all the legal framework and everything

⏹️ ▶️ John involved with it. That would also cure this problem and is the actual solution. But people don’t want to hear that. That would

⏹️ ▶️ John actually promote innovation? People don’t want to hear that. But anyway, you don’t want to hear that. That’s fine. We’ll

⏹️ ▶️ John start with this. This would be fine, too.

⏹️ ▶️ Marco Yeah, I mean, John, both you and I, I believe, separately argued on our respective 5x5 podcasts a couple of years

⏹️ ▶️ Marco ago. I think we both argued that basically the entire patent system should be abolished.

⏹️ ▶️ Marco Is that fairly

⏹️ ▶️ Marco, John accurate?

⏹️ ▶️ Marco Yep. Yep. Yeah. I mean, the fact that all this stuff is necessary

⏹️ ▶️ Marco is—and I think what bothers me about it,

⏹️ ▶️ Marco not to go too deep into whether the patent system should exist or not, because that would be a whole other show.

⏹️ ▶️ Marco But I think what bothers me so much about it is like, this is, it’s a problem that just cannot

⏹️ ▶️ Marco be solved well. Like, it is just so like, yeah, the patent office

⏹️ ▶️ Marco can’t be expected to get everything right. But they get things wrong a lot.

⏹️ ▶️ Marco And the ramifications of that in the market are so incredibly destructive.

⏹️ ▶️ Marco I mean, it like, Whatever benefit patents are providing to people, I have

⏹️ ▶️ Marco to imagine there’s an equal or greater amount of harm that they’re causing, especially in the

⏹️ ▶️ Marco field of software. It just seems like there’s no good solution to this,

⏹️ ▶️ Marco but I am very glad that Athpatents is at least attempting to—it

⏹️ ▶️ Marco is improving it in one small way.

⏹️ ▶️ John My objection was less practical and more ideological. I don’t think there’s any reason you should have monopoly rights to an idea,

⏹️ ▶️ John period. It’s not as if like, you know, what if the patent office was perfect and never made a mistake? There’s

⏹️ ▶️ John no such thing. There is no right there as far as I’m concerned. You get no

⏹️ ▶️ John right to a monopoly on an idea that you come up with, no matter how awesome that idea is, period, the end.

⏹️ ▶️ John And so if that’s your position, that’s my position, obviously there’s no such thing as a patent office

⏹️ ▶️ John that works. It’s just it’s an office that the only way it works is to not exist because it’s enforcing a right

⏹️ ▶️ John that I don’t think is a valid thing that you should, you know, you shouldn’t get a monopoly on an

⏹️ ▶️ John idea. You shouldn’t ever, the end. But there’s a huge continuum down to the pragmatic concern. Like,

⏹️ ▶️ John OK, I think you should, but it’s impossible to do correctly. Therefore, it should be gone, all the way up to, oh, I think it should be gone

⏹️ ▶️ John for software, because there’s no such thing as a software patent, because it’s all math, and everything’s turned complete, and blah, blah, blah.

⏹️ ▶️ John And business process patents shouldn’t exist, and a whole big range. When I talked about it on my show, I went to write for

⏹️ ▶️ John the jugular, which is like patents on drugs, which everyone thinks, all right, you can get rid of all the other patents, but we need

⏹️ ▶️ John these, because otherwise, no one will ever do any research into how to cure disease. And I talked about it at length there. We shouldn’t

⏹️ ▶️ John rehash it here. But anyway, patents are terrible. Don’t let your kids get them.

⏹️ ▶️ Casey Does that mean we’re done? That seems like a pretty good place to end to me.

⏹️ ▶️ Marco Yeah, I think so. All right. Well, thank you very much to our two sponsors this week, Hover and

⏹️ ▶️ Marco 23andMe. And we’ll see you guys soon.

⏹️ ▶️ Casey Now the show is over, they didn’t even mean to begin Cause

⏹️ ▶️ Casey it was accidental, oh it was accidental

⏹️ ▶️ Casey John didn’t do any research, Margo and Casey wouldn’t let him

⏹️ ▶️ John Cause it was accidental, oh

⏹️ ▶️ Casey it was accidental And you can find the show notes at ATP.FM

⏹️ ▶️ John And if you’re into Twitter, you can follow

⏹️ ▶️ Marco them at C-A-S-E-Y-L-I-S-S So

⏹️ ▶️ Marco that’s Casey Liss, M-A-R-C-O-A-R-M, and T.

⏹️ ▶️ Marco Marco Armin, S-I-R-A-C-U-S-A-C-R-A-Q-U-S-A

⏹️ ▶️ Marco It’s

⏹️ ▶️ John accidental,

⏹️ ▶️ Marco but you didn’t mean to

⏹️ ▶️ John Accidental, tech broadcasts so long.

⏹️ ▶️ Casey I just sold something to someone. I thought that was funny. If you’re going to make fun of me, I think that’s a much less

⏹️ ▶️ Casey jerky way of doing it. Because that was me talking about how excited I am that whenever I see a singular

⏹️ ▶️ Casey sale of fast text.

⏹️ ▶️ John Someone trying to do a JavaScript injection. I appreciate that they put the semicolon at the end of their statement.

⏹️ ▶️ John They don’t stand for that JavaScript automatic semicolon insertion. Say no, I’m going to put it explicitly

⏹️ ▶️ John so it’s not confused. And yes, the people who wrote this show bot application have minimal

⏹️ ▶️ John competence of web programmers. That’s good. Escaped their input, which

⏹️ ▶️ John is not… It’s probably still 50-50, given all the websites that I see that won’t let

⏹️ ▶️ John me type telephone numbers with hyphens in them. Oh, God. Apparently, the bar has still not been raised.

⏹️ ▶️ Marco How about American Express, where the maximum character length for a password

⏹️ ▶️ Marco is, I think, still eight?

⏹️ ▶️ John That’s probably dictated by their COBOL-based mainframe interface or something. But the guys

⏹️ ▶️ John who don’t let you type stuff with the phone numbers, they want you to only type digits. You can’t type anything else.

⏹️ ▶️ John That, I just want to go to all their houses and find them and be like, no one is making you do this.

⏹️ ▶️ John This is literally the simplest possible task that a programmer on the web has.

⏹️ ▶️ John It is completely closed. There are no edge cases. All you got to do is just

⏹️ ▶️ John let me type whatever I want, remove everything except for the numbers. It’s not rocket science. Like, no task is easier

⏹️ ▶️ John than that. Every other part of accepting that form submission is harder than that one task. And yet, big Fortune 500

⏹️ ▶️ John companies will have forms that don’t let you type anything except numbers in them. And will like beep at you, put alerts,

⏹️ ▶️ John automatically backspace the field. Like the automatic backspacing code, that’s more complicated than stripping out the stuff. It’s just,

⏹️ ▶️ John it boggles my mind that this goes on. And I wonder what regular people think who don’t know that

⏹️ ▶️ John is literally the easiest thing in an entire world of web programming to do. They’re just like, oh, I guess you have to do this way on this site.

⏹️ ▶️ John It must be really secure.

⏹️ ▶️ Casey So let me tell you a true story that we cannot put in the show because it’s really embarrassing, which means it’s probably

⏹️ ▶️ Casey doomed to be in the show. When Aaron and I were getting married, I wrote in PHP, and I think it was

⏹️ ▶️ Casey my first PHP app, I wrote a website that would let guests

⏹️ ▶️ Casey register, or RSVP, among other things. And a good friend of mine, his

⏹️ ▶️ Casey surname has an apostrophe in it. And I noticed after he registered, because I had this like totally weirdo

⏹️ ▶️ Casey setups, where I would email my phone to send my phone a text message back when

⏹️ ▶️ Casey that was still a thing. Well, anyways, so he registered and all of a sudden everything was cut off as

⏹️ ▶️ Casey soon as I hit the apostrophe in his name, because I didn’t escape anything because I didn’t know crap about web programming at

⏹️ ▶️ Casey the time. In fact, I taught myself SQL in order to write that site. This was in 2007, because

⏹️ ▶️ Casey I was always living in thick client land until then.

⏹️ ▶️ John Yeah, this is like people who don’t learn from the past. I remember the first time I looked at the active record code in Rails.

⏹️ ▶️ John And I was like, Jesus Christ, like, bind parameters. It’s the technology that has existed since

⏹️ ▶️ John forever. And you’re like, just no. We’re going to make SQL by cadding

⏹️ ▶️ John together strings and just inline all the values. And what could go wrong? We have an escaping

⏹️ ▶️ John function. It should be fine, right? Jesus. Like, you know. Wait, that’s how they were

⏹️ ▶️ John doing it? I believe the first version of Rails was not using bind parameters in their queries. They

⏹️ ▶️ John would build the SQL strings out of values. I believe they had an escaping

⏹️ ▶️ John function of their own devising, which would be like, oh, if you see a quote, just double it or whatever.

⏹️ ▶️ John And if this wasn’t ActiveRecord and I’m slagging off Rails when I shouldn’t be, I’m sorry. But

⏹️ ▶️ John substitute Rails with any other type of thing. I see it all the time of people who write database code

⏹️ ▶️ John in the modern era, like in this year, and don’t know that bind parameters exist and just

⏹️ ▶️ John bravely plow forward. I mean, Casey didn’t know that escaping was a thing you might want to do.

⏹️ ▶️ John But for the people who, that I find more excusable than the people who know that you have to escape. So they write

⏹️ ▶️ John their own escaping function. They still feel like this is the best way to do it. Because once you know it’s a problem, you would

⏹️ ▶️ John think you’d spend three seconds googling, like, oh, I see this is a problem and there’s a name for it. And I bet there’s some sort of

⏹️ ▶️ John technique to not have it anymore. Let me look that up.

⏹️ ▶️ John Yeah. The other favorite one is that when people, well, this is not in any of your languages. Maybe it kind of is. And

⏹️ ▶️ John do you find, have either one of you ever, I don’t know if this is a.NET equivalent, but in like Marco and your things,

⏹️ ▶️ John you can’t even do this on iOS probably. Like, you know the system call, the word system?

⏹️ ▶️ John, Marco Yeah, where it just shells out to the end. Right. Have you

⏹️ ▶️ John ever had to do that from iOS program? Or is that just like not going to happen on iOS? I don’t think you can do it on

⏹️ ▶️ John, Marco iOS. I’m not sure.

⏹️ ▶️ John It’s probably forbidden. But at any rate, people who do that, like

⏹️ ▶️ John they’ll use bind parameters on their SQL code, but they’ll come to a part of the program. I mean, Apple itself probably

⏹️ ▶️ John does it. Or people writing Mac apps back in the pre-Sandboxing days. They’ll build a string and they’ll pass

⏹️ ▶️ John that string to system, right? And when you’re building that string, what do you have to do? Well, you’re like, oh, what if the file name has

⏹️ ▶️ John spaces in it? Well, let me put quotes in it. What if the file name has quotes in it? Let me write an escaping function. Like they go through the same thing. And it’s like, people,

⏹️ ▶️ John you’re in C. Like there’s a million functions that you can use to fork and exec that take like

⏹️ ▶️ John lists of variable, you know, VA list methods that take a variable list of parameters. the

⏹️ ▶️ John shell to parse it for you. Don’t you understand you can bypass that? You’re already in a program. You’re a programmer. You

⏹️ ▶️ John can write code. Apple itself does it in their Perl stuff. And you’re like, oh, if your hard drive

⏹️ ▶️ John name has a space in it and you have one that has the same name without

⏹️ ▶️ John the prefix before the space, it will accidentally delete it. I think it was an iTunes installer

⏹️ ▶️ John that did that. Maybe it was the Myth 2 installer. Apple at various times has done the same. It’s the same exact problem.

⏹️ ▶️ John It’s the SQL things where they’re like, I will just build a big long string and pass it through. what could go wrong?

⏹️ ▶️ John Like, you know, instead of, you know, it’s basically what you have is a list of values and they

⏹️ ▶️ John said, yeah, but every time I see this list of values in my normal life, it’s one big long string. So I’ll make it into a

⏹️ ▶️ John string and then give it to something that will break it into the list that I already had when I made the string.

⏹️ ▶️ John It’s just, yeah, I don’t know. We’re supposed to make progress. I don’t know, certain

⏹️ ▶️ John areas we have to make progress, not by teaching people the right way to do things by making it so they never have to do that thing again.

⏹️ ▶️ Casey John I love when you get fired up after the show. It’s my favorite.

⏹️ ▶️ John I still don’t even get to talk about Minecraft mods.

⏹️ ▶️ John, Casey Someday. Don’t

⏹️ ▶️ John even start. Don’t even start. I’m going to be angry. I’m trying to mellow out.

⏹️ ▶️ John No! I’ve got it a little bit under control.

⏹️ ▶️ John, Casey No!

⏹️ ▶️ Casey Don’t mellow out. Don’t get to talk about it. Let’s talk

⏹️ ▶️ Casey, John about Tiles. I don’t want to talk about it. But

⏹️ ▶️ John before the next show, or whenever that may be, you two should be forced

⏹️ ▶️ John to install Minecraft and several mods on behalf of… If you don’t… Neither one of you has a child

⏹️ ▶️ John of the age who can play Minecraft, maybe just borrow one for the weekend and have them ask you to install Minecraft

⏹️ ▶️ John and the mods that they want and just spend the weekend doing that. Then you will also be sufficiently angry

⏹️ ▶️ John for us to have an all Minecraft mod anger episode after vacation.

⏹️ ▶️ Casey If I get bored while I’m on vacation, I will do

⏹️ ▶️ Casey, John exactly that. Neighborhood

⏹️ ▶️ John, Casey kid come over my house, and then that’s not

⏹️ ▶️ John asking me to install minecraft mods.

⏹️ ▶️ John, Casey That’s

⏹️ ▶️ Casey not creepy at all

⏹️ ▶️ John Well, maybe have your wife do it It’s what we do. I gotta get I gotta get in touch with your wives

⏹️ ▶️ John and say just pretend You’re into minecraft and ask Marco hey I saw this this cool thing could

⏹️ ▶️ John you install minecraft in these couple of mods for me because when your wife asked you to it’s Just as bad because although. I don’t know if it’s believable

⏹️ ▶️ John that they’d want to play minecraft because it’s more of a kid thing but

⏹️ ▶️ Marco actually tiff tried it I’ve never played minecraft

⏹️ ▶️ Marco, Casey nor have

⏹️ ▶️ Marco I but but tiff actually played it for like one night and just didn’t really

⏹️ ▶️ Marco didn’t really like it that much but she didn’t play it for one night like a few like a month ago or something like that but I don’t know

⏹️ ▶️ Marco I’m really I’m kind of scared you know like like I don’t have to try heroin to know that

⏹️ ▶️ Marco I probably should never try heroin right like so and I know enough

⏹️ ▶️ Marco about like hard drugs and their addictiveness to know that I should never even attempt them

⏹️ ▶️ Marco, Casey now is this a heroin clause

⏹️ ▶️ Casey or is this a candy crush clause

⏹️ ▶️ Marco well it’s both so same thing so like when I hear that a game is like super addictive and like takes over people’s

⏹️ ▶️ Marco lives like I don’t have to play it I don’t have I’m not like ooh let me try that no I’m like you know what

⏹️ ▶️ Marco I don’t really need that

⏹️ ▶️ John why don’t you pass that wisdom on to your wife

⏹️ ▶️ Marco well I did I scared her away with with oh man meant, Candy Crush. So,

⏹️ ▶️ Marco quick story, so Tyst Phone had, it’s an iPhone 5 and it had a failing sleep wake

⏹️ ▶️ Marco button, which I guess is a very common problem. And so I took it to the Apple people and they

⏹️ ▶️ Marco swapped it. And so great, come back with a new phone. And we backed it up and did

⏹️ ▶️ Marco the whole sync locally to iTunes like that morning. Every app,

⏹️ ▶️ Marco all the music, the photos the entire keychain everything restored perfectly

⏹️ ▶️ Marco except candy crush for whatever reason candy crush just did not restore just was not there

⏹️ ▶️ Marco on the phone so tiff has lost her progress in candy crush

⏹️ ▶️ Marco and this is this is this

⏹️ ▶️ Marco, John is like did you have to pay

⏹️ ▶️ Marco extra for that service so the way she’s been playing it

⏹️ ▶️ Marco you know like when we first heard about it I believe from Amy Jane Gruber on one of her various podcasts

⏹️ ▶️ Marco or somewhere, Twitter or something, that I got the impression that it was extremely addictive

⏹️ ▶️ Marco and that it could just take all of your money because you could just, you know, you can like buy your way out of time limits

⏹️ ▶️ Marco and all the crap that the free to play BS games do. And so

⏹️ ▶️ Marco I was like, do not install that game because it will take all the money. It will

⏹️ ▶️ Marco just suck away everything we have, everything we’ve worked for. All the money will be gone. So

⏹️ ▶️ Marco to prove that I was wrong about that, Tiff has played the entire game not spending any money

⏹️ ▶️ Marco and intends to continue that way. But apparently it’s a pretty hard game

⏹️ ▶️ Marco and it’s pretty hard not to spend money, which is why they make so much. So she’s gone,

⏹️ ▶️ Marco she’s like spent hours this week playing this game and

⏹️ ▶️ Marco now it’s restored and it’s gone. Of course they don’t use any kind of iCloud

⏹️ ▶️ Marco or Game Center. Of course they don’t do anything right in programming the thing to actually make it keep your progress.

⏹️ ▶️ Marco No. That would cost them too much money. That would cause people to not buy upgrades. So of course they don’t do that because

⏹️ ▶️ Marco game programmers are so great these days. My slight rant. Thanks

⏹️ ▶️ Marco a lot, game programmers. But yeah, so I wonder

⏹️ ▶️ Marco how this is going to play out now. Like, if she’ll have to buy her way out of this. I will have to buy her way out of it out

⏹️ ▶️ Marco of guilt for somehow not having this thing synced with just that app if she

⏹️ ▶️ John Wants like bang her head against a very difficult to play application You can get a super hexagon or impossible road

⏹️ ▶️ John or something which do not ask for an app purchases, but will nevertheless Frustrate her for a lifetime

⏹️ ▶️ Casey, John Or marble madness

⏹️ ▶️ Casey whose alarm is going off.

⏹️ ▶️ John That’s that’s over here

⏹️ ▶️ Casey For a second there. I was

⏹️ ▶️ Casey, John like

⏹️ ▶️ Casey my garage is closed. I don’t think it’s me

⏹️ ▶️ John My windows

⏹️ ▶️ Marco are closed too. You know, all those times that I played Marble Madness

⏹️ ▶️ Marco after having spent the $40 on it and being so disappointed in how much it sucked for my Genesis, all

⏹️ ▶️ Marco that time, the game only has six levels. Yeah, six levels for $40.

⏹️ ▶️ Marco I never beat it. Because level six, the whole game is really, really hard, and

⏹️ ▶️ Marco level six is just like, it’s so ridiculous, I just could not ever beat

⏹️ ▶️ Marco, John it. I came close a few times. You should get a Super Monkey

⏹️ ▶️ John Ball for your, uh, it’s a GameCube game, but you have a Wii that will play GameCube games. That is the,

⏹️ ▶️ John uh, probably the most difficult console game that I’ve played and enjoyed. Because no,

⏹️ ▶️ John I haven’t played Dark Souls, people listening. Games are more forgiving now

⏹️ ▶️ Marco than

⏹️ ▶️ Marco, John they were in

⏹️ ▶️ Marco the past. Just having, like, progress saving. That is a massive, a massive, uh,

⏹️ ▶️ Marco ease jump,

⏹️ ▶️ John you know? Super Monkey Ball does not have that. Neither does Super Axe Gone. near the disembodied

⏹️ ▶️ John massive right you can’t you play it that’s when you might have heard of implanted places are excellent now what about the four

⏹️ ▶️ John uh… for making yourself feeling competent

⏹️ ▶️ Marco you

⏹️ ▶️ John know what for us all right yet

⏹️ ▶️ John yet yet it’s yet you should get it just because i think it’s a really well done game

⏹️ ▶️ John it has really nice music that you know i’ve seen that if you hear if you will hear three seconds of before you die

⏹️ ▶️ Marco yeah i’ve seen this and yeah i played it for about eight seconds

⏹️ ▶️ John And then not not contiguously eight seconds cumulatively all if you could stay

⏹️ ▶️ John alive for eight seconds that would be

⏹️ ▶️ Marco something I don’t I don’t like games like this like any like and I also never cared for

⏹️ ▶️ Marco like games like Canabalt and yeah anything that’s like just fast action just

⏹️ ▶️ Marco go until you die or like anything like that I I just

⏹️ ▶️ Marco, John don’t

⏹️ ▶️ Marco I get discouraged so quickly and easily from these games

⏹️ ▶️ Marco, John I guess I never want to

⏹️ ▶️ John you should never play a super-exotic impossible super monkey ball though like I mean has easy levels So

⏹️ ▶️ John it’s fun to play. That’s the only game like that that I’ve been motivated enough to play, because it starts so easy.

⏹️ ▶️ John You’re like, oh, this is fun, and it’s interesting, and it’s nice to look at, and it has neat music, and it’s mentally challenging.

⏹️ ▶️ John But the difficulty just goes on forever. And it’s one of those games where, no matter who you are

⏹️ ▶️ John as a human being, with the exception of seven people in the world, you will reach the limits of your ability, but only

⏹️ ▶️ John after a satisfying trail up to that level, instead of just like, I have to do a Hexagon. It’s immediately, you suck

⏹️ ▶️ John now. From second zero, you suck. Impossible Road

⏹️ ▶️ John is I I think is actually I haven’t played enough to know it’s probably a little bit harder

⏹️ ▶️ John than Super Hexagon But I can’t really tell

⏹️ ▶️ Casey so Marco if you did you get into tiny wings when that was popular

⏹️ ▶️ Marco No, I’ve seen it I think I played it on someone else’s phone or something

⏹️ ▶️ Marco, Casey because I like that

⏹️ ▶️ Casey one like I’ve never played Cannibal and I’ve seen it on other people’s phones, but I like tiny wings

⏹️ ▶️ Casey, John I don’t play it

⏹️ ▶️ Casey that often, but I like it

⏹️ ▶️ John tiny wings is charming

⏹️ ▶️ Marco I’ve seen a thing like there that there was like some kind of like skiing version of that that I played for like an hour

⏹️ ▶️ Marco one time but that like I just I I don’t have the patience to

⏹️ ▶️ Marco like once I get going really far in one of those games and then I die and then I start over again like

⏹️ ▶️ Marco I just don’t care like I I’m so discouraged by having to start over again at that point

⏹️ ▶️ Marco and playing the exact same thing over and over again even if it’s like a little bit varied from like random generation or

⏹️ ▶️ Marco procedural stuff like even then like I just I don’t I hate going back that’s what one of the reasons like I was playing

⏹️ ▶️ Marco through Vice City with, with, no, actually it was the original GTA 3,

⏹️ ▶️ Marco playing through it, and I almost beat the game, but there was this one mission where

⏹️ ▶️ Marco it took like 15 minutes to do the mission, and it was a timed thing where you had to do

⏹️ ▶️ Marco it within that 15 minutes, and I kept getting within like 10 seconds of succeeding, and just barely

⏹️ ▶️ Marco missing it. And I just stopped playing the game. Like I just never proceeded past that point. like a few

⏹️ ▶️ Marco days of banging on that mission and doing it like seven or eight times and failing every single

⏹️ ▶️ Marco one. I just got so discouraged. I’m like, you know what, I’m done. That’s it. I just never went back. It

⏹️ ▶️ Marco was the mission where you drive around trying to crush all the coffee stands in like seven different parts of the town.

⏹️ ▶️ Marco I bet everyone playing GTA, everyone who played GTA 3 probably remembers that mission and possibly

⏹️ ▶️ Marco stopped playing it

⏹️ ▶️ John there. So this is one of the rites of passage of anyone who will eventually come to identify themselves as a gamer is that

⏹️ ▶️ John everyone eventually meets that game with the frustrating level or the difficult thing that they feel like they’re never

⏹️ ▶️ John going to get past. And people who will later in life call themselves

⏹️ ▶️ John a gamer get through that and they consider it like a personal triumph and move

⏹️ ▶️ John on from it. And once you’ve done that once, you realize that there is nothing in the game

⏹️ ▶️ John that I can’t do. I can always persevere. It’s just a question of doing it. And

⏹️ ▶️ John it’s not like a value judgment. if you decide your time is better spent doing something else, then fine, or whatever. I’m just saying, like, the people who

⏹️ ▶️ John do, who make that decision, they say, you know what, I’m going in this totally inconsequential place

⏹️ ▶️ John where there’s no reason for me to do this. There’s no reward waiting for the end of it. No one’s going to care that I did it. I’m just

⏹️ ▶️ John alone here in my house. I’ve decided, you know what, I’m going to do this. And eventually you do do it.

⏹️ ▶️ John It’s an amazing feeling. And it gives you, like, a belief in yourself that it shouldn’t, because it’s like, all

⏹️ ▶️ John you did was you press buttons on a controller. Like, this has no bearing on your ability to succeed in life or anything like that.

⏹️ ▶️ John But it feels amazing, right? And that’s the great thing for people who are gamers. That’s the amazing thing

⏹️ ▶️ John about games like Super Hexagon and stuff, is because it takes that gamer sense of

⏹️ ▶️ John thinking that there’s nothing you can’t beat and saying, no, actually, here, try this.

⏹️ ▶️ John And it’s like, for one set of people, like, this is a new experience. Because at this point,

⏹️ ▶️ John every challenge that I’ve come across, I’ve been able to surpass. So it’s going to bring some people to say, I

⏹️ ▶️ John have reached my limits as a human being. I realize now, after my years of

⏹️ ▶️ John experience of being things, that this is one place that I can’t go any farther. And then for an even

⏹️ ▶️ John smaller percentage of people, it’s going to make them initially think that, and then they are going to do it, and they’re going to be like,

⏹️ ▶️ John I am now God. There’s nothing, there is no, it’s like, it’s like if you, after

⏹️ ▶️ John you’ve, you know, getting back to the drugs analogy, like you’ve built up a tolerance, right? And the only way for you to get any

⏹️ ▶️ John sort of high is to get into the situation that is basically impossible, and either be defeated and have that be

⏹️ ▶️ John a novel sensation, or break through anyway and be like, there’s now nothing I can’t do, you know?

⏹️ ▶️ John You are very far at the end of that spectrum having. Is there any is there any game type experience you’ve done where you

⏹️ ▶️ John feel like there’s no way in heck I’m going to beat this, you forget it, you put the game down, you put it away for six months, and eventually say, you know what, I’m going to beat

⏹️ ▶️ John that and you come back to it or not with a six month gap, but any kind of thing where you feel like you’ve already decided like, this is

⏹️ ▶️ John impossible. This is unfair. There’s no way this can be beaten. I hate this game, but then have eventually gotten

⏹️ ▶️ John through it.

⏹️ ▶️ Marco Oh, yeah, definitely. Yeah, that and that’s usually that’s the outcome. I don’t usually give up on the game completely.

⏹️ ▶️ Marco But there are just certain things that just… Anything that, especially that just wastes

⏹️ ▶️ Marco tons and tons of time doing the same thing over and over and over again in order to get to

⏹️ ▶️ Marco the point that I keep failing, that drives

⏹️ ▶️ John me nuts. Yeah, that’s part of the experience. Of course they do that. Of course, like, the most extreme case is the ones where there was

⏹️ ▶️ John no saving, right? Because then, like, the whole thing would be like that. You’d spend five hours on a week

⏹️ ▶️ John and getting to the place where you die all the time only to die all the time. Like your

⏹️ ▶️ John code compiled debug cycle is like four hours long. You do the math in your

⏹️ ▶️ John head, like, how many tries is it going to take me? And if each time I do the try, and then eventually you can’t even get up to that level

⏹️ ▶️ John anymore, you’re going into that downward spiral where you’re not even getting halfway to the place where you’re going to die

⏹️ ▶️ John anymore, and you have to take a break from it. That’s the whole, that’s what I’m talking about. That’s the whole experience. And

⏹️ ▶️ John that’s totally the worst. And that’s why games are generally where you get some kind of save or some other way to do it.

⏹️ ▶️ John Back in the day, you’d play those NES games. It was like, it was a Bionic Command at the moment, you had to shoot a

⏹️ ▶️ John missile at Hitler in a helicopter as you flew by him on the screen, like, you know, 30 frames

⏹️ ▶️ John a second. And you got basically one shot at it. And the first time it happened, you had no idea it was coming. And now here’s like,

⏹️ ▶️ John we got to play through the whole game again to get up that one scene and give it another try. That was that was a different age.

⏹️ ▶️ Casey See, I had a I had a terrible horror story with the NES because I had what was it Dragon Warrior?

⏹️ ▶️ Casey That was the like original, not the original RPG, but it was one of the first RPGs in the NES.

⏹️ ▶️ Casey And

⏹️ ▶️ Casey, Marco uh…

⏹️ ▶️ Marco Please email Casey.

⏹️ ▶️ Casey Please email me. No, don’t really. Uh, but anyways, I got, I want to say, please

⏹️ ▶️ Casey don’t email me, that the highest level you could get to was like 25 and I got up to level 21

⏹️ ▶️ Casey or something like that. And then my little brother, and to this day, I’m not sure if he was being a d*** or if he

⏹️ ▶️ Casey did it accidentally, but he erased my save, my save game or whatever.

⏹️ ▶️ Casey And I never looked at that game again. Because it took me hours.

⏹️ ▶️ Casey, John That

⏹️ ▶️ Casey, Marco could

⏹️ ▶️ Casey, John ruin a friendship.

⏹️ ▶️ Casey Exactly.

⏹️ ▶️ Casey, John But he’s

⏹️ ▶️ John still his brother. You can’t

⏹️ ▶️ John, Casey get rid of

⏹️ ▶️ Casey him. Yeah. I tried, but I couldn’t. Oh, man, that made me so

⏹️ ▶️ Casey, John angry. To this

⏹️ ▶️ John day, I am. That’s the other thing. That’s the other element that could turn you off, is if you feel like something unfair has happened. Like, it’s not

⏹️ ▶️ John the game, it’s not you, it was your brother. And that’s not fair. I was willing to accept all the crap this game could throw

⏹️ ▶️ John at me and try it, but now someone has deleted my save game, and it’s like, all right, that one, it’s foul, out

⏹️ ▶️ John of bounds.

⏹️ ▶️ Marco the reason why I never beat Vice City is that I was playing it during college

⏹️ ▶️ Marco and on my roommate’s Xbox and when he went home from the summer I’m like well that there good there it goes that’s

⏹️ ▶️ Marco it he saved you yeah but like I like Tiff and I were playing it we got

⏹️ ▶️ Marco we were playing it for like months and we got to what had to be like almost the end of the missions

⏹️ ▶️ Marco and yeah but like once that and like I ended up getting my own Xbox eventually but then it’s like I’m not gonna start over

⏹️ ▶️ Marco and there was no good way for me to like get the save game from him and put it on mine, like, you know, that wasn’t going to happen.

⏹️ ▶️ Marco So

⏹️ ▶️ Marco, John I just…

⏹️ ▶️ John If the game’s good enough, you’d want to start

⏹️ ▶️ Marco over. Yeah, but that’s the thing.

⏹️ ▶️ Marco, John I

⏹️ ▶️ Marco wouldn’t get any pleasure out of, like, replaying the GTA missions. Because, like, I liked them at the time. The first time

⏹️ ▶️ Marco I’m playing through, I like, you know, getting, you know, accomplishing those things and getting it done. But, like, I never

⏹️ ▶️ Marco want to go back and do these things over again because it’s just so time consuming and so many of them are so tedious.

⏹️ ▶️ John Yeah, it’s kind of like favorite movies. Some, you know, most people like to see their favorite movies more than once in their entire

⏹️ ▶️ John life. Like that’s what makes them their favorite movies. You know,

⏹️ ▶️ John, Casey not that

⏹️ ▶️ John you need to watch

⏹️ ▶️ John, Casey it

⏹️ ▶️ John every month or even every year, but your favorite movies, you might be like, man, I’ve seen that one already. Like, you’ll watch it. You’ll

⏹️ ▶️ John watch it if it ends up on TV or, you know, whatever. That’s what it’s like with favorite games with gamers. It’s like,

⏹️ ▶️ John not like you’re going to play it every month or every year or whatever, but like every five years or so you feel like I have to play

⏹️ ▶️ John my favorite game again because it’s been too long. Right. Yeah.

⏹️ ▶️ Casey So how often do you play Journey?

⏹️ ▶️ John I played Journey so many damn times that I’m taking a break from. Now at this point, I do it pretty much on the year anniversary of journey.

⏹️ ▶️ John I play a little bit but like My new thing is getting other people to play journey. I’m spreading spreading the love to

⏹️ ▶️ John others. It’s just two hours So I can’t I can’t even believe you already have the ps3.

⏹️ ▶️ John I think you already have the game. Yep.

⏹️ ▶️ Casey Oh You were just trolling this right

⏹️ ▶️ Casey, John now. He’s

⏹️ ▶️ John just denying himself a good experience I mean journey really is a gamers game though. So it

⏹️ ▶️ John could be that it’s it’s appeal It’s like it’s like a movie fans movie like, you know, someone who’s real a real

⏹️ ▶️ John big cinephile That’s the word like Movies that they love the general public might not love

⏹️ ▶️ John but I think Marco. I think journey maybe maybe a crossover hit. We’ll see

⏹️ ▶️ John What about you Casey? What’s your journey excuse?

⏹️ ▶️ Casey I don’t have a ps3.

⏹️ ▶️ John All right. Well when Marco’s done with his I’ll send Because he’s not using it for anything

⏹️ ▶️ John else. Apparently

⏹️ ▶️ Casey On a very very quick final note. I tweeted like two minutes before the show I just filled my car my tank

⏹️ ▶️ Casey miles per gallon 15. I

⏹️ ▶️ Casey, Marco saw

⏹️ ▶️ Marco yeah, I saw that I was I was thinking I would love to get that

⏹️ ▶️ John I was thinking I get like double that if I ever measure my knowledge Which I don’t I think

⏹️ ▶️ Casey this this moment right here perfectly encapsulates the three of us definitely

⏹️ ▶️ John Perfectly encapsulates our cars. Anyway,

⏹️ ▶️ Marco there are apparently there. There is a game called candy crisis people are saying This is the play a play a clone for Mac.

⏹️ ▶️ Marco It’s very well known. It looks like it might even be open source

⏹️ ▶️ John Yeah, it might

⏹️ ▶️ John, Marco have been a GPL.

⏹️ ▶️ John I just didn’t recognize the screenshots like they didn’t look familiar to me Yeah,

⏹️ ▶️ John some of these screenshots still don’t look familiar to me. I mean there could be more than one of these I don’t doubt that there’s more than one. I’m totally

⏹️ ▶️ John getting this.

⏹️ ▶️ Marco I’m so good at this game No one no, I’m always I tweeted like I’m always

⏹️ ▶️ Marco good at the games that nobody else plays which of course that probably

⏹️ ▶️ John They call them casual gamers Marco. It’s okay.

⏹️ ▶️ Marco No, but just like like

⏹️ ▶️ Casey Like

⏹️ ▶️ Marco only John is judging you. I’m really good at Moonbase Commander too. And Moonbase Commander nobody plays.

⏹️ ▶️ Marco Right? I thought

⏹️ ▶️ Casey you said Rubik’s Cube. I was like

⏹️ ▶️ Casey, Marco what?

⏹️ ▶️ Marco That’s like one of my like I’ll never get to it ideas is I would love to make

⏹️ ▶️ Marco Moonbase Commander for iPad. But it’s just never gonna happen. Like first of all,

⏹️ ▶️ Marco even though it was a $5 game in like 2001,

⏹️ ▶️ Marco it’s still probably beyond my ability to make because I don’t I’m not really a game programmer and

⏹️ ▶️ Marco it would it would be like I’m sure maybe I could do it if I had nothing else to do for like five years

⏹️ ▶️ Marco but you know I wouldn’t it would be a tremendous waste of time for me to try to make that because it’s so far outside

⏹️ ▶️ Marco of my expertise sprite kit maybe but um

⏹️ ▶️ John games practically write themselves

⏹️ ▶️ John automatically compiles your images into asset files Great watch you should watch

⏹️ ▶️ John those dev seminars sprite kit is uh it’s pretty like seeing kit You could not make a 3d game with

⏹️ ▶️ John because it’s like it’s just for adding 3d wraps like those right three But sprite kit you could make a sprite game with

⏹️ ▶️ Marco is it isn’t it basically just like apples ripoff of Cocos 2d Or is there more to it?

⏹️ ▶️ John I mean, it’s like basically you’ve got core animation, right? So you’ve got all the makings of a sprite kit But anyone who actually wants to make a

⏹️ ▶️ John game out of that is not going to use a bunch of current layers There’s these things that sprite, you know, collision detection and

⏹️ ▶️ John compiling all your assets into big files and pulling out chunks of them or whatever. And this does that for you. Like this is,

⏹️ ▶️ John this makes it so that you might be, people who are thinking of making a game but had no idea how to do it, SpriteKit

⏹️ ▶️ John now suddenly brings, puts their game into the realm of possibility because it’s not like, you’re not going to make

⏹️ ▶️ John an awesome game that’s groundbreaking but you’re going to make a competent game provided you have good artwork or whatever.

⏹️ ▶️ John So, yeah, it does the things the framework’s supposed to do, which is like people who could not make this program before now can

⏹️ ▶️ John because smarter people have come and given them more lower layers. It’s impressive because you

⏹️ ▶️ John actually can make a game out of it. Like they did in the demo they had an actual game. Not a good game, not an

⏹️ ▶️ John amazing game, but you look at it and you go you know what? That’s fine. You know, someone who

⏹️ ▶️ John has like the skills to make a game in terms of level design and character design but not the skills to make a sprite engine

⏹️ ▶️ John now can get stuff on iOS. And of course the best thing about it is it’s iOS only

⏹️ ▶️ John so those people who do it won’t have the skills to port their games to any other platform. Nice.

⏹️ ▶️ John Platform lock-in! Woo! Woo! But you should just watch the dev seminars. They’re fun dev seminars. They

⏹️ ▶️ John have games in them.

⏹️ ▶️ John, Marco I would watch them if I

⏹️ ▶️ Marco could, but I can’t. Oh, that’s right. Everything’s down and I don’t download all the

⏹️ ▶️ Marco, John videos. Only you

⏹️ ▶️ John have the foresight to download them all the day they came out, like I’ve done every year.

⏹️ ▶️ Marco Oh, someday. Now I have all this space and

⏹️ ▶️ Marco I finally have like a large storage and backup thing. thing set up. Oh god, I have UPSs

⏹️ ▶️ Marco everywhere now too. I have, because I got this analogy and I’m like, you know what, I should probably put this on a UPS.

⏹️ ▶️ Marco And so I like upgraded my main UPS from my Mac Pro, moved the

⏹️ ▶️ Marco old one into the closet for that and the router and stuff.

⏹️ ▶️ John Does the SMT-1500 have a fan? Oh my god, you and your fans.

⏹️ ▶️ Marco It does have a fan, but I think it only uses it when it’s running on DC power.

⏹️ ▶️ Marco Because Like normally, I mean, I’ll have to try to pay attention. I’ll have to put a load on it when

⏹️ ▶️ Marco the Mac Pro’s off, so I can tell more directly. But as far as I can tell, the fan is not running

⏹️ ▶️ Marco normally. I certainly can’t notice it next to a Mac Pro with no hard drives in it, which

⏹️ ▶️ Marco should tell you something.

⏹️ ▶️ John Doesn’t tell me anything. Tells

⏹️ ▶️ John, Marco me

⏹️ ▶️ John nothing. All

⏹️ ▶️ Casey, John right,

⏹️ ▶️ Casey I’m hanging up on you two. I gotta go pack.

⏹️ ▶️ Marco All right.

⏹️ ▶️ Casey, Marco Enjoy your beach.

⏹️ ▶️ Casey To be honest, I’m sort of dreading it. I don’t know. I’ve not been in a, I’ve not been to the beach at a time when I enjoy

⏹️ ▶️ Casey drinking alcohol, which I really enjoy.

⏹️ ▶️ John, Casey So

⏹️ ▶️ John I’m hoping- You go to the beach every

⏹️ ▶️ Casey five years? I haven’t been to the beach for more

⏹️ ▶️ Casey, John than a few hours in forever. Oh

⏹️ ▶️ John my god, Casey, we didn’t have

⏹️ ▶️ Casey a beach intervention for you. I hate the beach. It’s hot. I hate the feel

⏹️ ▶️ Casey, John and the smell of suntan lotion. Oh god, what’s

⏹️ ▶️ John wrong with you? Where did you grow up again?

⏹️ ▶️ Marco Oh god. Oh, I hate- I will do anything to avoid using sunblock.

⏹️ ▶️ Casey Oh, amen.

⏹️ ▶️ Casey, John Amen to

⏹️ ▶️ John, Marco that.

⏹️ ▶️ John What is wrong with you people? Sunblock

⏹️ ▶️ Marco smells like pfft. Like, no matter what, it gets in my eyes. No matter where I put it, no matter

⏹️ ▶️ Marco how careful I am, it always

⏹️ ▶️ Marco, John gets in my eyes and burns.

⏹️ ▶️ John This is like those commercials where they have this device to cook eggs and they say, eggs are so hard to make and the guy’s got eggs in their hair

⏹️ ▶️ John and the shells are in their eyes poking them. Sunblock always gets in my… No it

⏹️ ▶️ John doesn’t! If you have a tiny bit of confidence you can not get the egg shells in your eyes.

⏹️ ▶️ Casey Even if you don’t get it in your eyes, it still smells like… And you gotta sit there and you’re…

⏹️ ▶️ John, Casey There’s a million kinds

⏹️ ▶️ John of sunblock. It smells crappy.

⏹️ ▶️ John, Casey There’s a million kinds of sunblock. Then

⏹️ ▶️ Casey you’re all slimy for all day. And then what do you do? When you start to sizzle, you know you have to flip over.

⏹️ ▶️ Casey It’s like you’re a

⏹️ ▶️ Casey, John freaking ninja yourself. Oh, you guys may be doing it wrong.

⏹️ ▶️ Casey Then you get up and you walk across the sand that’s melting the bottom of your feet. And then you get in the water, which you accidentally get

⏹️ ▶️ Casey in

⏹️ ▶️ Casey, John your

⏹️ ▶️ John mouth. And then all of a sudden- What beach are

⏹️ ▶️ Casey you going to anyway? Well, what is it? Kill Devil Hills, which is a great name for a freaking beach in the Outer Banks.

⏹️ ▶️ John, Casey Non-beach people, what’s wrong with you?

⏹️ ▶️ Casey You get in the water and you open your, You stop clenching your lips shut as hard as possible and suddenly

⏹️ ▶️ Casey all the salt that is in the entire world is in your mouth. And you can’t even drink the f***ing

⏹️ ▶️ Casey water because then you get more salt in your mouth!

⏹️ ▶️ John All these experiences you’re describing are the same experiences that people who like the beach enjoy, but

⏹️ ▶️ John you’re giving them a negative spin.

⏹️ ▶️ John, Marco The

⏹️ ▶️ John smell of the salt air, the feel of the sand under your feet, the smell of

⏹️ ▶️ John sunblock even! Sun tan oil, cocoa butter smells…

⏹️ ▶️ John Yeah, no. You guys were deprived of important experiences in your formative years and now

⏹️ ▶️ John are broken adults who

⏹️ ▶️ John, Casey can’t enjoy

⏹️ ▶️ Casey the beach. And the funniest part of this entire discussion is we met 20 yards from a beach, although

⏹️ ▶️ Casey the difference being that was a lake beach, which I

⏹️ ▶️ Casey, John enjoy as opposed to an ocean beach.

⏹️ ▶️ John Lakes are gross. Filled with disgusting smelling water and mud.

⏹️ ▶️ Marco Yeah,

⏹️ ▶️ Marco, John and also

⏹️ ▶️ Marco we were not wearing sunblock. We were inside using computers. That’s true. There was no salt, there was no

⏹️ ▶️ Marco sand, there was no sun.

⏹️ ▶️ Marco, John You got the

⏹️ ▶️ John programmer’s tan,

⏹️ ▶️ John, Marco that’s what I

⏹️ ▶️ John, Casey got. You

⏹️ ▶️ John got the programmer’s tan.

⏹️ ▶️ Casey Oh, God.