The Wayback Machine - https://web.archive.org/web/20081003215923/http://blog.stackoverflow.com:80/

This is the twenty-fourth episode of the StackOverflow podcast, a special roundtable discussion conducted in NYC at Joel’s Fog Creek offices with the entire Stack Overflow team. That includes Jarrod Dixon, Geoff Dalgas, and Michael Pryor in addition to Joel and Jeff.

  • We muse about the 7.5 million dollar Dreamhost billing error. We admire the openness of Dreamhost, that they would be so up front about such a major gaffe on their blog.
  • There is a rule at Fog Creek which we at Stack Overflow also follow — never ship on Friday.
  • A brief discussion about responsible advertising; contrasting our ad deal with woot and the Audible sponsorship of podcasts. One sells a product we’ve bought before and vouch for, the other sells DRM encumbered product.
  • Michael and Joel bring up the idea of mixing real world money and our reputation system. I don’t think we’ll do this, but it’s an interesting conversation.
  • Discussing Geoff’s cool JavaScript reputation graphing system.
  • The giant “questions” with 300 answers were putting a huge load on the server and on client browsers. We never anticipated this would happen. Jarrod’s pagination feature was deployed last night. Pagination begins at 30 answers, which matches the current wiki community threshold. If your “question” gets to page two of the answers, it’ll be paginated and converted to community mode.
  • Michael asks the eternal question — why not support alternate login methods versus OpenID? I believe that OpenID is a bit of a chicken and egg problem at the moment, and we want to support a better future. We are open to partnering with another OpenID provider to provide a more seamless signup experience; myopenid supports this and we’ll try to get it in the queue.
  • We go around the table, discussing the short term future — what’s the #1 feature each of us wants to see in on Stack Overflow?
  • Michael draws a comparison between Stack Overflow and Project Euler. You get points on this site for solving algorithmic / mathematical problems.
  • Although it has been criticized, we continue to like the Stack Overflow design, which is largely thanks to Jeremy Kratz. We feel providing solid layout and markup control makes our questions look great.
  • We’ve been pleasantly surprised with the SQL Server 2005 full-text search on Stack Overflow, but we agree with Joel that something like Lucene.NET would probably work better, as it operates at the logical “page” level instead of database record level. People don’t think in terms of database records; they think in terms of web pages.
  • Geoff discusses how important sitemap.xml was for us. Unlike a blog, we didn’t have stable, permanent links to questions. until we rolled out sitemap it was literally impossible to find questions using web search, even if you entered the exact word-for-word title. As google says, you should use sitemaps for “any site where certain pages are only accessible via a search form”.

If you’d like to submit a question to be answered in our next episode, record an audio file (90 seconds or less) and mail it to podcast@stackoverflow.com. You can record a question using nothing but a telephone and a web browser. We also have a dedicated phone number you can call to leave audio questions at 646-826-3879.

The transcript wiki for this episode is available for public editing.

 
icon for podpress  Standard Podcast [01:01:34m]: Play Now | Play in Popup | Download

One thing we’ve learned on Stack Overflow is that asking questions is easy. But how do you tell when a question has been answered?

For a community predicated on the value of getting answers to your programming questions, it’s sort of… important… to know when unanswered questions are hanging around out there in the ether.

riddler

We do provide a facility for the person who asked the question to mark an answer as an “accepted” answer. Once accepted, the answer is tagged with a checkmark and a special background color, and permanently docked to the bottom of the question. This is a simple social convention we use to close the loop between the person asking and the person answering — with a little reputation sugar to sweeten the deal (+15 to the answer, and +2 to the owner). Accepting an answer is not meant to be a definitive and final statement indicating that the question has now been answered perfectly. Heck, we don’t even expect people asking questions to come back and accept an answer most of the time.

Just between you and me, not all question askers are equipped to recognize the best answer to their question anyway — that’s where community voting comes in. That’s why in the default sort order (votes), the answer the community likes best will be either:

  1. Directly under the question
  2. Directly under the accepted answer, if there is an accepted answer

This is how Stack Overflow works — the good stuff gets voted to the top, so you never have to read down very far to get the best information. And for the most part, it does work!

However, we still need a way to get to questions that, for whatever reason, aren’t being answered. Initially our unanswered questions view included questions with zero posted answers.

That didn’t work too well, as some questions could have multiple answers posted that weren’t … satisfactory. They’d disappear from the unanswered questions view, but these questions weren’t truly “answered” in any real sense.

Some people proposed showing all questions without any accepted answers, but that’s contorting a simple social convention into far more than it was meant to be. Expecting every asker to come back and mark an accepted answer is totally unrealistic. There would be tens of thousands.

As of today, here’s how we do it:

  • Answered questions have at least one answer with one upvote (or accepted)
  • Unanswered questions have no answers with upvotes (or accepted)

More complex solutions have been proposed. We could potentially tweak the number of upvotes required for this to work — but I’m thinking this is a lot better way to measure “answered” than the way we used to do it.

So if you were wondering why the number of “unanswered” questions just went from barely a hundred to nearly two thousand, this is why.

Geoff Dalgas did a bang-up job implementing the #1 UserVoice requested item — and he did it all while we were away on our NYC trip, no less!

reputation-graph

You’ll notice there is a now a Reputation tab on everyone’s user page, which includes

  1. a graph of your reputation over time
  2. a summary of the actual up and downvotes from each question/answer that generated your reputation.

The graph is “live” — you can select a time range with your mouse and drill into the specifics for that time period. If you were ever curious where your rep score came from, now you know. This is also the only place we expose downvote counts.

There is still some tweaking we want to do with the layout, but hopefully this will meet everyone’s obsessive desire to track their reputation scores in the minutest of possible detail. Not that there’s anything wrong with that. No.

This would not have been my first pick for feature priority development, but it was highly requested, and I thought Geoff did a great job on it.

This is the twenty-third episode of the StackOverflow podcast, wherein Joel and I discuss the following:

  • The Stack Overflow team will be in New York City from the 24th to the 28th. It’s partly business, and partly a reward to our team for their hard work on the site. What are some cool geeky things for us to do in NYC?
  • We wonder: do newscasters wear pants?
  • Joel describes his upcoming Inc. magazine article enumerating the seven development mistakes we made in building Stack Overflow. I think by seven he meant zero.
  • Most of the reviews of Cuil and Knol are negative because “I tried it for what it was intended to be used, and it didn’t work.”
  • The power of short informal code reviews in bridging the skill gap between beginning and expert software developers. Good developers think of this as self-preservation, because today’s beginner code is tomorrow’s code you’ll have to maintain.
  • There have been a lot of requests for a packaged, customized version of Stack Overflow, but we have some reservations about the difficulty of delivering a packaged solution, and whether the current design will scale down to smaller private communities at all.
  • Should trusted users be allowed to close questions? Or should the community simply vote them down? I argue we need both of these methods; Joel feels we ony need voting.
  • It’s ok to have some “fun” programming questions every now and then. It can’t be a community if you don’t stop every so often to have some (at least partially on topic) fun.

We also answered the following listener questions:

  1. “How do you handle newbie questions?”
  2. Richard: “How do you cultivate programmer mentoring at a small company?”

If you’d like to submit a question to be answered in our next episode, record an audio file (90 seconds or less) and mail it to podcast@stackoverflow.com. You can record a question using nothing but a telephone and a web browser.  We also have a dedicated phone number you can call to leave audio questions at 646-826-3879.

The transcript wiki for this episode is available for public editing.

 
icon for podpress  Standard Podcast [01:06:09m]: Play Now | Play in Popup | Download

This question keeps coming up a lot on Stack Overflow for some reason:

What was Stack Overflow built with?

Some even wondered if Stack Overflow was built in Ruby on Rails. I consider that a compliment!

This question has been covered in some detail in our podcasts, of course, but I know not everyone has time to listen to a bunch of audio footage to find the answer to their question. So, in that spirit, here’s the technology “stack” of Stack Overflow, the stuff Jarrod, Geoff, and I used to build it:

framework Microsoft ASP.NET (version 3.5 SP1)
language C#
development environment Visual Studio 2008 Team Suite
web framework ASP.NET MVC (currently in beta)
browser framework JQuery
database SQL Server 2005 SP2
data access layer LINQ to SQL
source control Subversion
compare tool Beyond Compare 3
source control integration VisualSVN 1.5

We have a few other minor dependencies as well, such as ReCaptcha, DotNetOpenId, and the WMD control, but that’s about it.