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 Pains. 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.
Atwood: So that puts it at, lets see, what is it? It's the middle of May now, so, end of June - early July.
Atwood: 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..
Atwood: ... later on. So
Spolsky: 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 yeah, it's hard to manage having a bunch of people contributing at this point, cause we're still in very much the formative 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 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 head
Spolsky: [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.
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 StackOverflowproject, 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.
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.
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 be able 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, that's 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 dependencies 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.
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 - 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 dialog.
Atwood: No no, there's no dialog 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 dialog 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 dialog 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 corporations. 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 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...[11:56]
Spolsky: And it's actually, the truth is it's actually sometimes a pain in the ass in the other direction, which is like, the other non-Microsoft companies, sometimes refuse to get with the NTLM program, in a frustrating way, and you're winding up having to maintain thousands of passwords, and log on to them all separately in different ways.
Atwood: But it is interesting because the NTLM discussion does, I think, hinge on a key aspect of Microsoft's strategy, in that they really are beholden to a lot of these big companies, because it's where a lot of their money comes from too. If you've ever, like, and again in my previous job I worked pretty closely with the Microsoft sales team, and these are guys that get paid based on how many, essentially, corporations or mid-sized to small businesses, actually buy the Microsoft software. So they do whatever it takes to make the software sell into the organisation. And what those organisations want, and this is in contrast with the Apple model which is very much individual-consumer-oriented. Apple isn't going into large companies and saying, having sales people call them and say "What can we do to get OS X in your organisation".
Spolsky: Yeah they used to a long time ago, but they just lost... they just lost.
Atwood: But it's totally tied to the revenue stream of the company in a very intimate way, because of the sales staff and everything else. So it's kind of baked into some of the products, and it's frustrating too because I know some of the teams try to satisfy both audiences, right, but they have to satisfy these big money contracts, these sales people that make huge amounts of money selling, you know, the product into large companies.
Spolsky: Yeah, and that's just basically because companies have money and they will spend it, and users don't.
Atwood: Oh, absolutely.
Spolsky: And users are looking for the cheapest way they can do things.
Atwood: And, it was interesting, I don't know if you saw, there was a talk by David Heinemeier Hansson (I'm probably mispronouncing his name), where he was talking about...
Spolsky: You say that about everybody. [laughing]
Atwood: Well, I think it's a general disclaimer I use because I tend to mispronounce things.
Spolsky: His name is pronounced "Dooaad..."
Atwood: [laughing] Ah, exactly. So I like to put the disclaimer out there. Because I have a history of mispronouncing things a lot. I think it's because I grew up in an area that was somewhat rural, and I read a lot. And I didn't hear people using the words that I was reading, so I kind of had to imagine what they would sound like. And I think that got, at some point just, you know, it became second nature for me to pronounce things however I thought they should be pronounced and not look them up. But anyway, getting back to David's talk...
Spolsky: Yeah, it's definitely "David". Yes, it's definitely pronounced "David".
Atwood: I'll just use the first part of his name.
Spolsky: This was at Startup School? This talk you're talking about?
Atwood: Yeah, it was a good talk. He just talked about, basically getting people to pay you. Charging money for your service. Which, you know if you look at sort of the Google model, it is everything is advertising subsidised. So, in a sense, what they're doing at 37Signals, is pretty far apart from what Google is doing. I mean they're saying "our product is good, you pay for it, and you get it", right?
Spolsky: Err, yeah, I mean advertising is an unusual kind of business, in which some of the benefit is provided to somebody who is not paying the money really. Or there's sort of a third party, which is the customer, the Google search engine users, who get something for free, because the corporations are paying for the advertising. But, I mean, the truth is, it was sort of an interesting talk. On the other hand, it's kind of pathetic that somebody needs to stand up at Startup School and tell people that they need to charge for their products. And that that then becomes controversial. Like, how stupid are these people starting companies that they don't think that they have to charge somebody for something? And [laughs] I say because, we haven't really revealed that... StackOverflow is sort of an advertising based model.
Spolsky: And also we've not, we have almost no expenses, and et cetera. But, you know the important thing to remember is that businesses will spend money and consumers won't.
Atwood: Yes, and that was David's point, and that was really interesting to me, because it ties into what Microsoft does. They sell hugely into corporations. I mean, it's got to be a huge percentage of their income.
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?
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.
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 price 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 jewelery, or a really cool flat screen TV, or whatever, an Apple iBook or something. If it's a 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 scavenging 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, incidentally. 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 perceived 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 certainly 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 equivalent 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, instead of the tubby...
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-subsidized. 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.
[23:50]Spolsky: -and the dollar barely pays for the postage, so it is definitely ad-supported and obviously Google is ad supported; and that's a different model where what you're doing is selling to businesses who are willing to pay money, instead of selling to consumers, and you're disguising yourself as a consumer business but really you aren't, you're a business business. And that's a sorta this funny advertising model where you get someone else to pay for what the people get for free.
Spolsky: So I think David at startup school might have been a little bit disingenuous because the truth is the people who are making these business models of "free" usually have a slightly more complicated model in mind of "free and advertiser supported in some way". And unfortunately the success of Google and the story which everyone knows - where Google decided to build eyeballs first and figure out how to monetize it later - that success story gave people permission to not worry about how to monetize it, and I think Facebook is kinda a good example of that of someone that felt like "let's not worry about to monetize that, let's just get the scale 'cause if you get the scale you're definitely going to be able to monetize that somehow."
Atwood: I think at Facebook scale you might be able to, but that's one of the interesting things about AdSense. I dipped my feet into AdSense, I have the other site, FakePlasticRock.com, and I started playing with AdSense because on CodingHorror the the advertisers actually approached me, so there was no man in the middle, it was me interacting directly with the advertiser - which is nice, I mean it's a great model if you can get it-
Spolsky: Fake Plastic Rock... Oh My GOD!
Spolsky: This is your site?
Spolsky: "From Rock Man to Guitar Hero"
Atwood: Yes. I have a little bit of an obsession with fake plastic musical instruments, I don't know, I really love music.
Spolsky: Oh, that kind of rock
Spolsky: I'm sorry, I thought it was rock, like stones.
Atwood: No no no no, as in rock music
Spolsky: [advertising voice] FakePlasticRock.com
Atwood: That was the first time I worked with AdSense. And it's amazing how little money you make from AdSense. There's two problems with AdSense. One is you have to have huge scale to make money with AdSense, I mean Huge. Even on CodingHorror which gets a lot of traffic, I actually hooked up the Google search engine because the built-in search that I have is not very good anyway, and I figured I might as well so I was hooking it up, and relative to how much I make from my advertisers, it's just noise, it's not even really worth talking about.
Spolsky: Yeah. I know. I think AdSense didn't work.
Atwood: I think you almost - this is scary - you have to be almost at the Facebook level to have AdSense actually work for you.
Spolsky: It doesn't work for Facebook either and Microsoft is running their advertising at Facebook I think and they're making some money, but it's nowhere close to what they're spending and I think the reputation of Facebook is that they get horrible click-through rates and I think part of the reason advertising works on Google - which is just about the only place it works - where you're searching for Guitar Hero guitars that you can buy, you're willing to go to an advertiser's web site if it's going to sell you a Guitar Hero guitar.
Atwood: It's related to what you're doing.
Spolsky: It's actually what you want to do. Whereas in Facebook you're trying to get a date, you're trying to send some messages, you're trying to update your wall, what else can you do? Throw penguins at your friends-
Atwood: Do zombie attacks, and vampires, and werewolves
Spolsky: Exactly. And you don't - at that point - want to rent zombie movies; and those things are distractions. The number of clicks they actually get in Facebook. Besides the fact that it's a younger audience that's remarkably immune to advertising.
Atwood: No only that, I mean, Adblock. I mean, I noticed on the FogBugz World Tour you had Adblock installed. And I have it installed to. Not because I hate the sites I'm going to and I don't want them to make money, but because the ads are so invasive.
Spolsky: You know why I finally installed Adblock? I'm perfectly willing to support advertising based websites with ads, but they sort of abused my trust and they way they did that was by having animated ads and when you're trying to read text and there's something animated in the corner of your eye, your eye is designed to look at that thing. You've evolved over five million years, you've evolved so that if there's a tiger moving in your peripheral vision you will look at the tiger 'cause that's a really good idea. And so that something very fundamental in your brain and the way your eye works and indeed that is why they're animating their ads: because they want you to look at them.
Atwood: Yeah, that or an attractive person: I mean, you can't not look at an attractive person on your screen.
Spolsky: Yeah, but least you can stop... Yeah, exactly, I guess... anyway, whatever they've done there, it's trying to attract your eye. But you do also want to read the text, so in order to keep your eye focused on the text while there's this flashing thing in the side, takes a significant amount of cognitive effort, it takes almost physical effort to keep your eye there, I don't want to say you're burning calories, but it does give you a headache and it does sorta drive you crazy and this is something... what's her name, the blogger, Cathy...
Spolsky: Sierra! Used to talk about it all the time. Which is your brain is designed to look at that moving thing to see what's weird in this environment and trying to force it not to do that is actually painful and these things would drive me crazy and I found I couldn't read articles and concentrate on them unless I scrolled whatever part which was flashing off-screen and eventually the advertisers would not stop, so I gave up and installed Adblock plus and to hell with them all.
Atwood: Right. And it's weird, because I've gotten so used to surfing with Adblock on now, when I turn it off or I occasionally go into IE, it's like "Wow, there so much junk cluttering up the site" It looks so much cleaner, there's so much lack of restraint and respect in advertising and certainly when I took on advertising a Coding Horror I said "How can I do this the right way?" and I think if you do it the right way it doesn't bother people and it can be somewhat respectful of your audience but there's so many people just abusing it that you have to use this nuclear bomb of Adblock and it's unfortunate because a lot of sites, that is how they make money and I think particularly if you have a site that has a tech-savy audience a very high percentage of them are going to be running Adblock anyway-
Spolsky: For sure
Atwood: -so if you theoretically had any common ad service it's going to be blocked right out of the gate, that's even more of a reason to take on your own advertising and serve up ads from your own domain, because those-
Spolsky: [...] Those will eventually if the URL is identifiable in some way and enough people go to your site then it will get added to the Adblock list. But what's interesting is that the Google search result ads are never blocked. And partially that's because they're inline, it's just inline HTML, but they can figure out a way to block those if they wanted to, you know, they'd just special-case Google. But I think they honestly think those ads are kinda useful.
Atwood: Well, have you looked at the actual way Adblock works? It's pretty primitive, it's just a regex applied to the URLs, which means if you're blocking within a domain you have to be very very careful because if I put the ads in a folder not called "ads", it's going to be tough for you to block them with basic regexes.
Spolsky: But in ten minutes someone could write Adblock code that says if it's this regex then just hide the div, there's some easy to find div on the Google results page that has the ads in it.
Atwood: I think you've have to be one of the top two- or three-hundred sites on the web to get that treatment
Spolsky: But Google is and they have not gotten that treatment, which means even the people that think you should block all ads are willing to live with Google's ads, and they actually think they're more good than bad. I click on those ads all the time, the only ads I ever click on are Google search result ads, because sometimes you're looking for something kinda shady, you wanna buy some, not that the things are shady, but there are a lot of shady players in certain businesses. I'm trying to think of a good example...
Spolsky: Breast enlargement! I dunno...
Atwood: So these are the kinds of things you're searching for just at random?
Spolsky: I'm trying to remember. You're searching for something and you get kinda a lot of scammers, SEO optimizers, and just shady operators at the top and the people that actually paid for an ad, a banner ad on Google in the search results, are the slightly more legitimate players, the organic ones, so you almost want to say, "hey, you guys are willing to pay to advertise to me, so that means you probably have a slightly less than completely scammy product."
Spolsky: So sometimes the paid search results in Google are a little bit better.
Atwood: Right. And that's a great point. In my previous example on how much I made from AdSense on CodingHorror that was search results, and that's a best-case scenario for ad income and it's still just totally nothing compared to negotiating directly with the advertisers, so you have to be real careful.
Spolsky: [indistinct] the advertisers don't really know what they're getting, sometimes they're just supporting the business, sometimes they don't know what they're getting. There's some, you really have to be providing, it really has to be highly targeted it, has to be of real benefit to the people.
Atwood: That's one reason I hoping with StackOverflow, I mean all the information is highly targeted because the whole reason you come to the site, really, I imagine 90% of the people coming to the site are looking for a specific answer to a specific problem that they have. And even the contextual - not that we're going to use AdSense necessarily - but if we did use AdSense it would be reasonable, because it would be similar to search results at that point, we're going to be a search results page targeted to what they're trying to do.
Spolsky: Possibly. And we could even come up with our own ad scheme, it's not in official the business plan, let's say that you've got the concept of SQL compare "how do I compare to SQL schemas and find out what the changes are". Well, there's a great product that does that and maybe the person who makes that product is willing to advertise on the page that has that answer, where basically it's the most highly targeted audience they could possibly ask for, the leads are extremely qualified, they are specifically looking for something that RedGate's product specifically do.
Atwood: Right, 'cause how often do you go to Facebook with a specific thing in mind, a specific question?
Spolsky: Or a specific thing where you're willing to pay money to solve a specific problem.
Atwood: Almost never, you're just, like, having out, chilling with your friends online, that's got to be incredibly difficult to target, I mean it's got to be impossible to target.
Spolsky: Besides which Facebook is a big gigantic... oh that's my phone telling me... FB is big gigantic CIA scam to collect data about who knows who so they can figure out who's in all the terrorist cells and stuff when they arrest the terrorist they can find out all his friends are, and how he knows them, and who his other friends are...
Atwood: I always felt with sites like that, a friend of mine used to talk a lot of venture capitalists, here on Sandhill Road, the big Silicon Valley one, and said one of them had this saying he was very fond of that basically the ways services like this make money is that "they either get you paid, or they get you laid", that's pretty much how it works and for Facebook-
Spolsky: I don't know who originally said that, but it's really Jamie Zawinski at Netscape who had that concept.
Spolsky: Like, "if you're going to make a website you have to tell me how it's going to get me some money or get me laid"
Spolsky: So maybe people would pay to use Facebook?
Atwood: Yeah, I don't know. I personally don't use Facebook so it's hard for me to insert myself into that world.
Spolsky: And you want me to use Twitter!
Atwood: Well, Twitter I think is really really different. I actually would encourage you, I can't make you do anything obviously -
Spolsky: No you can't. Let's look at your Twitter page. What are you, twitter.com/codinghorror?
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 efficient 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 every time I look at it, and every time 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, puts...
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 clear that I 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 hierarchy, 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 usability 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.
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 may be 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 file format that all the cool guys are using". What I was trying to say is why don't we think about what we're doing? That's the general theme of a lot of the stuff in my blog. Can we just stop programming for a minute to think about what we're doing and not make a blind choice based on "Well this is what my tool does, so that's what I have to do"?
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 web page 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 it, 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 is happening with XML. I think people are saying "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 choice." That bothers me a little. Maybe I'm just contrarian. Maybe I'm an 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, 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 it's about a knee-jerk reaction one way or the other. It's about understanding the trade-offs and applying those trade-offs to your particular situation. I think that is the absolute art of programming. It's understanding what you could do, and which one of those things 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." Ultimately, to 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 totally 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 geeky 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 every time… 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 news-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 controversial
Atwood: 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 podcast #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 there 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.
Atwood: I see.
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 email@example.com. That’s firstname.lastname@example.org, and we’ll put it on next week… give us something to talk about.
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 Internet 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 had 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.
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, StackOverflow Podcast #6 -- number 5?
Spolsky: Number 5. We need a counter. We need an official counter.
Atwood: Yes. I plan to...
Spolsky: 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, email@example.com [firstname.lastname@example.org]. Thank you very much.
Atwood: Yup. Bye.
Alright, now, how do I turn off the recording?