Spolsky: There we go, ok now it's recording. Well, the good news is that we don't have any questions to play this week.
Spolsky: It didn't take me very long to listen to all the incoming email, cause there was only one, and it was a little bit, what's the word I'm looking for. Meandering.
Atwood: I see.
Spolsky: I guess we really are down now just to two listeners. So, what should we talk about?
Atwood: Well, we can talk about the progress we've made so far. I also have some pending stuff I wanna talk about from previous podcasts, a little bit of trivia. And this is truly trivia: you asked about Leonardo DiCaprio in a television show?
Atwood: I looked it up.
Atwood: It was actually Growing Pains is what you were thinking of.
Spolsky: What did I say, Family Ties?
Atwood: I think we were talking about Family Ties.
Spolsky: See, I think Growing Pains was a Family Ties clone.
Atwood: One of the offshoots...
Spolsky: Like, based on the 60's show Family Ties, they made Growing Pain. No, I don't think it was spin-off so much as a clone, to take advantage of the apparent success.
Atwood: And just to put this into context for people who didn't listen to the other podcast, this was in reference to the whole "jumping the shark" thing. Which we had talked about earlier. And one of the strategies for dealing with shows that are "jumping the shark" is to add a little kid to the show to, you know...sort of spice it up.
Spolsky: Yeah, and Leonardo DiCaprio was one of those kids.
Atwood: Yes, he was. Originally. The other clarification, and I actually got in trouble with my wife for this, was when we talked about jumping the shark, the actual "jumping the shark" episode on Happy Days, he wasn't actually on his motorcycle like I had thought. He was actually water-skiing, which is why he was wearing shorts. Remember, we were like "Why was the Fonz be wearing shorts. *laughs*. It's because he was water-skiing. So, I just got in trouble with my wife. She's sort of a...
Spolsky: I have never seen that episode, and I used to watch Happy Days all the time, but probably before it jumped the shark.
Atwood: The other thing funny thing about the whole jumping the shark meme is that the show Happy Days after the jumping the shark episode had 100 more episodes, which is *inaudible* right...
Spolsky: Yeah, and they all probably made, I don't know, a gazillion dollars.
Spolsky: After they jumped the shark.
Atwood: Yes. Yes. 'Cause I think...
Spolsky: We were talking about that today at lunch, about how they have these episodic dramas, like the Sopranos and stuff on television, and they're always great the first year, but then they start to kinda stretch it out, and there's just not that much story that you can keep telling (Lost), and so they tend to get worse and worse in the terms of the quality of the story, but they make more and more money because more and more people know about the shows. And watch them.
Atwood: Well, 100 shows is the magical syndication point. A lot of shows really kill themselves.
Spolsky: Right, for sitcoms they have to get to 100, yeah.
Atwood: Because I think they make tons and tons of money once they get into syndication. It's like a gold medal for them.
Spolsky: Yeah, what's going to happen? They haven't been making as many of those episodic sitcom-type things that can go into syndication. What are the people that want syndicated shows going to show?
Atwood: Ah...gosh...I have no idea. I try to really limit what I view. I do actually watch quite a bit of television still, but I try to really limit what I watch because there's so many demands on my attention already. But anyway, just cleaning up on the whole "jumping the shark" meme, 'cause my wife wanted me to do that.
Spolsky: Ok, alright. Let's cross that one off.
Atwood: Yes, that is done. So some people have been asking, uhm I just got a little skype notification, that's weird, *laughs*. Some people have been asking about scheduling, and I want to clarify, I've been telling people six to eight weeks until we get to what we call our private beta of stackoverflow.Spolsky: OkayAtwood: So that puts it at, lets see, what is it? It's the middle of May now, so, end of June - early July. Spolsky: MhmmAtwood: And I've also been getting some very very nice emails from people that want to help in some way and contribute, and I've been inviting those people into our private beta... uh..Spolsky: OkayAtwood: ... later on. SoSpolsky: Wait how do you invite what? Through what mechanism do you invite them into our private beta?Atwood: Basically they email me directly and then, I add them to the list. And then six weeks from now..Spolsky: Oh. And you have like a notepad file type thing.Atwood: Pretty much, it's just a basic text file. But yah, it's hard to manage having a bunch of people contributing at this point, cause we're still in very much the format of stages. But certainly once we get into private beta, I want tons of people to look at it and provide feedback at that point. So if you can Spolsky: mhmmAtwood: postpone your desire for about six weeks, uh, we'll get you.Spolsky: So how do you get this 6 to 8 weeks? What's this based on? Did you like make some tasks that you want to complete?Atwood: uh no, I er.. That's just sort of... err... off the top of my headSpolsky: *laughs* Well okay, you're doomed Jeff. There's some controversy. You, sir, are doomed, because you don't know what things you have to do.Atwood: Yes. I know, I know. I should have a spec, I should have a burn down chart, I should have, gantt charts. I don't really have any of that stuff.Spolsky: Well, yeah, that's overkill. You just need a list of things you have to do.Atwood: Yes.Spolsky: So you can go into FogBugz, making a little new project called stackoverflow. Which we might have...Atwood: We have, we have, we have a stackoverflow project, that's for sure.Spolsky: And then just make a list of tasks.Atwood: Yes, its been pretty minimal up to this point in terms of actual planning. Yeah we're getting to the point where we need to start planning a bit more about what we're doing.[5:27]
Spolsky: Yeah you make a list of task, like, one or two day tasks, put in one or two day estimates for each of them. And then you actually have something to base on something instead on based on... Cause I can't, I mean, at six to eight weeks, that sounds right to me *laughs*. I don't even.. What's that based on? Like the last time we build one of these programming Q&A websites, that's how long it took us? Cause I know I've never. And you know the last time I built something like this, it took about 72 hours. And that was the first version of the discussion forums for joelonsoftware.Atwood: Right.Spolsky: I know what happened was we were about to launch FogBugz 1.0, and knew that we wanted a place for our beta testers and users to post questions and get answers, sort of like a very simple discussion forum. And I think I spent like a weekend and I just banged it out, cause it was so simple.Atwood: So what you're saying is that I should be able to do this in like, a couple days if I was awesome, right?Spolsky: No, uhm, because we've also got tags that we want to do, right, cause we want to be able to tag articles and you want to search for tags and make tag clouds that sort of stuff. We got the ranking, the voting up and down, that's kind of hard to figure out an efficient way to do that.Atwood: Right. There's some parts to it, thats why I guesstimated at six to eight weeks but you know, I figured, the less overhead the better. It's only me and Jared as the only developer, why complicate it? So uhm, that's the state of the project. I do think based on where Jared and I are, we actually do have logins working, we have account creations working, logins created. I think by next week at this time we might have something for you, Joel, to actually try. I mean, it's going to be pretty minimal.Spolsky: Okay, did you just use the login provider thing that ASP.NET supports?Atwood: No err, we kinda rolled our own to a certain degree, because we just want something very minimalistic. We didn't want a overhead and dependencies. I mean, we're trying to be very selective about what dependecies we bring in. We're already bringing in ASP.NET MVC and a few other things.Spolsky: I mean this is just a part of the ASP.NET web forms or something. It's pretty easy, you just take this little login control and drop it on a page. I added that to... We have this internal FogCreek control panel thing that our staff uses to keep track of our customers and all that kind of stuff. And its er, you know, as soon as we got past ten people, we started needing to have something that some people are allowed to do and some people aren't allowed to do.Atwood: Right.
Spolsky: And we wanted to hire a bunch of people, and give them the capability of issuing refunds, so we wanted to make sure that the refund control panel required a logon. So I added a logon capability to an existing ASP.NET site, you know - couple of hours and it was actually - I happened to just use a LDAP source to decide who is allowed to log on.
Spolsky: So they'd just use their Windows password - erm, but it's actually kinda trivial to give it - to point it to a database and tell it to make a user directory. And it'll even make like user management features for you automatically. All those like oh.. 'Cause there's all these little aspects like oh I forgot my password and email me a new password, and getting that right can be kinda tedious.
Atwood: Yeah, the challenge I think is, and you mentioned one part of it which is integration with your existing Windows login, which is NTLM, so that's browser negotiation -
Spolsky: No, it's LDAP, yeah.
Atwood: And one of the frustrations with that -
Spolsky: No, it's not NTLM. No, no, it's not that crazy browser thing where the browser pops up a dialogue.
Atwood: No no, there's no dialogue popping. What I mean is it negotiates - Are you talking about negotiation of credentials automatically, where they know that you're logged in just by the virtue of the fact that you're logged into Windows? That's NTLM.
Spolsky: It doesn't do that. Well you could, but people don't like that. Because you have to use IE and it's still going to pop up a dialogue box and people don't like that. It's just er.. no it actually, the way I've got it setup, it actually gives you a dialogue box, in HTML form, where you type a username and password. So it's not that browser based authentication, it's just form based authentication.
Atwood: Oh okay, so you're using form based authentication.
Atwood: But this is an app for you guys internally though correct, is that right?
Spolsky: Yeah, it could use the NTLM but that just doesn't work as well in Firefox and Safari and stuff, it's just better to...
Atwood: Yeah. Well, that's what I was trying to get to. It does actually work in Firefox. The problem is that Firefox doesn't whitelist anything to do that, whereas IE does. IE says if you're in the intranet zone--you know that whole zone concept they have--if you're in the intranet zone, it will actually hand NTLM automatically. Whereas Firefox won't, so you basically need to build the whitelist in Firefox and say OK: you can just do *.* or fogbugz.*..
Spolsky: To the ASP.NET team's credit, they understand that people don't like that browser based authentication.
Atwood: Well, I think it works well in an intranet scenario, it just breaks down completely on the web. So if your product--I mean, if this is something you guys are going to use internally--that's, I would actually use the NTLM auth because it's just less for you to do, right? I mean, you just use the app and it magically works, which is pretty cool. But in the open internet...
Spolsky: What happens if you try to store like a cookie [coughing]. Excuse me, I'm sick. Bah.
Spolsky: Um, isn't there some kind of issue where every time you come back you get that dialog popping up and you have to...
Spolsky: ...save your username and password. [mumbling]
Atwood: No, NTLM works really well. I mean, it's just you gotta be very strict about it. You can never go across an open internet at any point, otherwise it's just a big pain in the butt. But if, I mean that's the, and to me this is the big conundrum with Microsoft. So much of their stuff is designed to be sold to coporations. Like, NTLM is a classic example.
Spolsky: (barely audible) That's 'cause...
Atwood: It works really, really well in the context of, you know, specific organizations that have an infrastructure. Um, and actually, you know, in my previous life I used to be a Team System MVP. And Team System is developed exactly the same way. You can see from day one that Microsoft assumed that everybody that uses Team System is...
Atwood: ...gonna be on a network where they have Active Directory and they're gonna have Windows credentials and that's how you're gonna access the system. Even the command line stuff that they do uses your Windows login, right?
Spolsky: Wow, yeah.
Atwood: Which is convenient sometimes and then like a giant, huge pain in the ass at other times, right? [chuckles]
Spolsky: Right, right.
Atwood: Because, for the people at Redmond, they're always on Active Directory. This is how they work. Um...
Spolsky: That's because when you're a company, first of all you have money, secondly it's not your money. But most importantly, even if you are being rational, spending the company's money, which is not yours... even if you are being sort of rational, a company will spend money on fixed costs. Right, you know how every company has fixed costs and variable costs. And the fixed costs are things that they have to buy one of no matter what, like a factory or an office. And the variable costs are things that they have to pay one of for every customer that they get. Like, if you're buying laptops, then a fixed cost is the design of the laptop but the variable cost is the keyboard and the screen and the various parts and the labour that goes into the manufacture of each laptop. And those fixed costs, you spread out amongst all the units that you sell. So, with me so far?Atwood: Yes.Spolsky: So if you're a company, spending on fixed costs is something that can be spread out over all those units. And if you're a fairly successful company selling a large number of products, that may wind up adding almost nothing to the cost of the product. So anything that's a fixed cost, businesses are generally willing to spend on. I don't want to go too far because you have to spread out some huge fixed costs over a very small number of customers, you're not going to want to do that. But on the other hand, something like the Apple model is to design really good products. They spend a lot of the money on the design up front (something that Dell doesn't do) because they want the design to be really good because that sells more units. And designing is a fixed cost; they only have to design once no matter how many units they sell. So, in general, businesses are surprisingly happy to spend on fixed costs. They don't like to spend on variable costs, they generally want to use cheap parts because they don't want to drive up the price of all their units, because then their individual units become more expensive, and the consumers won't buy them because consumers are ridiculously stingy.Atwood: Right.Spolsky: Now, what consumers will spend on is a whole different story. Consumers will spend on things that they're used to spending on, but almost all consumers are going to want those to be priced at kind of a commodity proce where there's almost no room for profit. Like, they're really, a consumer... an end user consumer, most end consumers, are not going to spend more than the minimum commodity price for most of the things that they buy. And the exception is luxury goods. Like, certain things that they consider a luxury good, whether it's a latte, or jewellery, or a really cool flat screen TV, or whatever, an Apple iBook or something. If it's a, er, MacBook (sorry, they don't make iBooks any more), if it's a luxury good then they will spend more than just what it's actually worth. And that's the only way you can make a profit off of a consumer. You can't really make a profit off consumers if you sell them things at the commodity price, because you're selling it at the price it cost you to make, like everybody else. And you're scavaging to try to find two or three cents and make it up in volume. That's something that's practically impossible for startups to do. Whereas, if you're selling a luxury good then you can charge significantly more than what the good actually cost, because there's some appeal, some luxury appeal to this product.Atwood: Well, what would you define as luxury on the web? I mean, certainly, what I got from David's talk, and he was very clear on this point, was that you have to sell to businesses if you want to make a lot of money, which is the same thing that I'm hearing from you, is that consumers really aren't really going to flock to whatever service it is you're selling online. And I think part of the problem, and what you're getting at...Spolsky: I'll tell you, the only luxury good I can think of on the web, and I'll come up with some more, but... JDate. It's the Jewish dating website.
Atwood: [chuckle] Nice.
Spolsky: It's a slight luxury product over match.com or whatever that one's called.Atwood: Isn't that what people use Facebook for? For the whole hook-up, the whole dating thing? Isn't that...Spolsky: Yeah, not so much. I think JDate.Atwood: So pretty much dating sites would be the only luxury you can think of off the top of your head?Spolsky: Jewish dating sites.Atwood: Jewish, specialised dating sites.Spolsky: The regular dating sites are commodities. I'll probably come up with some more examples if I think hard about it, but there's not that many luxury products on... There are luxury retailers that sell through the web. But when you think about a luxury product, even in the consumer market, forget the web now for a minute, think about Abercrombie & Fitch. As a luxury product they sell a pair of jeans that costs them the same 48 cents to manufacture in India or Vietnam as Old Navy, but instead of selling them for $20, they sell them for... I don't know, how much are Abercrombie jeans? $70?
Atwood: I have no idea.
Spolsky: $100? And, in order to create a luxury product in fashion, the fashion industry, you have to establish a brand name, so that the people wearing that product will feel extra cool, or will look extra cool to their friends. And so, that's also a fixed cost, incidently. So the way that a fashion retailer will establish that brand name, is that they'll buy all kinds of advertising with good-looking models, and they try to get celebrities to wear their clothes, and they'll do all kinds of things to try to associate their particular product with a high-end thing because they're still selling the same product that everybody else is but with maybe a slightly different look that is preceived to be better. But in order to make it a luxury product they also have to create this brand allure, the luxury brand allure. Which they spend a lot of money on advertising to create that luxury brand allure. And it's not to create awareness. The reason that there's a Prada ad in the fancy magazines that smell like perfume, is not because you've never heard of Prada, but because they want you to start to associate Prada with high-end, luxurious type things in your mind. And so, they're using that money basically, to buy this... not brand awareness really but brand positioning that allows them to be a luxury product and to charge more for their product than the commodity price, for a limited number of people.
Atwood: Right, and certianly when I say luxury, i don't mean online services at all, with the possible exception of the dating services you mentioned.
Spolsky: No, even in the computer industry we have very few. Apple is a luxury product they charge a couple of hundred dollars more for every computer than the IBM equivilant and it's a luxurious product, slightly better workmanship, slightly better finish and an allure, the brand name they've created with the switcher campaign to try to make you think that you're the cool, scrawny dude who doesn't quite know how to shave every day yet.
Atwood: Yeah, but that's still hardware though. I mean, I'm talking about stuff that's purely bought online.
Spolsky: I can probably think of some luxury software products. Maybe Aperture as a opposed to iPhoto. Which is... sometimes you can get your luxury appeal by pretending to be professional, by being sort-of "prosumer", like those thousand dollar cameras which are a little bit too complicated and they look kinda geeky and they're not luxurious in the sense that it's leather, they're luxurious in the sense that they appear to be a professional product sort of like a Hummer appears to be a professional vehicle that you'd use for fighting wars, or something, instead of what it's really for, which is going to the supermarket. So that's an example of one way you might create this luxury appeal. So now I should really wrack my brain and try think if there's anything on the web, but the truth is the web is a media outlet and media is just media, it's not really...
Atwood: Well, it's more akin to the magazines that you talk about, which are obviously ad-subsidied. I mean even if you pay $4 or $5 for a copy of Vogue, or what have you, the thing is 30% ads, or more.
Spolsky: Most people are probably paying a dollar for Vogue because they have subscriptions.
Atwood: Yep.Spolsky: Let's see what you've got up there right now.Atwood: Well, I was talking a little bit about my frustrations with Firefox which is...Spolsky: I am going to the bathroom now. The crap.. the poop is coming out now.
Atwood: That's not... of course you're referencing the classic penny arcade cartoon which I'll have to link up in the post now... oh...Spolsky: About half the things that you have up here are directed at people - that I don't- so I don't get conversat- well, not half these people-Atwood: Okay, here's what it's like - it's like being at a dinner party; you know me, but you don't know half of the people, but the cool thing is in the twitter you can sort-of see the conversation, follow it and you can start talking to other people if you want to - and it's great. I mean, I don't know how to describe it, it's really strange, I know it seems like it a really useless service, and I know I sound-Spolsky: See, you're someone I'm actually interested in knowing what you're doing, so I might follow you on Twitter: "Ant is against human rights, LOL oh commentors you bring the funny" Ant?Atwood: Ant is a build...Spolsky: How is it against human rights?Atwood: Well, you have to follow my blog. There is some context here. So assuming that you're following me, you would read my blog, which you haven't been, obviously-Spolsky: Oh yeah, you were talking about putting keyboards into the dishwasher and you've got a really messy baby here...Atwood: Prior to that I was talking about more the problems of XML, and a lot of people consider Ant to be a poster-child for the abuse of XML-Spolsky: What's interesting is that XML was really designed for markup, i.e. taking text and adding markup to it; so it's not designed to be an efficent way to store data structures, it's kinda a mess where you use it for data structures.Atwood: But that's 90% of what [...] I use it for in Visual Studio, I store configuration files, and crazy markup I didn't want to see, and it's all data, right?Spolsky: Well what happened is that they is that everyone suddenly realised is: if you have, if we all use the same method no matter how stupid, to store our configuration files - especially if it's human readable - then you don't have to write that code every time for configuration files. I mean if you look a the classic Unix utilities they all have their own file format and they all have code to parse it and they all have their own rules about how you escape a special character and how you put a quote inside a quote and how you continue a line on the next line and how you put a comment in there and they all have their own rules for that and they all have written their own parsers for that - which have many bugs - and it's just a big mess and as soon as XML came out just the fact that everyone agreed on that on using XML even it it wasn't the ideal format meant that we got all these libraries that we could use for our programming languages and we could stop worrying about what the actual file format was we could just say, "here take this structure and put it in that file and leave me alone", or "Load this structure from that file".Atwood: Right, and-Spolsky: And I don't think you're even meant to look at the text of the file I think you're probably meant to - I mean you can edit an XML file in a text editor, but I think the original vision was that there would be these nice XML editors - of which there were surprisingly few...Atwood: - and that's my problem. You really end up with XML looking at it almost all the time and it makes - it's just so frustrating cause in our current stackoverflow.com project there's of course web.config, that's one of the master files in ASP.NET, and I hate reading web.config, there's actually not that much information in it, but the formatting makes my head hurt everytime I look at it and everytime I look at it I think "God, there's got to be a better way to represent this". You know-Spolsky: Is there not a GUI, does Visual Studio not have a web.config GUI editor? I guess it doesn't...Atwood: There is some, but it's mixed you know web.config is sorta like the registry in Windows, I mean it's pretty much the place a lot of stuff just ends up, you know, like Word, I'm sure...Spolsky: -What happens when if load it up in, have you ever used one of those tools like XML spy or one of those XML editors, XML spy I think was the biggest one.Atwood: What's that really going to give you, just like an Excel-type view of it? I mean without, maybe you don't see the end tags?Spolsky: No, I think you see like a tree; yeah, I think you see there's a tree; you don't see any of the tags and also it knows, it looks in the DTD so it knows what things can go inside what other things so it lets you, instead of just have to type something, it gives you the equivalent of intellisense, where you can - oh, I don't know what I'm talking about.Atwood: No, no, actually, you're on the right track. When I wrote that post I tried to be clearI don't think that XML is evil, just think that - particularly in the Windows eco-system with Visual Studio - it's become the go-to standard. Like if you have any kind of data that you want to store, in a file, that's somewhat human readable then you use XML and I'm not really sure that's the right attitude we should have towards it. I think XML solves a specific set of problems, like particularly heirarchy, like you mentioned tree: First of all, I hate trees; I mean I think they're necessary from a computer science standpoint, but from a useablily standpoint and a user standpoint trees are the worst thing you can put on the screen - so when you said "hey, you get a tree" I'm like "that's not a plus, that's a minus" I don't want to see a ten layer deep tree of junk.Spolsky: Yeah a clean text file would be nicer.Atwood: Yeah, so-Spolsky: I definitely agree for the types of data structures that you would use YAML or JSON or something for, it winds up being significantly cleaner.Atwood: Yes.
Spolsky: And you know the other weird thing about XML is that it doesn't even have a consistent way to do certain things, like deciding whether something should be an attribute. Let's say that you have a name-value kind of situation. You know, where the name is "price" and the value is "$100". It's not even clear if you're supposed to say <product price="$100"> and put that in an attribute, or say "<product>" and then open a new tag called "price". XML is just not consistent about that. You can do either.
Atwood: Right. Yeah, I think XML raises as many questions.
Spolsky: It's clearly not designed for that. It's really designed just to be for markup, like HTML. It's great for HTML.
There were so many...and you know what, the truth is, before HTML, there were things like RTF, and there were so many kinds of textual-based attempts to represent slightly-rich text, or text where some of the text may have various attributes, and maybe nested. And, there have been many attempts to do this, and half the time they are these ad-hoc file formats that invented by somebody who doesn't really think through all the issues. Especially of escaping, and stuff like that. Escaping, character sets, validation, testing for validity. XML at least gives you a default option now, which we never used to have, where those issues have been thought through.
So even if you are too stupid to know a single thing about Unicode, as many people...you know, the truth is that, the early days of the RSS spec, those early specs were written saying it's a plain-text XML file, without saying anything about character set. In fact, examples did not actually mention encoding. That should have made the spec incorrect, or invalid, or wrong, when faced with Unicode data, or data in other character sets, and yet, because everybody who used XML and knew about Unicode knew about character-set encoding and knew how XML handled character-set encoding, it was possible for Dave Winer and the early "my.netscape" people, when defining those formats, to actually remain completely, blithely ignorant of character-set and encoding issues, and still come out with a file format that allowed you get the character-set and encoding things right.
So, that's kind of a nice advantage.
Atwood: Right, because I think…say you had a file in Notepad, like, truly a plain-text file. There’s that byte-
Atwood: No no, hear me out-
Spolsky: You mean Windows 1252?
Atwood: Right, because there’s no encoding information, like a text file. How do you know what the encoding is for a text file? Where is that information?
Spolsky: Ahh..I can tell you that. It depends. Well, usually it has to be out-of-band. It has to be in…but it depends. HTML, you can carry it in-band, using the http-equiv, but usually it has to be out-of-band. And, in fact, the way Notepad knows, if you’re asking that specific question, is that it does a statistical analysis of the text, and it uses that to try to guess the character-set encoding, based on the statistical occurrence of various bytes, and then it uses a particular profile, and it’s actually kinda interesting. Somebody has an example sentence somewhere, have you seen this on the internet?
Atwood: Yes…that’s what I was saying…
Spolsky: You can type in Notepad, and the next time you open Notepad, you get four Chinese characters, because it happens to be statically…it happens to trick that algorithm. That’s a really bad algorithm.
Atwood: Right, but that was my point…I’m trying to provide support to your point, which is that at least in XML you have this tag that explicitly says “this is the encoding” right, “of this XML”, were as with a plain-text file, you have to come up with some scheme, and the Notepad scheme of guessing kinda sucks. So, I get that part of it, and I wasn’t trying to present it as "oh, XML is bad, let’s all switch to this new that all the *inaudible* guys are using, but…why don’t we think about what we’re doing, which is sort of the general theme what a lot of the stuff in my blog is, can we just think about this, and not make a blind choice based on "Well this is what my tool does, so that’s what I have to do", right?
I don’t even what to learn anything about any other…
Spolsky: It sort of depends…I mean, if I’m writing some C# code, I’ve got a bunch of data structures, I want to persist them to text file that people can edit and write…why think about it? Why not just the XML Serialization objects, and just be like *plbbtt*. Done. Haven’t thought about it. Now it works.
Atwood: Let me give you an example. I know it’s written in stone at this point…
Spolsky: I mean, I’ll think about things that are important…like, things that are really…like, let’s say I’m inventing a programming language. Well then, I’m not going to use XML as my syntax, because that’s the most important thing about my programming language. But if it’s just like, how to persist some interesting data structure that I’ve created with C#, into a file, that nobody has to read, I just have to be able to load it again later, you know…why spend even a minute thinking about this when I can think about something that’s even more core to my product.
Atwood: Yeah, well…sure. I mean, that’s an argument that you can pursue down the rabbit hole. I don’t know how far you want to go, but...
Spolsky: *laughs* Isn’t that what we’re doing here?
Atwood: ...but to me it matters…every time I look at web.config, there’s a mental cost of me having to parse all these stupid tags mentally. “Here’s this end tag, here’ s this giant, verbose thing where only 10% of this actually matters”. I mean, what’s the mental cost of that times the number of developers in the world, times number of projects in the world. I mean, I think this stuff matters. And you can also find people will…they’ll develop a website, and they’ll never view-source on it. They don’t really care what the markup looks, as long as the rendered result is good. I, philosophically disagree with that. I think…
Spolsky: It depends on the situation. Come on…if you’re grandma calls you up, and needs a real quick HTML page to sell her couch for craigslist, and she just wants some formatting and some pictures and stuff for that, who cares what the HTML looks like?
Atwood: Well, I care. In this case, it’s stackoverflow, so I mean…
Spolsky: Well wait…that’s different…okay, stackoverflow is your main work, it’s your main…but here, you’re just trying to make a little webpage for your grandma…who cares. You know, I think really just depends on the situation. I think you could spend time worrying about things where they really matter. Let me make…while I’m just counter-point arguing, web.config…I mean, you could use YAML for web.config, but XML is far better known than YAML. So, if it’s in XML, 98% of those developers who go in there, and look at it and try to edit it, are gonna be like “Yeah, it sucks, but at least I know what it’s doing.” Whereas they’re going to look at YAML at gonna be like “What are those little dashes? And what does it mean when there’s a little star in front of something, or a little ampersand in front of something, I don’t know what that is, now I’m gonna have to go learn it?”
So, a lot of times, doing what people already know, instead of doing what’s better is helpful.
Atwood: Sure. It’s a trade-off.
Spolsky: Kinda like QWERTY vs DVORAK keyboards.
Atwood: But my audience is primarily software developers, right, so I kind of hold them to a little bit of a higher standard than random people creating websites. Sure, if my wife is creating websites, than I don’t expect her to view source, and care that all the tags are closed, and that we’re not using inappropriate tables, we’re using DIVS, and…
Spolsky: But if you call up your wife, and it’s an emergency, and she has to go into your web.config and make some last-minute change, and you’re on the ski slopes, so you can’t even use your Windows Mobile telephone to get on there, and you have to tell her to log on to the website and edit the web.config file, and she happens to know XML from somewhere else, because it’s kind of a standard that everyone learns, than at least she’s got a hope of doing, whereas if it was in YAML, she’d be like “Ummm…uh-oh. New thing to learn. Emergency.”
Atwood: Well, you could make that argument about new programming languages…anything new. To me…I don’t know...
Spolsky: Everything new is bad *chuckles*
Atwood: Yeah, I think obviously there’s pros and cons to each. I’m not saying that one is the right solution all the time. But I think, ironically, that is what’s happening with XML. I think people are like “It’s always the right answer. Because it can store anything, right? And all the stuff I use uses it, so it must be the right the choice.” And bothers me a little. Maybe I just contrarian. Maybe I’m iconoclast and I want to try different things and see different things, but I think actually understanding the alternatives helps you understand XML better, a little bit, I think too.
Atwood: It’s like…what is it good at? What is it not good at?
Spolsky: XML is the God language. You’re just gonna have to get used to it. *laughs* Just accept the divinity XML.
Atwood: Yeah. That’s what I’m getting at…just understand the pantheon of gods that live with XML. So I’m gonna-
Atwood: Right. And I hope people reading my blog would not get the idea that you should have a knee-jerk reaction of “I don’t want to use what’s popular” or “I always want to use what’s popular”. I mean, it’s always about understanding the tradeoffs and applying those tradeoffs to your particular situation. I think that is the absolute art of programming, right? It’s understanding what you could do, and which one you thing fits your situation best, versus what so many programmers do, which is “I’ve learned to user a hammer, and I’m gonna hammer everything”, right? That me, it’s about self-awareness…
Spolsky: That’s what distinguishes the good programmers, the fourteen of you who listen to this podcast, that actually care about their tools and what to learn new ways of doing things, from the people are just like “When it works I can go home, so let me get it to work and go, and please stop bothering me with all your stupid things.”
Spolsky: You know, I’ve got Outlook installed on my phone, on my laptop, on my desktop, and every time I have a meeting or something, or some kind of task notification, all three of them beep.
Spolsky: And they’re not even time-synchronized, so it’s like one minute, this one goes, then a minute later that one goes, then a minute later my phone is beeping at me. Is there a way to tell Outlook that you don’t want to be notified on all your devices when they’re all in the same room with you?
Atwood: I don’t know. I no longer have to use Outlook, although I actually kinda like Outlook, and in a way I’m kinda glad too, because I just feel like Outlook does too much for me.
Spolsky: Those…where did I see this, news.ycombinator.com? One of these ycombinator startups make a little app that watches what you’re doing, and tells you how much time you spend in Facebook, and how much time you spend reading news, and stuff like that.
Atwood: Is it that one named x-o-b-n-i?
Spolsky: No, that’s a different thing. It just tells you who you’re emailing a lot of. Geez, I’m never gonna find this anymore, ‘cause their search doesn’t work so good…
Atwood: Are you gonna make fun of me for not trying to pronounce x-o-b-n-i, or whatever it’s called? *laughs*
Spolsky: No, it’s called xobni, man…
Spolsky: Ahh…”procrastinate”…ah…why don’t they have search on news.ycombinator.com? Anyway, one of the startups does this thing where it tells you, at the end of the week, “you spend six hours this week just reading reddit, or whatever”, and they’ve actually, I guess, been accumulating this data, and they realized some statistics about what their particularly geekly audience spends their time on, on the computer, and Outlook was ridiculously high on the list. It sort of combines websites....it doesn’t just say “Internet Explore”, it actually knows what website you were at, so the top ones where like Google Reader, reddit, Outlook, and Word and Excel (both very high up there). I was surprised that Outlook was at the top…I was surprised at how much time people spend in Outlook.
Hahh! Wait! I think I know why that is!
Spolsky: I just figured that out. Every friggin’ time you have a task, Outlook launches this little reminder window, and that comes to the front and gets the focus. And so it probably things that everytime…so, you go to the bathroom or something, you come back, and there’s this little notification on your screen that’s been there for however long you were at a meeting, or in the bathroom, or whatever, telling you that’s time for that meeting, or to go to the bathroom, or do whatever you just did. And all that time, it thought you were using Outlook. Well, actually, I don’t really know how their app calculates it.
Atwood: I’ve seen sites like that, where you opt-in, and it keeps track of what you’re doing, for a variety of different reason, but is it definitely interested, and to me, the browser is by far the number one app that I’m using all the time.
Spolsky: I think this reveals what their business plan is. I hadn’t thought about that, but what’s the business plan of somebody that runs a little app that tells you what you’re wasting time on, so you can try to spend next time on social new-networking websites…Digg.com or reddit?Atwood: Well it’s quite a time drain-
Spolsky: No, I think it’s probably , if they collect all this data, they can sell that to advertisers, to provide, sort of Nelsen ratings for websites. That’s actually based on real-world data, like how much time was spent on Facebook, how much time was spent on msn.com, or whatever those sites may be. They can provide data that’s sort of like the data that…I guess Alexa has this data.
Atwood: That’s what I’m saying. It’s basically Alexa, what you’re describing. The problem Alexa has is, their statistics are kinda a lie because they only get data back from people that have their little toolbar installed, so you’re looking at a pretty small statistical subset.
Spolsky: That’s right. And these people will only get data back from people that installed, and that’s sort of a problem, yes. I mean, one thing they could probably do is…yeah, I don’t know what they could do. They could take a couple thousand people and pay them to install this thing….people that are selected sort as demographically representative of the United States, or whatever demographics you want to get, and use that as a…I don’t know what the statistical term is…use that basically to provide a base-line.
Spolsky: So you can say “Alright, so the people actually install this little gimmick heard about us through ycombinator, so they’re gonna spend a lot of time on reddit, and on ycombinator-related sites and stuff like that, so that’s all gonna be disproportional, but if we can get a thousand people we pay to install this sucker, then that can get us alignment data that actually demographically somewhat valid.
Atwood: Oh yeah, it’s basic Statistics 101, right? I mean, assuming you have a large enough sample, the data is technically valid.
Spolsky: And then, if all their people that [generate the logging] data suddenly stop going to reddit and start going to Digg, then they can see if the same happens in the statistically accurate sample.
Spolsky: That must be their business plan.
Atwood: So, have you been getting any angry emails about the podcast stuff? I’m not sure how much of your email you actually read, because I’m sure you get way more than I do.
Spolsky: *laughs* No, I don’t get angry emails. I guess we didn’t say anything really controversialAtwood: No…well, you did get in trouble with Paul Graham. We should mention that.
Spolsky: Ah…I did?
Atwood: Maybe we shouldn’t. *laughs*
Spolsky: What did I say? Oh…I talked about his name-dropping.
Atwood: Right. And you just made an off-the-cuff remark that was little silly. So yeah, people do listen. I don’t know if you read the transcript, but hey, Paul Graham is listening, right, so that’s good.
Spolsky: I don’t think he’s listening. I’ll bet you he has a “Paul Graham” search at Google, and the transcript showed up on…as soon as somebody typed it in the transcript, it came up as a result on Google for Paul Graham, so Google probably emailed him saying…
Atwood: Yeah, probably.
Spolsky: But Paul, if you’re listening to this, send me an email right now saying “No, I’m actually listening to your podcast.” ‘Cause it would be nice to know who that person is that’s listening. I would make this a podcast entirely devoted to talking to Paul Graham.
Atwood: Yes. Now I know we’re not letting people ask questions through email, but I did get one email that was kind of plaintive, and I did want to talk about it. It’s from Michael Dorfman, and he said, and I quote: “a couple of your comments in stackoverflow podcase #3 actually made me feel a bit embarrassed on your behalf.”And one of them is about pronunciation, which you made fun of. So Knuth, I guess the K is not silent, as Michael points out, so it’s actually Knuth, which, I don’t know how I would know that.
Spolsky: *laughs* Yes.
Atwood: Also, that I don’t know the different between computer science and software engineering, which I don’t think their should be this big divide. Maybe I’m just an idealist…I think it’s all about what you do in the world. Part of it’s computer science, part of it’s where the rubber meets the road, so I think that’s semantics on some level.
Spolsky: No, but [to his defense] these words do have meanings in academic departments specifically.
Atwood: Yeah. Yeah.
It’s not like the different between…so at Yale, they have an English department, and they also have a comparative literature department. And the reason they have a comparative literature department is the English department wasn’t giving tenure to any Jews, so they have to make another department because they couldn’t get senior professors in the English department to hire Jews. This was in the 50’s. So they have two departments that basically do the same thing.
So, Michael was very, very concerned that I didn’t have a strong enough background in computer science. So one of his recommendations was SICP (Structure and Interpretation of Computer Programs).
Spolsky: Ahh…great book. Oh man.
Atwood: Yes, see…Joel loves it, Michael. So I just want you to know *laughs* at least half of this is legitimate, right? I will admit: I’m something of a hacker. To me, my blog is my outlet for actually researching computer-sciency-related things, and some of it’s truly related, like washing a keyboard is not computer science, but it’s interesting to me, right? Because all of this stuff is interesting to me. And that’s really what my blog was, was me setting down and having some sort of study time about my profession. It wasn’t really necessarily reading “The Art of Computer Programming”, by Knuth (thank you very much), but Michael was very concerned.
It was a very nice email. It wasn’t in any way mean or anything, but I think it’s what you talked about, which is people are seeing different aspects of you as a sort of internet personality, beyond what they get from reading your website.
Spolsky: Absolutely. That’s why I like the podcasts.
Atwood: And I’m glad that people now are realizing that I actually have no idea what I’m talking about.
Atwood: I’m glad that people are getting that. ‘Cause I am truly just a guy.
Spolsky: Yeah, oh, also, to those of you who read my website, it’s a joke, okay?! *laughs* Those are jokes. They’re supposed to be funny. *laughs* Okay, got that off my chest.
Atwood: Do you have a lot of people not understanding your jokes, and emailing you about whether you’re actually joking? Is that a real problem?Spolsky: Yes. Well, no…I mean, a lot of times, they just don’t get that it’s supposed to be funny.
Atwood: I see. Is it because they’re from a different culture, or they just have no sense of humor?
Spolsky: They have no humor. But if you challenged them with that, they’d say “I have a sense of humor! Of course I have a sense of humor! That’s just not funny!”
Atwood: *laughs* Yeah. I think it’s important to try, though. I’d rather have a site that’s trying to be funny and somewhat failing than one that’s totally dry. I mean…
Atwood: …that’s not really much of a trade-off there.
Spolsky: Yeah. Absolutely.
Atwood: So no questions this week. We don’t have any.
Spolsky: Yeah, we didn’t have any good ones. I’m sorry, that’s going to be insulting to the one person that sent in a question. It was a little rambly, so...shorter next time *laughs*
Spolsky: But, if you do have questions, please record them, email them to use. Just things that you want us to talk about, yeah know? Until we starting getting…for the next…what did you say…six to eight podcasts, we’re not going to have that much to talk about about stackoverflow per say.
Atwood: Well, we’ll have some, but it’s not going to be enough for the whole hour, certainly.
Spolsky: So if you have any suggestions of stuff that you just want us to rant about, or you want to get one of our opinions on, or both of our opinions on, or if you can think of something that we might have widely divergent opinions on, that would be especially good, so record it using the little microphone on your computer and send that file to firstname.lastname@example.org. That’s email@example.com, and we’ll put it on next week…give us something to talk about.Atwood: Yeah.
Spolsky: Anything else?
Atwood: No, I think that’s it.
Spolsky: Oh! Keyboards…the keyboards in the dishwasher thing. There’s two things I want to tell people. One, if you have a piece of electronics and you spill coffee or a soft drink on it, or whatever, like your laptop, you spill a bunch of milkshake on it, the first step is to immediately remove all sources of electricity, so things don’t get shorted out. Take out the battery and unplug it. And the second step is to just start rinsing the heck outta that thing. Just put in under the water and rinse it really really well. And the third step is to let dry for a really really long time, like a week. And that’s the way…people don’t realize you can rinse electronics as long as the power source is removed. That’s the best way to get all that gunk out of there, and once they dry they’ll be good as new.
Atwood: So you’ve actually done this?
Spolsky: Regularly, yeah. So that’s the thing to do if you get a mess on your keyboard or in your computer itself. Just rinse it and if you can take apart, in two or three places, so you can get better access and those things dry, the water’s going to evaporate faster so it’ll dry faster, and you won’t have to wait the full week.
But, in general, that’s the way to salvage electronics and, you know, I don’t take responsibility if you ruin your electronics, but this is the best way to try to salvage them if you do spill something on them.
Atwood: Good [tip?].
Spolsky: Second thing is, this is a bizarre story, I just have to tell this. I can’t believe that this worked. I had a friend call me up, who’s not very savvy with computers, and every time she try to go run Interet Explorer, she got these really strange error message about things not being installed, and just really bizarre…the kind of stuff you’ve never heard of, and when you search for it, on the internet, the error messages made no sense. It was obviously some kinda of weird…I very quickly determined it was a hardware problem, because it was sort of inconsistent.
She has spent several hours on the phone with Dell trying to get them to talk through how to fix it, and they had not recognized it as a hardware problem. They had assumed that it was a software problem, and what it probably was is just some memory that wasn’t totally well-seated.
So, after completely giving up, I just had no idea to fix her computer, and couldn’t get her on CoPilot because she couldn’t even download and run a program because Internet Explorer didn’t even launch…
I suggested, for some reason…I said “Pick up the laptop five inches off the table and drop it straight, flat on to the table.” And I’m not sure why I suggested that. I guess I had heard that somewhere that sometimes, what happens is that the laptop falls five inches…it’s not bad for the laptop, I mean...they’re designed to fall three or four feet without significant damage.
And if there are any chips on the motherboard that aren’t fully seated, the laptop stops, the chips continue, and it sort of drives those chips in place.
Atwood: That’s very old-school. I remember that from a really early computing story. I want to say “The Osborne”…ah, man. But keep going.
Spolsky: Yeah. So I said “Just measure five inches. Hold it up with both hands, very carefully, over a very hard surface, exactly five inches, and just drop it as suddenly as you can, and as straight as you can”, and that fixed it! And it’s been fixed ever since. Is that bizarre or what? I didn’t even think it was gonna work, I just thought it was gonna be fun. ‘Cause…it couldn’t hurt her computer to drop it five inches, and it might save me a trip to Brooklyn.
Atwood: Yes. Did actually work? Did it work?
Spolsky: Yes. And she was like “Now what do I do?” And I’m like “Okay, reboot. And just try all those things.” And she’s like “Oh my god everything works.” And I’m like “Ah, this is crazy, I don’t believe it.” She’s like “No, really, it works.” And I’m like “You’re just being nice to me. ” She’s like “No, it totally works now!” I’m like “Alright, well, I’m coming to your house tomorrow, so give me a call if it still works after a day or two”, and it still works.
Spolsky: So, last minute. If you’re having hardware problems, with a laptop, don’t blame me if this doesn’t work, but try the “Five Inch Drop to Desktop” solution. It might work.
Atwood: And I can tie this back into the beginning. I mean, the Fonz would just hit it, right?, and make it work. That's what the Fonz does. So..
Spolsky: That's right. And that's why, yeah, that, in the old days people would just hit the Tv and that would fix it because something would, would seat.
Alright, well, uh that's the end of uh, Stack Overflow Podast #6 -- number 5?
Spolsky: Number 5. We need a counter. We need an official counter.
Atwood: Yes. I plan to...
Spolksy: Thanks for listening. Uh, please send us something to talk about for next week: suggested areas of controversy, um things that we can fight about, um... jokes that we can tell, etc. Uh, firstname.lastname@example.org [email@example.com]. Thank you very much.
Atwood: Yup. Bye.
Alright, now, how do I turn off the recording?