<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>Development</title>
  <link rel="self" href="http://chris.iluo.net/rss/chris/dev.xml"/>
  <updated>2008-12-01T10:18:53-08:00</updated>
  <author>
    <name>Chris</name>
    <email>AUTHOR_EMAIL@email.com</email>
    <uri>http://chris.iluo.net/rss/chris/dev</uri>
  </author>
  <id>urn:tag:chris.iluo.net,CHANNEL2</id>

  <entry>
    <title>Why Can’t I Accept My Own Answer?</title>
    <link href="http://blog.stackoverflow.com/2008/11/why-cant-i-accept-my-own-answer/"/>
    <id>http://yoursite/article/?i=22beb05faca9b13b4ce0abc2e1d08960</id>
    <updated>2008-12-01T06:00:12-08:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
One question that comes up a lot in Stack Overflow meta-discussion is this one:

Why can&#8217;t I accept my own answer to my question?


In case it isn&#8217;t clear, asking a question on Stack Overflow confers a few special privileges to you as the question owner:

You can comment on your questions, even if you don&#8217;t yet have the required 50 reputation to do so.
Any answers you provide are highlighted in a special light blue color.
You can mark (or unmark) one of the answers as the accepted answer, which results in a +15 rep boost to the answerer, and +2 rep boost to you. This also &#8220;docks&#8221; the accepted answer permanently under the question.


When viewing your question, you&#8217;ll see something nobody else does in the answers: a large checkbox under the voting arrows. This is the accept icon, visible only to question owners.



Mousing over the accept icon shows a tooltip that explains what it does. Clicking the accept icon will mark that answer as the accepted answer. (It can be clicked again to toggle it off.)



As you can see, the background of the answer turns green to indicate it&#8217;s the accepted answer. This will also show up in the profiles of both users, and there are several badges tied to giving or receiving accepted answers. Once the question owner accepts an answer, it is permanently docked under the question, regardless of sort order.

It&#8217;s generally considered good etiquitte to accept an answer to your question, unless your question is fundamentally unanswerable (which means it probably wasn&#8217;t the right kind of question to ask on Stack Overflow in the first place, though there are certainly valid exceptions.)

I&#8217;ve answered variations of this question at least a dozen times on UserVoice, and it always starts with the same response:
Accepting answers is completely optional.

The question owner is not required to accept an answer to their question. We view accepting an answer as a simple social convention, a little informal &#8220;thank you&#8221; between the asker and answerer, a virtual tip o&#8217; the hat to that person whose response, as the question owner, you personally found the most helpful.

That doesn&#8217;t mean the community will agree with your choice. But as the question owner, it is your choice to make.

The default sort order is &#8220;votes&#8221; for a reason. Normally, the best answer will automatically float to the top through community voting. This is important because we expect a lot of our question askers to be drive-bys, programmers who ask a single question, get the answer they need (or don&#8217;t), and are never seen again. This is intentional and by design. We&#8217;re not building some hyper-viral social networking tool like Facebook or MySpace or LinkedIn where we try to game you into hanging around and socializing and building lists of fake friends to get results. You&#8217;ve got work to do, and Stack Overflow is only useful insofar as it lets you get your answer quickly and get on with your job.

So in the typical case, you&#8217;ll have this:


Question


Community Selected Best Answer (votes)



But you might also have this:


Question


Owner Selected Best Answer (accepted)


Community Selected Best Answer (votes)



In the latter case, you have the best of both worlds. The answer the owner thought was best, and the answer the community thought was best. Right next to each other, both directly under the question. No reading through a giant thread required. Immediate satisfaction with a minimum of scrolling.

I&#8217;m not saying this always works, of course, but we&#8217;ve been pleasantly surprised how often it does &#8212; and a lot of the emails and feedback I get seem to agree. Generally, the &#8220;system&#8221; works, which hopefully isn&#8217;t surprising because the system is you.

Now, this was a very long winded way of getting to the original question. The question owner cannot select their own answer as the accepted answer. This is very much by design.

Although it&#8217;s fine to ask and answer your own question &#8212; this is specifically encouraged in the faq &#8212; you&#8217;ll have to rely on the community to upvote your answer and validate it as correct. You, sir (or madam), are biased. Of course your answer to your own question will be the best possible answer. You wrote the darn thing!

Allowing question owners to accept their own answers would be a violation of the spirit of Stack Overflow, akin to giving yourself a self-congratulatory pat on your own back. We&#8217;re here to acknowledge the skill of the collective community, and our own humility in not knowing the answer to everything. It&#8217;d be downright rude to deny your peers the opportunity to weigh in on your question, for good or bad.

Asking a question is an opportunity to connect with and learn from your peers. That&#8217;s what accepted answer is for. It&#8217;s completely optional, because if it wasn&#8217;t, the system would be in a perpetual state of broken. But in my experience, it&#8217;s one of those little details that separates good programmers from great programmers: great programmers enjoy and even seek out ways to acknowledge the skills and experience of their peers.

I encourage you to leave your own answer on your own question, of course. But I&#8217;d also encourage you to go out of your way to find the greatness in another programmer&#8217;s answer to your question &#8212; even if you think you&#8217;ve already found the right one.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #31</title>
    <link href="http://blog.stackoverflow.com/2008/11/podcast-31/"/>
    <id>http://yoursite/article/?i=dcf8c58f8575be9600213103d3f424da</id>
    <updated>2008-11-27T16:00:20-08:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This is the thirty-first episode of the StackOverflow podcast, where
Joel and Jeff discuss.. stuff!

Based on some comments from Podcast #30, we now know that &#8220;Learning about NP-Completeness from Jeff is like learning about irony from Alanis Morissette&#8221;. It&#8217;s funny because it&#8217;s true!
It was also noted that &#8220;[Jeff] certainly no mathematician.&#8221; In my defense, I&#8217;ve always been very open about my lack of math skills. It&#8217;s even item #3 in my Five Things We Didn&#8217;t Know About You list.
I noticed that someone posted the halting problem to GetACoder.com, so if nothing else good came of this, at least humor was delivered.
How useful is math to most programmers? In other words, how often does a typical software developer use something they learned in, say, Calculus class or beyond? Joel cites the original Google PageRank algrorithm paper (pdf) and Google&#8217;s MapReduce (pdf) as good examples of math in practice for mainstream programming.
I believe it&#8217;s important for programmers to develop skills that aren&#8217;t programming, necessarily, but that are complementary to programming, such as graphic design. (Or databases, or HTML/CSS, etcetera) Remember, good programmers write code; great programmers steal code. This applies triply to design.
Joel and I both believe that status reports should be treated as a &#8220;public wall&#8221;, never as weapons to determine how people get paid or promoted. The single best thing I&#8217;ve ever read on this is Poppendieck&#8217;s Team Compensation (pdf) &#8212; which I discovered through Joel&#8217;s first collection of software writing. If I could, I&#8217;d print out a copy of this and staple it to the face of every person in the world who manages software developers. Yes, it really is that good. Go read it!
One team at Fog Creek instituted a daily standup meeting for their project, which is a staple of most agile development approaches. In addition to the &#8220;Daily Kiwi&#8221; convention, Fog Creek also use a locally hosted instance of Laconica, an open source Twitter clone. It&#8217;s certainly an interesting alternative to email.
Joel believes most small to midsize software companies will deal with an economic downturn by (temporarily) deferring development of new versions of their products. For companies that have a lot of &#8220;extra&#8221; staff, the economy might be an excuse to get rid of the worst performing 10% of your employees.
Joel justifies having a nice office space as 1) a recruiting tool 2) enabling higher programmer productivity and 3) the cost of a nice office space is a tiny number relative to all your other expenses running a company. I argue that companies which don&#8217;t intuitively understand why nice office space is important to their employees who spend 8+ hours every day there.. well, those companies taren&#8217;t smart enough to survive anyway.
My favorite Stack Overflow question this week is Are Parameters really enough to prevent Sql injections? Joel and I have a long discussion about the importance of parameterized SQL, both for performance and for security (beware Little Bobby Tables!). But you should know that it&#8217;s not 100% foolproof; it is possible (though rare) to have latent SQL injection exploits even when fully parameterized.
Joel&#8217;s favorite Stack Overflow question this week is How do you pull yourself out of a programming 'slump'? Joel knows tons of programmers who have burned out by age 50, and feels it is rare to find programmers who have written code for 20 to 30 years. Joel&#8217;s article Fire and Motion and my article Moving The Block sort of cover this topic. Joel also recommends the book Death March as a reference book for what to avoid.

We answered the following listener questions in this episode:

Mike Akers: &#8220;How much time should programmers be spending in Photoshop?&#8221;
David from the UK: &#8220;How do you handle status reports at Fog Creek?&#8221;
Matthew Glidden: &#8220;How do you run a software company in lean economic times?&#8221;

If you&#8217;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.


</div></summary>
  </entry>

  <entry>
    <title>Stack Overflow Is You</title>
    <link href="http://blog.stackoverflow.com/2008/11/stack-overflow-is-you/"/>
    <id>http://yoursite/article/?i=aec38da95e4781dc457a35b3852d0ecc</id>
    <updated>2008-11-25T03:00:25-08:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
I was surprised to find the following question on Stack Overflow:

Jon Skeet Facts

Apparently this &#8220;question&#8221; is.. somewhat controversial; as of now it has 31 revisions and 65 comments. It was opened by Bill the Lizard, who accepted this answer, from Jon Skeet, appropriately enough:

These are written in the third person so as not to disrupt the style of the thing. But hey, as we all know, Jon Skeet can make 1 == 3 anyway, so it makes no difference.

Jon Skeet is immutable. If something&#8217;s going to change, it&#8217;s going to have to be the rest of the universe.
Jon Skeet&#8217;s addition operator doesn&#8217;t commute - it teleports to where he needs it to be.
Anonymous methods and anonymous types are really all called Jon Skeet. They just don&#8217;t like to boast.
Jon Skeet&#8217;s code doesn&#8217;t follow a coding convention. It is the coding convention.
Jon Skeet doesn&#8217;t have performance bottlenecks. He just makes the universe wait its turn.
Users don&#8217;t mark Jon Skeet&#8217;s answers as accepted. The universe accepts them out of a sense of truth and justice.



Funny stuff. We do prefer that questions on Stack Overflow stay on the topic of programming, but as Joel and I have discussed before on the podcast, this is somewhat subjective, and it&#8217;s OK to err on the side of &#8220;fun&#8221; every now and then. Not all the time, mind you, but occasional peripherally related digressions that the community enjoys (and upvotes) are perfectly fine.

This question may be more on-topic than it looks, though. One of the major reasons we created Stack Overflow to give every programmer a chance to be recognized by their peers. Recognized for their knowledge, their passion, and their willingness to help their fellow programmers get better at their craft.

Jon, like many other highly voted Stack Overflow users, has gone out of his way to help his peers, and demonstrated an impressive breadth of knowledge in his questions and answers. So much so that his peers felt he deserved this accolade. He does, and he&#8217;s not alone.

I was happy to find that I am no longer on the first page of Stack Overflow users sorted by reputation. That&#8217;s the way it should be. Stack Overflow isn&#8217;t about me. Nor is it about Joel. Or anybody else on the Stack Overflow team for that matter.

Stack Overflow is you.

This is the scary part, the great leap of faith that Stack Overflow is predicated on: trusting your fellow programmers. The programmers who choose to participate in Stack Overflow are the &#8220;secret sauce&#8221; that makes it work. You are the reason I continue to believe in developer community as the greatest source of learning and growth. You are the reason I continue to get so many positive emails and testimonials about Stack Overflow. I can&#8217;t take credit for that. But you can.

I learned the collective power of my fellow programmers long ago writing on Coding Horror. The community is far, far smarter than I will ever be. All I can ask &#8212; all any of us can ask &#8212; is to help each other along the path.

And if your fellow programmers decide to recognize you for that, then I say you?ve well and truly earned it.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #30</title>
    <link href="http://blog.stackoverflow.com/2008/11/podcast-30/"/>
    <id>http://yoursite/article/?i=77e9e904764f859f214c2bf99ba48388</id>
    <updated>2008-11-20T01:30:09-08:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
This is the thirtieth episode of the StackOverflow podcast, where Joel and Jeff sit down with Richard White of uservoice.com.

Richard worked as the user interface guy on calendar startup Kiko.com; UserVoice was originally inspired by Richard&#8217;s work on Kiko, as a hybrid of Reddit and FogBugz.
There are some thematic similarities between Dell&#8217;s IdeaStorm and My Starbucks Idea and UserVoice &#8212; to some degree, UserVoice is users voting on the direction your software should take. Does software democracy work?
UserVoice isn&#8217;t just for software &#8212; there&#8217;s also Obama CTO and Rebuild The Party. This generated huge load and traffic, so if nothing else it was a good scaling test. The usual item has a maximum of 50 comments; one suggestion had 980 comments.
Our use of UserVoice is a bit anomalous; I prefer to (politely) decline requests that I think we won&#8217;t get to. Is it more honest to let reasonable requests like this one languish in the system for literally years, ala Microsoft&#8217;s Connect, then to find out that they&#8217;ve been set to &#8220;wontfix&#8221; after 3 years? As a user myself, I find this behavior abhorrent.
We do plan to talk a bit less about building Stack Overflow and a bit more about our favorite questions on Stack Overflow.
Joel&#8217;s favorite Stack Overflow question this week is What Tricks Do You Use to Get Yourself &#8220;In The Zone&#8221;?
UserVoice is a Ruby on Rails app, with approximately 6,000 lines of code. A large portion of that is unit tests.

Jeff&#8217;s favorite Stack Overflow question is What is an NP-Complete Problem. This is a followup to the blog post where I demonstrate a sadly incomplete understanding of the concept of being NP-complete.
Joel notes that there are harder problems than NP-Complete, namely the halting problem. There&#8217;s a great Stack Overflow question on this, The Halting Problem in the Field
There are a lot of very hard problems in computer software that aren&#8217;t necessarily NP-complete &#8212; and we&#8217;ve had limited success &#8220;solving&#8221; them, such as speech and voice recognition. Furthermore, if the best algorithm we can come up with is something like n-cubed, is that a realistic solution?
UserVoice will be using Jan Rain&#8217;s RpxNow to implement OpenID. We wondered how myopenid.com would make money; their RpxNow service is the answer to that question. Now uservoice can mark that item off their own uservoice page &#8212; it&#8217;s the #2 most requested feature by customers of User Voice.

We also answered the following listener question:

Chris Connelly: &#8220;After 26 episodes of the podcast, will you ever take a turn to less self-reflexive discussion?&#8221;


If you&#8217;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.



</div></summary>
  </entry>

  <entry>
    <title>Podcast #29</title>
    <link href="http://blog.stackoverflow.com/2008/11/podcast-29/"/>
    <id>http://yoursite/article/?i=dff13d0288afad8a69ff0101f4259b69</id>
    <updated>2008-11-12T17:30:21-08:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This is the twenty-ninth episode of the StackOverflow podcast, wherein Joel and I discuss the following:

The downside of being a PC gamer: it&#8217;s prime game release season. My productivity last week was nil due to the release of Fallout 3, as I discuss on my blog. But it was totally worth it.
One videogame cliche is the levels filled with random barrels and crates as filler. The classic game site Old Man Murray used to rate games on how quickly you saw a crate after starting the game. And then there was the Quake 2 mod where you played as a crate .. in a room full of crates! Surreal.
I&#8217;ve always wondered if Joel was a gamer. Apparently he played Call of Duty 3 and 4, which bring him back to his days as an Israeli Army infantryman. Also, Bioshock, which is outstanding. At least he has good taste. 
Joel wonders why we don&#8217;t use Google search as the primary search method on Stack Overflow. Of course it is possible to search Stack Overflow with Google using the &#8220;site:&#8221; specifier, as long as you scope to an appropriate &#8220;folder&#8221;. Currently we offer Google as a search alternative when no results are found. I still think both search methods are desirable, because we can search by user, by tag, and so forth.
My first organic hit on Stack Overflow based on a coding search was this question about using Beautiful Soup in IronPython under C#.
One of Joel&#8217;s favorite Stack Overflow questions this week is Coding In Other Spoken Languages. The discussion is great, but it does beg the question &#8212; as much time and money as companies spend localizing software, why don&#8217;t we localize progamming languages? Joel points out that the Excel macro language is perhaps an exception, as the function names are localized. This is quite rare, but there are non-English based progamming languages out there.
Joel has literally written the book on hiring great programmers &#8212; Smart and Gets Things Done. In this podcast he examines a few guidelines from the Fog Creek hiring practices. One of those is having an intern program that is second to none. I was definitely impressed when I visited. Did I mention that they have fully catered lunches every weekday? Also, don&#8217;t forget that the interview process is your opportunity to judge the company that wants to hire you. If they don&#8217;t have a good interview process, do you really want to work there?
The amount of information you are faced with as a developer is overwhelming, with more new stuff arriving every day. How do you keep up with information overload? I recommend &#8220;Just In Time&#8221; learning. Joel highlights the difference between the early days of Java and today, now that Java has grown into something of a monster. Is .NET on the same path?


We also answered the following listener questions:

Jonas from Sweden: &#8220;Can you expand on what characteristics a good programmer should have? When hiring, how do I get them to tell me what makes them a good programmer?&#8221;

Idriss Selhoum: &#8220;How do you feel about Microsoft releasing new .NET versions so rapidly, and fragmenting the developer base?&#8221;



If you&#8217;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.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #28</title>
    <link href="http://blog.stackoverflow.com/2008/11/podcast-28/"/>
    <id>http://yoursite/article/?i=1930e34400ff52dfdfef735a20432861</id>
    <updated>2008-11-05T21:00:14-08:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
This is the twenty-eighth episode of the StackOverflow podcast, where
Joel and Jeff discuss Windows Azure, SQL Server 2008 full text search, Bayesian filtering, porn detection, and project management &#8212; among other things. 

Jeff met the inestimable Joey DeVilla aka Accordion Guy at PDC, who challenged him to pronounce Azure as in &#8220;Windows Azure&#8221;. My pronunciation reference for Azure is entirely based on the word appearing in the movie A Clockwork Orange.
Joel and I greatly enjoyed Corey Trager&#8217;s Jeff Atwood is Trying to Kill Me. We do try to exploit the Jewish / Goyish dynamic. Also, Jeff is sorry he tried to kill you, but glad you survived to write that highly entertaining article.
We are still struggling with SQL Server 2008 full text search issues. And yes, we have engaged with the SQL Server team on this.
Joel&#8217;s Inc. magazine article about Stack Overflow is now on newsstands (it&#8217;s the issue with Kevin Rose of Digg on the cover). The article is also online as well: How Hard Could It Be? The Unproven Path.
We have worked closely with Brent Ozar, who has singlehandedly took it upon himself to be our Stack Overflow database ninja. He&#8217;s gone far, far beyond what I would ever expect a volunteer to do &#8212; so we&#8217;ve added him as an official member of our virtual team. And if you need SQL Server expertise, Brent is your man.
Microsoft finally fixed their bizarre position on hotfixes. Instead of the bad old days of mandatory phone calls and requests, you can simply download the hotfix you need.
One limitation of Linq to SQL is that it does not support any SQL Server full text search predicates. Fortunately, we can freely intermix SQL strings and Linq syntax as much as we like.
Joel points out that Google uses Bayesian filtering the way Microsoft uses an if statement. We worry that Microsoft doesn&#8217;t adapt their software well enough to the wider internet world, as demonstrated by the radically differing approaches to spellcheck from both companies.
We aren&#8217;t clear what the purpose of Microsoft&#8217;s new &#8220;Oslo&#8221; or M modelling language, announced at PDC, is. More domain specific languages? Every developer becomes a language designer? Why does that scare me a little?
Ray Ozzie made specific reference to &#8220;architecture astronaut&#8221; at PDC, which is extra humorous because Joel was referring to Ozzie when he coined the term.
Joel remembers Hillel Cooperman, who used to be a star at Microsoft, but now works for Jackson Fish Market.
One Stack Overflow question we enjoyed this week: Showing too much &#8217;skin&#8217; detection in software. The definitive debunking of this technique is from Dan of Dan&#8217;s Data, who reviewed PORNsweeper in 2000. We don&#8217;t believe the technical landscape has changed since then. Great discussion on Stack Overflow as well.
Joel refers to the famous 1994 memo from Steve Sinofsky &#8212; Cornell is WIRED! Steve started as Bill Gates&#8217; assistant, and now he&#8217;s in charge of Windows 7 after shipping Office 2007.
Another Stack Overflow question we enjoyed this week: What do project managers do all day? We&#8217;re not sure why the owner keeps deleting this question, as we think the answers have a lot of value. Joel also has a lot to say on the general topic of project management.


If you&#8217;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.


</div></summary>
  </entry>

  <entry>
    <title>SQL 2008 Full-Text Search Problems</title>
    <link href="http://blog.stackoverflow.com/2008/11/sql-2008-full-text-search-problems/"/>
    <id>http://yoursite/article/?i=f4f4304e5319309010bb72643e8ec02d</id>
    <updated>2008-11-01T14:30:17-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
You may have noticed that things have been less responsive than usual on stackoverflow.com. The culprit is SQL Server 2008 full-text search. I&#8217;ll let Brent explain:

Before 2008, full text search wasn&#8217;t inside the database - it wasn&#8217;t subject to things like transactions.  Heck, it was more like Lucene where it lived outside on its own.  Now, it&#8217;s stored inside data files and it&#8217;s subject to transactions.  From what im hearing, blocking and locking is a completely new issue in 2008 FTS.  There&#8217;s a big overhead involved with making it subject to transactions.

In most environments, you don&#8217;t see full text being used for transactions.  At StackOverflow, you&#8217;re doing heavy transactional activity on the same fields that you&#8217;re doing analytical, many-record selects.

If you do a full text search on Revisions and you include a common keyword like, say, SQL, you&#8217;re going to match tens of thousands of records.  When I look at the query plans for these, I&#8217;m seeing 50-100k reads.  Doing that inside a table that&#8217;s also getting heavy inserts - boom, transactional disaster.


We rely heavily on full-text search on stackoverflow.com, which worked amazingly well for us under SQL Server 2005. Looks like that&#8217;s no longer the case for SQL Server 2008, unfortunately.

Brent is following up with the SQL Server team on this, and they have a copy of our database to test against. (Brent has given so incredibly generously of his time on the database front that I&#8217;m adding him to the stackoverflow.com virtual team &#8212; he&#8217;ll get a place on the About page with the rest of the team.) Based on the stunningly poor SQL Server 2008 full text results so far, and the apparent architecture changes, I&#8217;m pessimistic that the SQL team will be able to do anything for us.

We had always planned to move to lucene.net in the future; looks like we&#8217;ll need to move that timetable up aggressively. I&#8217;ll see what I can do over the weekend to make that happen.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #27</title>
    <link href="http://blog.stackoverflow.com/2008/10/podcast-27/"/>
    <id>http://yoursite/article/?i=6cc6b7c96ca3d5de3fcab4ee8c01f4b4</id>
    <updated>2008-10-31T20:00:22-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
This is the twenty-seventh episode of the StackOverflow podcast, where Joel and Jeff interview Alexis &#8220;kn0thing&#8221; Ohanian and Steve &#8220;spez&#8221; Huffman, the founders and co-creators of Reddit.

Jeff is at the Professional Developers&#8217; Conference in Los Angeles. He co-presented a session with Phil Haack on ASP.NET MVC, which you can view online if you are so inclined. Also while at PDC, Jeff participated in a brief roundtable meeting with Ray Ozzie, who had some completely unsolicited and very positive things to say about Stack Overflow!
If you didn&#8217;t know, Joel was the genesis of one of the earliest branded reddits &#8212; the Joel on Software reddit. 
We discuss the Reddit switch from Lisp to Python, and the way Reddit stored raw user passwords in the database.
We use a weighting algorithm based on Reddit&#8217;s when we calculate &#8220;hotness&#8221; in Stack Overflow.
Reddit, like us, ran for quite a while on a single server. Moving to a second server, splitting the database, provided solid gains for Reddit and is something we just did as well. According to Steve, splitting off the database is easy &#8212; making sure you can scale to multiple application web servers is the difficult part, because of shared state caching.
Steve is a big fan of HAProxy which is a single software load balancer in front of all ~20 reddit servers.
Reddit&#8217;s first big partner is The Independent, for branded content. Although there is also WeHeartGossip. Joel and I feel these sorts of communities &#8212; to be truly successful &#8212; need personalities associated with them that are emblematic of the values and goals of that community.
We briefly discuss some of the protection mechanisms Reddit has in place to prevent abuse and spammers. Steve and Alexis have much more experience dealing with abusive users than we do. Per Steve, the Reddit mantra is &#8220;anything goes&#8221;, so they try to do as little as possible to inhibit users. We generally agree that the volume of badness is remarkably small. Most users behave responsibly &#8212; and this isn&#8217;t just an optimistic opinion, it&#8217;s based on actual data. That&#8217;s the good news!
Behold the power of the Reddit audience: they may just have saved the world by sending a crowbar to the CERN Hadron collider.


If you&#8217;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.</div></summary>
  </entry>

  <entry>
    <title>Added a Second Server</title>
    <link href="http://blog.stackoverflow.com/2008/10/adde-a-second-server/"/>
    <id>http://yoursite/article/?i=6919cf37870c2ab1224f0d888491d8a3</id>
    <updated>2008-10-28T18:00:11-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
Based on traffic levels last week &#8212; we&#8217;re at and beyond where we were at launch &#8212; I decided it was time to pursue adding a second server.

The second stackoverflow.com server has identical specifications to our first server, that is:

Windows Server 2008 x64

Dual Quad-Core Xeon E5320 (1.8 GHz)

4 GB RAM

271GB SAS hard drive



As I&#8217;ve mentioned before, one of the most obvious scaling strategies for us is to move the database to its own, private server. We were thinking about upgrading to SQL Server 2008, so this was also a logical time to do that.

As of Sunday night, stackoverflow.com is now a two-server system: web on one server, database on the other. They are connected to each other through a dedicated loopback gigabit ethernet connection.

I have to give massive credit to Brent Ozar here, who not only helped us tune the database, but also contributed a huge chunk of his own time. Brent wrote a blog post about his experience working with the Stack Overflow databases, if you&#8217;re curious. Brent works for Quest Software and he is, without a doubt, a database ninja. So if you have any difficult SQL Server problems &#8212; or in our case, blazingly obvious newbie problems &#8212; maybe you should check out Brent&#8217;s SQL Server wiki.

While many queries are faster under SQL Server 2008, and the tooling is dramatically and indisputably better (intellisense for queries!), there is one downside for us: SQL Server 2008 is slower at full-text search operations than SQL 2005. That&#8217;s kind of a bummer because we rely heavily on full text. I saw a glimpse of this in my initial testing, when I had both servers up side-by-side with the same data, running the same queries, to see how much faster it would be (new versions are supposed to be faster, right?). My experiments showed that any full-text queries I tried were inexplicably slower on 2008, but we thought it had to do with different query plans, and was something we could work around.

Turns out we were wrong. Apparently SQL Server 2008 was the source of the massive slowdown earlier today. A set of full-text queries that ran fine all last week on a single, shared server caused a newly dedicated 8 CPU, 4 GB server to completely melt down and peg at 100%. Traffic levels were about the same, the database was about the same, and the code hasn&#8217;t changed much. Not to mention the whole &#8220;newly dedicated database server&#8221;, so you&#8217;d expect performance to be better, not worse.

We&#8217;re not the first people to notice that full text performance took a step backwards in SQL 2008:

I was lucky enough to visit Microsoft during the CTP period and was testing out integrated full text search in 2008. An issue we experienced was that full text can be slow when there is a high number of updates to the index and is caused by blocking on the docidfilter internal table.


That post mentions the DBCC TRACEON (7646, -1) flag. We&#8217;ve enabled this flag and restarted SQL Server, but haven&#8217;t seen much improvement.

The temporary workaround is much more aggressive caching, including caching to disk. Caching is the bread and butter of computer science, and any opportunity to cache smarter and.. er.. harder.. is a good thing. But all things considered, I&#8217;d still prefer it if SQL 2008 was delivering better full-text performance than 2005, not worse.
</div></summary>
  </entry>

  <entry>
    <title>See You At PDC 2008</title>
    <link href="http://blog.stackoverflow.com/2008/10/see-you-at-pdc-2008/"/>
    <id>http://yoursite/article/?i=8f3509698d6b7748c3c5259796f68194</id>
    <updated>2008-10-26T06:00:09-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
I will be attending the Microsoft Professional Developers&#8217; Conference this year, courtesy of Microsoft.



The main reason I am attending is to help Phil Haack deliver a session about ASP.NET MVC.
ASP.NET MVC: A New Framework for Building Web Applications


Monday, October 27th

3:30 pm &#8212; 4:45 pm

Room 153


Phil invited me to talk for 15 minutes about the real world use of ASP.NET MVC in stackoverflow.com, and I was happy to oblige him. Phil and I have been friends for a few years, so our relationship predates any of the business stuff.

If you&#8217;re attending PDC08 this year, maybe I&#8217;ll see you there &#8212; and definitely attend our session!
</div></summary>
  </entry>

  <entry>
    <title>Script Responsibly</title>
    <link href="http://blog.stackoverflow.com/2008/10/script-responsibly/"/>
    <id>http://yoursite/article/?i=c603cc01bd30d30e705af307344dec9b</id>
    <updated>2008-10-25T00:30:10-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
We&#8217;ve noticed there are a number of users running a script that retrieves their uncompressed user page multiple times per second, producing an absurd amount of network traffic. Fortunately, we do cache the user page if the requests come in anonymously, so the database load was not significant.

However, this behavior is irresponsible and unacceptable, so we will permanently ban any IP we see doing this. We&#8217;ve already banned about a dozen IPs for this, and we will continue to do so. If you continue to do this, your account will be permanently deleted.

We would prefer that you use our RSS feeds, or lobby us to improve our RSS feeds, rather than scrape Stack Overflow so aggressively.
</div></summary>
  </entry>

  <entry>
    <title>No Podcast This Week — Suggested Guest</title>
    <link href="http://blog.stackoverflow.com/2008/10/no-podcast-this-week-suggested-guests/"/>
    <id>http://yoursite/article/?i=cbcb12a045a78ae9f5109262bb005db4</id>
    <updated>2008-10-23T07:30:20-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
There will be no podcast this week, because Joel is on a business trip to Korea, apparently at webappscon. I can&#8217;t remember his exact words, but they were something along the lines of &#8220;I don&#8217;t care that the listeners want a new podcast, I am not a monkey who dances for their amusement!&#8221; I tried in vain to reason with him, but you&#8217;ve heard how he is. 



But seriously, one thing Joel and I want to do in future podcasts is have more guests on the show. While we of course loooove talking about all things Stack Overflow and Fog Creek, it&#8217;s also nice to open the floor up a bit and broaden our horizons.

We have a few guests tentatively lined up for future shows through the end of the year:

Alexis Ohanian and Steve Huffman of Reddit
Richard White of UserVoice
Some of the fine folks who write and code woot.com
Damien Katz of CouchDB
Eric Sink of SourceGear


I&#8217;d like to open the comments up to suggestions. Who would you like to hear Joel and I talk with on future Stack Overflow podcasts?

And yes, Stack Overflow rules do apply &#8212; the guest does have to be at least peripherally &#8220;programming related&#8221;, in theory anyway. :)
</div></summary>
  </entry>

  <entry>
    <title>Stack Overflow OpenID Case Study</title>
    <link href="http://blog.stackoverflow.com/2008/10/stack-overflow-openid-case-study/"/>
    <id>http://yoursite/article/?i=fdbbef4cb82a7178e046d38f71b5fc4c</id>
    <updated>2008-10-23T07:30:20-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
JanRain, an early supporter of OpenID, just posted an OpenID case study featuring Stack Overflow.

Stack Overflow, much like Wikipedia, lets anyone edit anything ? but unlike Wikipedia, we require users to earn a certain number of votes from other users before the system trusts them (we call this &#8220;reputation&#8221;). The concept of identity and logins is an essential part of how our site works.

As programmers ourselves, we appreciate how challenging it is not only to write an entire authentication system, but to support one.  One small mistake and you could expose users&#8217; credentials and possibly even passwords!

With OpenID, we didn&#8217;t have to write any login code, nor do we have to store user passwords. And not only that, but we are no longer asking users to create yet another account on yet another website. Clearly a win-win scenario from our perspective.

We were encouraged to use OpenID because our audience is fairly technical, and OpenID is quite common among technical bloggers and frequent blog participants, our early adopters. Also, there&#8217;s a rich ecosystem of third party OpenID providers, not to mention Yahoo, AOL, Google, Sun, and soon MySpace.


JanRain runs myOpenID, one of the better independent OpenID providers. I don&#8217;t want to mention any names, but some OpenId providers, like one in particular whose name ends in oo, are .. not so great. That&#8217;s the blessing and curse of choice: when there are dozens to choose from, some will be better than others.

That said, we continue to look at ways to improve the Stack Overflow login experience. A few things in the works on the OpenID front:

Offer OpenID registration directly through stackoverflow
allow multiple OpenIDs per account
Allow changing the associated OpenID

</div></summary>
  </entry>

  <entry>
    <title>Expressing Your Tag Preferences</title>
    <link href="http://blog.stackoverflow.com/2008/10/expressing-your-tag-preferences/"/>
    <id>http://yoursite/article/?i=347d54f2e45dd437e72e89bfb9ce43ec</id>
    <updated>2008-10-21T02:00:09-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
Geoff &#8220;the malice from corvallis&#8221; Dalgas has done it again. Over the last week he was busy implementing the number one UserVoice request &#8212; tag preferences for a customized Stack Overflow homepage.



You&#8217;ll notice there are two places you can now enter your ignored tags and interesting tags.

On most question pages, in the right sidebar
On your users page, under the &#8220;Preferences&#8221; tab


Once you&#8217;ve enter some tag preferences, the questions appear differently depending on whether they contain a tag in your list.



Interesting questions are highlighted; ignored questions are dimmed.

We planning to enhance and build out the tag preferences feature a bit more, but even as-is it should hopefully help you distinguish what you like from what you don&#8217;t like a bit better. Note that we also increased the number of questions that show up on the homepage by default, all the better to filter your &#8220;ignore&#8221; and &#8220;interesting&#8221; against.

Also, a tip of the hat to Jonathan Buchanan&#8217;s most excellent Stack Overflow Tag Manager script, which was the inspiration for this feature. I&#8217;m sure Jonathan&#8217;s add-in will continue to evolve cool new features faster than our website can, so I encourage you to check it out.

In fact, there&#8217;s quite an ecosystem of third party tools for Stack Overflow. If there are any third party tools or add-ons you feel are absolutely essential, let us know on UserVoice, and we&#8217;ll try to roll those features into the core website so every Stack Overflow user can benefit.
</div></summary>
  </entry>

  <entry>
    <title>Stack Overflow on Hanselminutes</title>
    <link href="http://blog.stackoverflow.com/2008/10/stack-overflow-on-hanselminutes/"/>
    <id>http://yoursite/article/?i=ebbbcd2216df7aba704b69135c57fb8b</id>
    <updated>2008-10-18T08:30:16-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
Geoff, Jarrod and I recently recorded an episode of Hanselminutes with Scott Hanselman.

StackOverflow uses ASP.NET MVC - Jeff Atwood and his technical team
Scott chats with Jeff Atwood of codinghorror.com and most recently, stackoverflow.com. Jeff and Joel Spolsky and their technical team have created a new class of application using ASP.NET MVC. What works, what doesn&#8217;t, and how did it all go down?

Listen or download


This is similar in tone to Stack Overflow podcast episode #17 with the development team. So if you enjoyed that one, you&#8217;ll probably like this episode of Hanselminutes!
</div></summary>
  </entry>

  <entry>
    <title>Stack Overflow Search - Now 51% Less Cra</title>
    <link href="http://blog.stackoverflow.com/2008/10/stack-overflow-search-now-51-less-crappy/"/>
    <id>http://yoursite/article/?i=31c3e943a3115fbb4e3a9048a6d23815</id>
    <updated>2008-10-17T12:00:13-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
Believe it or not, the search function on Stack Overflow may just actually.. work.. now.

I started to feel really bad when I&#8217;d see people post duplicate questions, even after they said they &#8220;searched first&#8221;. Now, to be clear, we do a fuzzy title-based search when you tab off the title field on the Ask page:



This works reasonably well, but it&#8217;s limited to questions that have similar titles. It&#8217;s entirely possible to ask the same exact question using completely different words in the title. In fact, I&#8217;ve found that people have an almost uncanny ability to ask questions using completely different words. 

There may be other ways we enhance the ask page in the future to better show relevant questions as you type, beyond the title matching. Why ask when the question you were going to ask has already been asked .. and maybe even answered?

But for now my goal was to enhance the search page, which has languished over the last month. Search worked, and by that I mean with sufficient effort you could find an exact match to question or answer with specific, unique words that you knew existed in the post. But as far as Google-style &#8220;type in some random words and get exactly what you are looking for&#8221;, it was a definite bust.

I made a special effort to improve the &#8220;no search results found&#8221; page. It shows a number of easy ways to immediately improve your search results based on my experience searching for stuff on SO:



Of course, there&#8217;s always Google. As you can see, we pre-emptively build a Google search link for you at the bottom of this page. You can always search Stack Overflow through old reliable Google, or as I like to call it, the most important website in the history of recorded time. Constructing a Google search for Stack Overflow manually is easy; just add the site:stackoverflow.com/questions command to the beginning of your search to scope it to SO questions, then plug in as many search terms as you want after that. Like so:

http://www.google.com/search?q=site:stackoverflow.com/questions i dont know how to search vary good

That said, there are things our search can do better than Google. In particular, I&#8217;d urge you to take the advice to search within tags to heart. Google kind of sucks at this; you will generally get much better results if you scope your search to one or more likely tags such as [ruby] or [perl]. Just add the tags in brackets to your regular search terms, in any order, as many as you like (note that you cannot yet specify negation for tags in search).



I also found that a lot of users were inexplicably searching for things like &#8220;c#&#8221; and &#8220;c++&#8221;. If we see you enter a single search term that happens to map to a (reasonably) popular tag, we will assume you wanted that tag and whisk you away to all questions in the tag, instead. There&#8217;s just no way a general search for the string &#8220;c++&#8221; is ever going to produce good results, anyhow, so this felt like a no-brainer to me.

Beyond that, we have rolled up search results so only questions are returned. Yes, you can absolutely find text in answers, but the displayed result will be a link to the single question that contained the answer instead of five individual search results for the five answers that happened to match. I know, there&#8217;s no real excuse for the insane previous behavior. Like I said, we just didn&#8217;t have time to give it the attention it deserved.

Also, we do a better job of searching for titles, something else that barely worked before. You should be able to search for the exact title of a question and get it in the first page of results, if not at the very top. That&#8217;s, like, searching 101. As of today, we do a better job of discarding stopwords, so you can almost always find a post by searching for its exact title. Even without quotes, although adding quotes will give you a practically guaranteed match.

We&#8217;ll continue to improve search (some other things I want to add are search for all posts by a particular user, by certain dates, etcetera), but hopefully this upgrade makes search worth using again.

Or at least 51% less crappy.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #26</title>
    <link href="http://blog.stackoverflow.com/2008/10/podcast-26/"/>
    <id>http://yoursite/article/?i=b13a7a951efa72bd49650a2ec16c6110</id>
    <updated>2008-10-15T19:30:09-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
This is the twenty-sixth episode of the StackOverflow podcast, where Joel and Jeff answer five listener questions, mostly about social software design. Warning: this podcast features cowbell. Really.


Christopher Leary: &#8220;Any thoughts on the general design of karma and rep systems based on your experience building one for Stack Overflow?&#8221;
Michael L Perry: &#8220;What about a system where votes by people who have more reputation count more?&#8221;
Jeff Metzner: &#8220;If I post personal anecdotes as an answer to a question, is it reasonable for other users to edit that?&#8221;
Anonymous: &#8220;Why can&#8217;t we ask IT questions? What about a sister site like Stack Overflow but for IT questions?&#8221;
Miles Dennis: &#8220;For a cost-conscious startup, where do you see the balance between taking inexperienced staff that costs less, versus experienced staff that costs more?&#8221;


If you&#8217;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.

When calling the audio phone number, be sure to leave your name, so we can properly cite you when we answer your question.

The transcript wiki for this episode is available for public editing.</div></summary>
  </entry>

  <entry>
    <title>Tags AND Tags OR Tags</title>
    <link href="http://blog.stackoverflow.com/2008/10/tags-and-tags-or-tags/"/>
    <id>http://yoursite/article/?i=36964b247006e9efd42b0676f3688532</id>
    <updated>2008-10-12T21:30:08-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
Until recently, we hadn&#8217;t done a good job of providing a user interface for combining tags. You&#8217;ll notice that all the question browsers now show &#8220;related tags&#8221;, with a count of how many tags are shown for whatever view you happen to be in (with the exception of search):



Let&#8217;s say I clicked on the Python tag, anywhere on the Stack Overflow site. Clicking on a tag zips you away to a view of all the questions within that particular tag. Within the tag view, you can sort and browse as expected, but you can also click the related tags in the right sidebar to combine tags, like so:



This isn&#8217;t exactly new; you could always do this manually in the URL by space delimiting the tags. However, these were always implicit ands, as in:

Show me all the questions tagged both &#8220;python&#8221; AND &#8220;django&#8221;

http://stackoverflow.com/questions/tagged/python django


We also support a slightly shorter synonym of this URL that does the same thing:

http://stackoverflow.com/tags/python django

But maybe that&#8217;s too specific for your tastes. Now you use the new or pseudo tag:

Show me all the questions tagged either &#8220;python&#8221; OR &#8220;django&#8221;

http://stackoverflow.com/questions/tagged/python or django




This works throughout the site, including questions, unanswered questions, and all tag based RSS feeds. Anywhere on Stack Overflow you can specify a tag, you now specify multiple tags with or without the or clause.

I&#8217;m not sure if that&#8217;s super or awesome. I haven&#8217;t decided yet.

But either way, it was definitely a highly ranked request from a lot of users.
</div></summary>
  </entry>

  <entry>
    <title>A Question About Questions</title>
    <link href="http://blog.stackoverflow.com/2008/10/a-question-about-questions/"/>
    <id>http://yoursite/article/?i=26eeb99b8a798683127f5e161393d5d2</id>
    <updated>2008-10-12T00:30:12-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
Stack Overflow is a place for programming questions. We&#8217;ve been quite clear about this for as long as I can remember; the faq and about pages both try to make this point in the first paragraph:

                What kind of questions can I ask here?

                Programming questions, of course! As long as your question is:

detailed and specific
written clearly and simply
of interest to at least one other programmer somewhere


                &#8230; it is welcome here. No question is too trivial or too &#8220;newbie&#8221;. Oh yes, and it should be about programming. You know, with a computer.

                Do look around to see if your question has already been asked (and maybe even answered!) before you ask. However, as long as you&#8217;ve looked, if you end up asking a question that has been asked before, that is OK and deliberately allowed. Other users will hopefully edit in links to related or similar questions to help future visitors find their way.
            

                It&#8217;s also perfectly fine to ask and answer your own programming question, but pretend you&#8217;re on Jeopardy: phrase it in the form of a question.


There&#8217;s also a bright yellow sidebar for new users which explains what Stack Overflow is &#8212; this appears on the homepage, every question page, and (in slightly different form) on the ask a question form:



However, there is one little nagging concern &#8212; what exactly constitutes a &#8220;programming question&#8221;? Different people have different ideas. To put it mildly, opinions vary.

In order to stem the tide of potentially verboten non-programming questions, any Stack Overflow user with 3,000 points of reputation or more can close a question that is deemed off-topic using the following prefab reasons:

exact duplicate
not programming related
subjective and argumentative
not a real question
blatantly offensive
no longer relevant
too localized
spam


That gives users a fairly reasonable set of guidelines to start with &#8212; these are the kinds of questions we really don&#8217;t want on Stack Overflow. Not that they are fundamentally bad questions, mind you, or that you&#8217;re a terrible person for asking them, but there are better websites on the Internet for those kinds of questions. But even within those guidelines, there&#8217;s substantial disagreement. 

We don&#8217;t want people to close questions indiscriminately with the jackbooted heel of justice, however, I also feel that it&#8217;s important and necessary to close questions that veer far from the goals of the site &#8212; so users understand what is and isn&#8217;t acceptable in our community. You can&#8217;t let people run roughshod over your community and drown it out in noise.

I&#8217;m not a huge fan of poll questions on Stack Overflow for a bunch of reasons, not the least of which is that users will get badges for upvotes on poll questions &#8212; this is not at all what badges were designed for. However, I have to admit that this poll started by Adam Bellaire is actually quite useful in letting Stack Overflow users themselves define what sorts of questions are appropriate on Stack Overflow.

The current results for Which type of &#8220;programming related&#8221; questions are appropriate [on Stack Overflow]?, in order by votes, are:

Questions intended to resolve a specific programming problem that have multiple possible answers. As with this answer, but the &#8220;correct&#8221; response is subjective. (14)
Questions intended to resolve a specific programming problem that have only one correct answer. A &#8220;specific programming problem&#8221; can be defined as a problem that exists in code and that can be resolved with correct code (or cannot be resolved at all). These questions are normally language-specific. (13)
Questions about language-agnostic algorithms for hypothetical problems that have potential real-world applications. For example, traveling salesman or BSP. (13)
Questions about best practices and other aspects of programming, including use of software tools used in the development process, standards for maintenance and readability of code, advice to avoid potential coding pitfalls, etc. (11)
Questions about software tools that, while not directly related to software development, involve some scripting or programming themselves, for example, Excel or Matlab. (11)
Questions about hypothetical problems that don&#8217;t necessarily have real-world applications, for example &#8220;code golf&#8221; or the &#8220;FizzBuzz problem&#8221;. (8)
Questions about social engineering, management, or career building, ergonomics, or other &#8220;soft&#8221; topics related to development work. (7)
Questions about hardware considerations such as server environments, building an optimal machine, problems with hardware, etc. (1)
Questions about programmers&#8217; favorite things (e.g. cartoons, books, movies, pop culture references). (-2)
Polls about what StackOverflow is for (like this one). (-6)
Questions about software not directly related to programming, such as Microsoft Word, or usage (not programming!) of device drivers. (-11)


The &#8220;winners&#8221; of this poll, items 1-7, map strongly to my idea of what we built Stack Overflow for. Items 8-11 &#8230; not so much.

If you&#8217;re wondering what so-called programming questions are appropriate on Stack Overflow, I&#8217;d say between our prefab question close menu and the top voted items in Adam&#8217;s well constructed poll, you should have a fairly good idea.

Oh, and by the way, what&#8217;s your favorite programming food?
</div></summary>
  </entry>

  <entry>
    <title>Podcast #25</title>
    <link href="http://blog.stackoverflow.com/2008/10/podcast-25/"/>
    <id>http://yoursite/article/?i=f38bb47ef8a1c817ad9f33c6ce3b1fed</id>
    <updated>2008-10-09T00:00:13-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
This is the twenty-fifth episode of the StackOverflow podcast, where Joel and Jeff sit down with the ineffable Steve Yegge, who you may know from his excellent and extremely popular blog Stevey&#8217;s Blog Rants. Steve worked for Amazon and currently works for Google.

Steve proposes we use the Muppets Show theme as our podcast theme song. I&#8217;m more amenable to &#8220;The Touch&#8221; as featured in the Transformers the Movie from 1986.
We ask how Google maintains its culture in the face of an army of new hires entering the company every month.
Steve is, to put it mildly, a language maven. He shares some of his perspectives on language aesthetics. Should languages be designed by committee, or by a benevolent dictator?
If Steve could teach every developer one thing, it wouldn&#8217;t be how to type, or how to write &#8212; but how to market.
Google has an infrastructure in place to support &#8220;mini-startups&#8221; within the company. Joel thinks all good startups must have ideas that sound terrible. YouTube is a great example, as is the Flip video recorder.
Being an entrepreneur often means spending a lot of your time not programming. This can be challenging for software engineers who love to code. Make sure you know what you&#8217;re signing up for if you go this route.
Steve is a big believer in the Google experience, even though his last three projects have been cancelled &#8220;for business reasons&#8221;. Instead of Joel&#8217;s &#8220;Smart, and Gets Things Done&#8221;, Steve proposes &#8220;Done, and Gets Things Smart.&#8221;
How much does choosing the &#8220;right&#8221; programming language matter? Isn&#8217;t the variance between programmers far more significant to the end result? On the other hand, the best programmers often tend to be fluent in multiple languages.
One way to drag the &#8220;one horse language&#8221; programmers into multiple languages is to support sublanguages within the same runtime, ala IronPython, IronRuby, Jython, and JRuby.
Steve is considering porting his game Wyvern to Android. He can&#8217;t talk about his current full time project at Google, but he does fess up to owning it &#8212; both from the business side and the engineering side. So if this time it&#8217;s cancelled, we really know who to blame.
Steve: &#8220;You can&#8217;t write about anything interesting without making a bunch of people mad.&#8221;, &#8220;Everything you say can be quoted out of context 500 years from now.&#8221;
One of my very favorite Steve Yegge posts is You Should Write Blogs. Unfortunately, despite my cajoling, blogging just isn&#8217;t for everyone. Too many brilliant programmers are virtually unknown because they have no footprint on the web. This is one of the reasons we created Stack Overflow &#8212; to lower that participation barrier, at least a few millimeters.


If you&#8217;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.</div></summary>
  </entry>

  <entry>
    <title>Solving the Fastest Gun in the West</title>
    <link href="http://blog.stackoverflow.com/2008/10/solving-the-fastest-gun-in-the-west-problem/"/>
    <id>http://yoursite/article/?i=afe1e090cc1a8758c7d6f17007fa68d8</id>
    <updated>2008-10-06T03:55:32-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
Some Stack Overflow users are concerned about what they call the Fastest Gun in the West problem:

Each question&#8217;s answers are sorted by descending score and then descending time of posting. This means that if a person sits down and answers a question in a long, thorough way, going through every nook and cranny, once they post their answer, it will already be one of about seven different ones, some of which have already been upmodded. This wouldn&#8217;t be a problem if those answers were as thorough as the one this guy&#8217;s posting, but they usually aren&#8217;t. Some of them are downright wrong, some aren&#8217;t even answers to the question asked because their poster didn&#8217;t bother to read the question all the way through.

This causes a problem I like to call SO&#8217;s Fastest Gun in the West Problem.

I&#8217;ve come to a point where I&#8217;d rather just send a short, simple, correct explanation, than to go and do some proper research, write a whole blog post about it or even make sure the code I post even compiles, just so it will be noticed, as opposed to the incorrect ones.


A number of solutions were proposed, but I believe many of them were worse than the so-called &#8220;problem&#8221; they purported to fix. Personally, I agree with Adam Davis, who wrote:

I do NOT want to, in any way, discourage the quick and dirty answer.

I&#8217;ve asked questions that have received an immediate answer with enough information to get me past my block, but not served on a platter as you propose, with all the information I might need.

This is extraordinarily helpful - I know I can post something on here, day or night, and get an answer within minutes, often seconds, that will be better than searching through books, online, etc, even though it&#8217;s a throw-away post that took someone 35 seconds, who may have only answered for the reputation. If it&#8217;s at all helpful, I upvote it.


It does seem nonsensical to me that we&#8217;d be complaining about getting lots of quick answers to our questions. Oh no! How horrible! Lots of answers to our questions, and nearly immediately! Anything but that! It&#8217;s terrible, just awful!

Seriously, isn&#8217;t getting rapid answers the entire goal of a question and answer site in the first place?

That said, the one implementable recommendation that came out of this discussion is an active, GMail like notification when you are composing an answer. We agreed with this feature request, so Jarrod implemented it. Here&#8217;s how it works:

When you start composing a reply, a timer is created.
Every minute, the page checks itself to see if new answers have arrived.
If new answers arrive, the notification bar will tell you how many, and offer to update the page for you.
Answer updates are performed AJAX style, so they don&#8217;t interrupt your current answer.




We explicitly used GMail as our model, since that&#8217;s what we were familiar with. I hope you like it, and more importantly, I hope it addresses the perceived &#8220;fastest gun in the west&#8221; problem.



Now, armed with this new feature, go forth and answer those unanswered questions as fast as you can. Pow! pow! pow!
</div></summary>
  </entry>

  <entry>
    <title>You’re My Favorite</title>
    <link href="http://blog.stackoverflow.com/2008/10/youre-my-favorite/"/>
    <id>http://yoursite/article/?i=0f6df885f496bb12bb435c2e2d61ab0e</id>
    <updated>2008-10-04T21:00:09-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
We just implemented another highly requested feature &#8212; the ability to mark a question as a favorite. You might have already noticed it by now, as every question has a large, clickable favorite star just under the voting arrows.



Click to favorite. Click again to un-favorite. Once favorited, these questions will show up in the &#8220;Favorites&#8221; tab on your user profile page. The default order is last modified, so favorite questions with the most recent edits or answers will shuffle to the top.



I wasn&#8217;t totally convinced that marking something &#8220;favorite&#8221; was conceptually all that different from voting it up, but repeated and persistent requests on UserVoice eventually convinced me.

By the way, if you&#8217;re wondering what sorts of things we are implementing in Stack Overflow on a daily basis, I strongly suggest checking out the Completed Tab on UserVoice. We always go through and mark all related requests (even the declined ones) as completed when we implement features that we believe satisfy those requests.

To encourage adoption of this new feature, I&#8217;ll probably be adding a few badges around favorites soon.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #24</title>
    <link href="http://blog.stackoverflow.com/2008/10/podcast-24/"/>
    <id>http://yoursite/article/?i=9124a3e2fbffb9980ccb72f0a1208a9c</id>
    <updated>2008-10-01T12:00:35-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
This is the twenty-fourth episode of the StackOverflow podcast, a special roundtable discussion conducted in NYC at Joel&#8217;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 &#8212; 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&#8217;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&#8217;t think we&#8217;ll do this, but it&#8217;s an interesting conversation.
Discussing Geoff&#8217;s cool JavaScript reputation graphing system.
The giant &#8220;questions&#8221; with 300 answers were putting a huge load on the server and on client browsers. We never anticipated this would happen. Jarrod&#8217;s pagination feature was deployed last night. Pagination begins at 30 answers, which matches the current wiki community threshold. If your &#8220;question&#8221; gets to page two of the answers, it&#8217;ll be paginated and converted to community mode.
Michael asks the eternal question &#8212; 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&#8217;ll try to get it in the queue.
We go around the table, discussing the short term future &#8212; what&#8217;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&#8217;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 &#8220;page&#8221; level instead of database record level. People don&#8217;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&#8217;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 &#8220;any site where certain pages are only accessible via a search form&#8221;.


If you&#8217;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.


</div></summary>
  </entry>

  <entry>
    <title>OK, Now Define “Answered”</title>
    <link href="http://blog.stackoverflow.com/2008/09/ok-now-define-answered/"/>
    <id>http://yoursite/article/?i=e5560cac9b6c238fb2f7630cda680126</id>
    <updated>2008-09-30T01:30:07-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
One thing we&#8217;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&#8217;s sort of&#8230; important&#8230; to know when unanswered questions are hanging around out there in the ether.



We do provide a facility for the person who asked the question to mark an answer as an &#8220;accepted&#8221; 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 &#8212; 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&#8217;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 &#8212; that&#8217;s where community voting comes in. That&#8217;s why in the default sort order (votes), the answer the community likes best will be either:

Directly under the question
Directly under the accepted answer, if there is an accepted answer


This is how Stack Overflow works &#8212; 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&#8217;t being answered. Initially our unanswered questions view included questions with zero posted answers.

That didn&#8217;t work too well, as some questions could have multiple answers posted that weren&#8217;t &#8230; satisfactory. They&#8217;d disappear from the unanswered questions view, but these questions weren&#8217;t truly &#8220;answered&#8221; in any real sense.

Some people proposed showing all questions without any accepted answers, but that&#8217;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&#8217;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 &#8212; but I&#8217;m thinking this is a lot better way to measure &#8220;answered&#8221; than the way we used to do it.

So if you were wondering why the number of &#8220;unanswered&#8221; questions just went from barely a hundred to nearly two thousand, this is why.
</div></summary>
  </entry>

  <entry>
    <title>I Don’t Give a Damn About My Reputatio</title>
    <link href="http://blog.stackoverflow.com/2008/09/i-dont-give-a-damn-about-my-reputation/"/>
    <id>http://yoursite/article/?i=2377ac52bd24039f4bff9f4c7ac0be45</id>
    <updated>2008-09-30T00:00:23-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
Geoff Dalgas did a bang-up job implementing the #1 UserVoice requested item &#8212; and he did it all while we were away on our NYC trip, no less!



You&#8217;ll notice there is a now a Reputation tab on everyone&#8217;s user page, which includes 

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


The graph is &#8220;live&#8221; &#8212; 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&#8217;s obsessive desire to track their reputation scores in the minutest of possible detail. Not that there&#8217;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.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #23</title>
    <link href="http://blog.stackoverflow.com/2008/09/podcast-23/"/>
    <id>http://yoursite/article/?i=967c9378e0f8f5073adfc7a758acdafd</id>
    <updated>2008-09-24T10:00:15-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">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&#8217;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 &#8220;I tried it for what it was intended to be used, and it didn&#8217;t work.&#8221;
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&#8217;s beginner code is tomorrow&#8217;s code you&#8217;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&#8217;s ok to have some &#8220;fun&#8221; programming questions every now and then. It can&#8217;t be a community if you don&#8217;t stop every so often to have some (at least partially on topic) fun.


We also answered the following listener questions:

&#8220;How do you handle newbie questions?&#8221;

Richard: &#8220;How do you cultivate programmer mentoring at a small company?&#8221;



If you&#8217;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.
</div></summary>
  </entry>

  <entry>
    <title>What Was Stack Overflow Built With?</title>
    <link href="http://blog.stackoverflow.com/2008/09/what-was-stack-overflow-built-with/"/>
    <id>http://yoursite/article/?i=22f1fbf27243ff26b4834ac4f957fa89</id>
    <updated>2008-09-21T12:00:26-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
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&#8217;s the technology &#8220;stack&#8221; 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


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 and DotNetOpenId, but that&#8217;s about it.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #20</title>
    <link href="http://blog.stackoverflow.com/2008/09/podcast-20/"/>
    <id>http://yoursite/article/?i=95d3d999f7d1740ed52d1335647d984b</id>
    <updated>2008-09-19T23:50:05-07:00</updated>
    <author>
      <name>48356f09f4d27a0d6bfd87b495c58409</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This is the twentieth episode of the StackOverflow podcast, wherein Joel and I discuss the following:

We figured out our deadlock problem, finally. It had to do with Log4Net being called during a database operation, itself triggering another database operation and log event. This is normally OK, but the events were happening so close together that it resulted in a deadlock.
Our new stackoverflow.com launch date is next week, as diagnosing the deadlock set us back at least four or five days.
What&#8217;s your logging philosophy? Should all code be littered with .logthis() and .logthat() calls? Or do you inject logging after the fact somehow?
Should you rely on third party libraries, or &#8220;find the dependencies and eliminate them&#8220;? 
Having the source can make the difference between a dependency that works for you, and one that works against you. This is the great strength of taking dependencies on JavaScript libraries from the web &#8212; you can always View Source. Perhaps this is why JavaScript is the Lingua Franca of the web, and increasingly the language young people will grow up programming.
One way we know Stack Overflow is already successful &#8212; someone created a blog dedicated to hating Stack Overflow! If you can&#8217;t get people to care one way or another about what you&#8217;ve done, you&#8217;ve definitely failed.
When it comes to trolling, the most powerful countering technique at your disposal is to not pay attention to it. Which we have failed to do. My favorite literary interpretation of this is &#8220;the silent treatment&#8221; from the Great Brain book series which I read and loved as a child.
We have implemented the transition point between traditional discussion board post ownership and wiki-style group ownership. The transition is forced when there are (n) edits by (n) users, or if there are (n) edits by the post owner. This rule also helps discourage people from bumping their posts by continually editing them, and reduces the perception of reputation gaming from people who try to build a large, collaborative post incorporating the comments of others.
Asking good questions is difficult. There&#8217;s an art to constructing a question that appeals to your target audience, yet isn&#8217;t an overt attempt to pander and farm attention.
Joel&#8217;s biggest problem, besides dealing with New York City landlords, is getting people to not do what he says just because he says so as their CEO and boss. Joel, as the big picture CEO, rarely has all the information necessary to make good, tiny, local decisions. That&#8217;s your job!
There are tons of existing web Q&amp;A sites that we derive inspiration from, but we believe our more focused and directed programmer audience is what makes the difference. When the audience is very large and broad, you&#8217;ll end up with things like the baby daddy question and the Georgia tanks question.
The current beta is definitely working, in that people posting questions are getting good answers and fairly quickly &#8212; as you can see from Sara Chipps&#8217; report.
Joel is in Boston at his Business of Software 2008 conference which is going on now. Joel is thinking up an introduction for Richard Stallman, who by any measure is a legendary figure in the software community.
There&#8217;s a filmmaker on site at the conference, filming footage to be incorporated into a sequel to Project Aardvark in about a year or so. However, this will be a more technical look at how software is developed at Fog Creek and perhaps a primer on some tenets of good software development.


We also answered the following listener questions:

Trey Jackson: &#8220;Why doesn&#8217;t Jeff listen to Joel? How do you keep people interested in answering questions on Stack Overflow when the volume goes up?&#8221;

Martn: &#8220;What in your experience or background has been most useful while building Stack Overflow?&#8221;



If you&#8217;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.

The transcript wiki for this episode is available for public editing.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #22</title>
    <link href="http://blog.stackoverflow.com/2008/09/podcast-22/"/>
    <id>http://yoursite/article/?i=9087f3fd1f2c0440bc69758297866092</id>
    <updated>2008-09-17T20:00:11-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This is the twenty-first episode of the StackOverflow podcast, wherein Joel and I discuss the following:

Stack Overflow is now a public beta. We went from about 2-5% CPU usage during the private beta to over 50% CPU usage, on an 8-CPU server! Some day one stats: 1,500 questions were asked, 6,000 answers provided, 1,700 comments added, there were 62,000 unique visitors and almost 700,000 page views. Miraculously, the server is still running and performance is still snappy.
It was tempting to keep a closed community, but Joel and I believe the real value here is in letting Google and other web search engines in, along with the hordes of everyday average programmers. We believe programmers are a smarter breed of user, and the low-friction question and answer format will be sustainible for the greater public community if is designed properly. Hopefully.
We sit down with Josh Millard of MetaFilter, who graciously agreed at very short notice to come on and talk about his role as one of the 5 member core team that helps run and maintain MetaFilter.
Josh is a programmer, too: you may remember him as the creator of the weird and wonderful Garkov!
It was a great honor for Stack Overflow to make MetaFilter. I remain a longtime fan of MetaFilter and it definitely influenced the building of Stack Overflow. MetaFilter is a sort of collaborative blog with an amazing and incredibly effective (and eclectic) Q&amp;A community.
MetaFilter has grown to five moderators over time. How do you decide who becomes a moderator? Does moderation scale? How much can/should the community police itself?
MetaTalk is the &#8220;backchannel&#8221; of MetaFilter, analogous to the &#8220;discussion&#8221; page on Wikipedia. It turns out there are two channels of communication in any social website. The topic, and then the topic about the topic. These are two very different audiences with very different needs.
&#8220;technologically assisted profiling&#8221; is how MetaFilter works; the community flags questionable things (in addition to discussion on MetaTalk) and then the moderators act on those flags. MetaFilter is extremely strict &#8212; they consider PR and blatantly promotional material spam, which rules out a huge section of what normally appears on Digg or Reddit.
MetaFilter has not voting, but it does have a favorites system, which is something we have planned for Stack Overflow. I follow the Best of MetaFilter feed which I believe is determined by how many people have favorited a given MetaFilter post.
In the rare event where a user goes haywire &#8212; remember that it costs $5 to even join MetaFilter &#8212; these users will be given &#8220;timeouts&#8221; of a day or two until they cool down. There are no scarlet letters or black marks that can be placed on users. The history of the user&#8217;s actions, particularly if that history is public, is usually enough to handle the problem. We definitely agree with this philosophy.


We did not have time to answer any listener questions today, but please send them in and we&#8217;ll get to them on the next episode!



If you&#8217;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.
</div></summary>
  </entry>

  <entry>
    <title>Then a Miracle Occurs - Public Beta</title>
    <link href="http://blog.stackoverflow.com/2008/09/then-a-miracle-occurs-public-beta/"/>
    <id>http://yoursite/article/?i=648f39e521e2b948a9862f196305e788</id>
    <updated>2008-09-15T02:30:13-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
stackoverflow.com is now live and open to the public, as a public beta.



Our heartfelt thanks to all the software developers who so patiently helped us test the site during the private beta. You are the true heroes of this project, contributing your time in creating over 8,500 questions in a month and a half &#8212; not to mention putting up with our bugs and errors. Your beta badges are forthcoming.



We&#8217;ll see how long Stack Overflow manages to stay up now that it&#8217;s in public view. We did some last minute caching and optimizations that should help.

I, for one, am keeping my fingers crossed.
</div></summary>
  </entry>

  <entry>
    <title>Help Us Beta Test</title>
    <link href="http://blog.stackoverflow.com/2008/09/help-us-beta-test/"/>
    <id>http://yoursite/article/?i=34d2ccb6d73ec670a132da039a380f30</id>
    <updated>2008-09-11T03:00:16-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
If you&#8217;d like to help us beta test Stack Overflow, in advance of the Monday launch, here&#8217;s how:

Go to beta.stackoverflow.com
Enter &#8220;twitter@twitter.com&#8221; and &#8220;falkensmaze&#8221; to gain access
Please do bear in mind the beta test guidelines.


When asking questions, try to keep them on topic:

Is your question about programming?
We prefer questions that can be answered, not just discussed.
Provide details, but write clearly and simply.


I thought these were quite clear and simple guidelines, but they haven&#8217;t stopped anyone from asking anything they damn well please.

If you&#8217;re wondering what&#8217;s so special about Stack Overflow, the answer is &#8212; well, nothing, really. It&#8217;s a programming Q&#038;A website. The only unusual thing we do is synthesize aspects of Wikis, Blogs, Forums, and Digg/Reddit in a way that is somewhat original. Or at least we think so.



Stack Overflow is that tiny asterisk in the middle, there.

But hopefully you&#8217;ll see what I mean when you experience it for yourself.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #21</title>
    <link href="http://blog.stackoverflow.com/2008/09/podcast-21/"/>
    <id>http://yoursite/article/?i=7b8c97fdcec71f0dcdcc1f3c354a63ce</id>
    <updated>2008-09-10T23:00:09-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This is the twenty-first episode of the StackOverflow podcast, wherein Joel and I discuss the following:

Road trip! The Stack Overflow team will be visiting the Fog Creek offices in New York City from Wednesday, September 24th to Sunday, September 28th. Hopefully Joel and crew will be completely moved in by the time we arrive.
We&#8217;re planning to launch the Stack Overflow website to the public on Monday, September 15th.
As a fake plastic rock enthusiast, there is another big item launching this week: Rock Band 2! It&#8217;s scheduled to appear Sunday September 14th. We purchased a complete set of fake plastic rock equipment, centered on Rock Band 2, to outfit the new Fog Creek offices and celebrate the newly public website.
An examination of Hegel&#8217;s thesis, antithesis, synthesis as applied to PC and Console gaming, and perhaps everything else.
I continue to believe game programming may be the most challenging and unforgiving kind of programming &#8212; as famously documented by one spouse in 2004. How do you optimize for &#8220;fun&#8221;?
Joel describes it as a &#8220;big universe of dumb programmers&#8221;, where Stack Overflow is (intended to be) an amplifier of the small bits of signal that come out of that supernova of mediocrity. We&#8217;re part of it too!
On the myth of expertise: fields of expertise in programming are very narrow, and it&#8217;s remarkable how quickly you get off the beaten path, into techniques and apporaches that almost nobody else is trying. 
How do you deal with users who set out to grief your system? Rather than outright banning or blocking, Joel proposes silently hiding that user&#8217;s content from the world, in a way that is only visible to other users. As described in our previous podcast, the silent treatment is an incredibly powerful technique.
&#8220;You&#8217;ve got a bunch of people playing Chess, but certain people want to play &#8216;throw the chess pieces all over the park&#8217; &#8212; and from there it becomes a sort of wrestling and fighting game.&#8221; I can&#8217;t go to sleep &#8212; someone is wrong on the internet!
One of our &#8216;playful&#8217; users created giant posts by entering an amusing picture of Joseph Ducreux a hundred times, so I changed the name of his account to that. Generally these kinds of posts automatically get deleted by the community when they reach the ten vote offensive threshold &#8212; or they could be edited away by trusted users &#8212; but I stepped in as a moderator.
The paradox of griefing is that these users are highly engaged with the system. Most people don&#8217;t care and won&#8217;t bother. So spending a lot of time gaming the system means you must like it on some level. If you&#8217;re not careful you will turn these semi-engaged users into active and purposeful enemies. Joel proposes that users with a historical record of creating problem posts automatically get their content filtered to the bottom of the pile. He draws a comparison with bartenders not dramatically cutting off drunks, but serving them non-alcoholic drinks that look exactly like real drinks.
Incentives, like the badge system we use in Stack Overflow, despite being completely arbitrary, can have actual meaning in measuring and showing off your accomplishments. On the other hand, if you&#8217;re not careful, you can end up with something like the despised Microsoft Ship-It awards.
p.s. The Conversations Network, a not-for-profit organization which hosts our podcast, is looking for sponsors for their podcasts, including this one. It would be a very modest, NPR-style intro at the beginning&#8230; &#8220;The StackOverflow Podcast is brought to you by Gummy Bears, Inc., bringing fine chewy treats to grubby children everywhere.&#8221; If your company might be interested in sponsoring the podcast and becoming a hero to developers worldwide, or at least the eight developers who listen to the podcast, please email Joel.


We also answered the following listener question:

Clay Nichols of Bungalow Software &#8220;Did the badge idea come from Joel&#8217;s experience in the Isreali military, or from Jennifer Aniston in Office Space?&#8221;



If you&#8217;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.

The transcript wiki for this episode is available for public editing.
</div></summary>
  </entry>

  <entry>
    <title>I Guess That’s Why They Call It “Bet</title>
    <link href="http://blog.stackoverflow.com/2008/08/i-guess-thats-why-they-call-it-beta/"/>
    <id>http://yoursite/article/?i=e2a0ae0231049f5370b176c0cb5c6215</id>
    <updated>2008-08-28T16:30:33-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
Just a quick note to the beta participants:

We apologize for the recent spate of outages. We&#8217;re currently diagnosing a sporadic hang in the website that we haven&#8217;t quite got a handle on yet.  Until we figure it out, we&#8217;re forced to restart the web service every few hours.

I&#8217;ll update this post when we get it licked, but until then, expect a bit more turbulence than usual. We appreciate your patience.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #19</title>
    <link href="http://blog.stackoverflow.com/2008/08/podcast-19/"/>
    <id>http://yoursite/article/?i=84fa8968ddd251909864852b830c6f64</id>
    <updated>2008-08-28T01:30:11-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This is the nineteenth episode of the StackOverflow podcast, wherein Joel and I discuss the following:

We&#8217;ve mapped our voting functionality to what you see in Digg and Reddit, but we&#8217;re a Q&amp;A site, not a link aggregation service. Should we allow voting on questions as well as the answers? Or should questions simply be taggable as favorites, which are a de-facto vote? I believe voting and favorites are related, but not quite the same thing.
How do you deal with meta-discussion about the site? Wikipedia has two distinct areas for any page: the page itself and the &#8220;behind the curtain&#8221; discussion about the page. We don&#8217;t quite have this.
Joel points out that Google&#8217;s dedication to the algorithm over human intervention is on display in the Google search results for &#8220;jew&#8221;.
The private beta is insular in a way that isn&#8217;t immediately apparent to the people participating. We figure a huge percentage of our audience will be the barely interested programmers who end up on a Stack Overflow page from a web search. Also, the type of developers that tend to get attracted to the beta are the best, elite developers. Once the site is public, we&#8217;ll have a far wider range of skills in play &#8212; and much less sophisticated users.
I realized that Joel has zero votes because we actually had a XSS vulnerability &#8212; theoretically &#8220;friendly&#8221; hacker beta users intercepted our cookies and were able to impersonate us! We&#8217;ve fixed it now, but there was some minor collateral damage, such as the deletion of Joel&#8217;s voting history. This is one of the challenges of developing a site for skilled (but bored) developers with time and ability on their hands. 
Joel cites Aaron Schwartz&#8217; blog entry How To Launch Software as perhaps a model we should follow.  The so-called &#8220;Hollywood Launch&#8221; tends to cause a huge, uncontrollable spike in traffic and then a massive drop as things don&#8217;t go to plan. See Cuil. We are both scared stiff about the amount of traffic we already have, so we&#8217;ll be proceeding carefully.
Our SQL Server deadlock problem was solved by switching to read committed snapshot. It turns out SQL Server is not tuned very well for typical web app loads, which consist of massive numbers of reads and miniscule numbers of writes.
The Stack Overflow database and webserver are currently the same machine. One easy scaling path for us is to buy another server and dedicating it to the database. I&#8217;m just unsure exactly where the transition point is for network latency versus the SQL calls staying in memory.
There is a huge difference between horrible legacy code by talented programmers and horrible legacy code by, well, horrible programmers. This is frequently measured in WTFs/minute.


We also answered the following listener questions:

Ryan Cox: &#8220;Can you talk about backup and disaster recovery plans?&#8221;

Ryan: &#8220;In developing database-centric software for multiple clients, why not use a single database rather than multiple databases for each client?&#8221;

Phil Howie: &#8220;How do you balance legacy code that nobody wants to update with programmers who want to use the latest and greatest stuff?&#8221;



If you&#8217;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.

The transcript wiki for this episode is available for public editing.
</div></summary>
  </entry>

  <entry>
    <title>Stack Overflow on Herding Code</title>
    <link href="http://blog.stackoverflow.com/2008/08/stack-overflow-on-herding-code/"/>
    <id>http://yoursite/article/?i=0f28845d38965004f20a63fc968744ed</id>
    <updated>2008-08-25T09:30:20-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
I was invited to participate in the latest Herding Code podcast. 



This was a fun one for me because I&#8217;ve known the four hosts of the program &#8212; Jon Galloway, Kevin Dente, K. Scott Allen, and Scott Koon &#8212; through their blogs since forever, eventually meeting most of them in person. All of their blogs predate mine by years. I&#8217;d almost say we were blog buddies. If you could call people blog buddies. Which I don&#8217;t think you can.

At any rate, I go into quite a bit of technical depth on Stack Overflow and some of the features that we have yet to implement, but have been hotly requested &#8212; definitely worth a listen if you want to go deep.

Thanks for having me on!

(oh, and listen past the end for a little audio easter egg that&#8217;s sort of fun)
</div></summary>
  </entry>

  <entry>
    <title>Podcast #18</title>
    <link href="http://blog.stackoverflow.com/2008/08/podcast-18/"/>
    <id>http://yoursite/article/?i=487b1f4bb57121ee8ea84c23b48d8808</id>
    <updated>2008-08-20T19:30:10-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
This is the eighteenth episode of the StackOverflow podcast, wherein Joel and I discuss the following:

We finally get to meet Michael Pryor, the co-founder of Fog Creek Software, who is a special guest on this episode!
Joel had good luck browsing our beta site using Opera Mini. I&#8217;m still incredibly impressed with the Mobile Safari browser on the iPhone, which renders our JavaScript-heavy site perfectly, as far as I can tell.
Joel posted a Regex question on the Stack Overflow beta, and I can&#8217;t help bringing up RegexBuddy, my favorite (and still best) regular expression tool for developers.
Social websites are a bit unpredictable to build &#8212; we intended Stack Overflow as a relatively straightforward question / answer site, but there&#8217;s quite a bit of demand for inter-answer discussion. Our system is designed to float the best answers to the top via voting, but this makes conversations in the answers difficult to follow.
Stack Overflow is a hybrid of a discussion forum, a wiki system, and a voting/reputation system. It&#8217;s been a hit so far, but we are running into some design issues resulting from this unusual combination.
I had the opportunity last week to meet Merlin Mann, who Joel and I are big fans of. Joel particularly enjoys their podcast, You Look Nice Today. Turns out Merlin is a fan of Joel&#8217;s as well. We should form a mutual admiration society!
If you&#8217;d like to sign up for the Stack Overflow private beta, which will run until the end of the month, use our Google Docs signup form.

We didn&#8217;t get to any listener questions this episode, but we&#8217;ll remedy that next time!
If you&#8217;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.

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

 </div></summary>
  </entry>

  <entry>
    <title>Podcast #17</title>
    <link href="http://blog.stackoverflow.com/2008/08/podcast-17/"/>
    <id>http://yoursite/article/?i=c74c28933d092cc9f137f718ac0ac633</id>
    <updated>2008-08-13T16:00:28-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
This is the seventeenth episode of the StackOverflow podcast. Joel is on vacation, so this is a special podcast with the software development team: Jeff Atwood, Geoff Dalgas, and Jarrod Dixon.

Our team is geographically distributed &#8212; I&#8217;m in California, Jarrod is in North Carolina, and Geoff is in Oregon. 

Geoff and Jarrod, like me, both grew up with BASIC programming on early computers like the Apple // and Commodore 64. Can programmers who grew up programming somehow recognize each other?
The private beta is going well. We think the beta will continue through the month of August. We&#8217;ll continue to add 150 users per day until the private beta is over. 
This entire podcast was inspired by community comments on the Stack Overflow blog, so we proceeded quickly to the following questions:


We  answered the following questions left from the blog:

&#8220;How do you manage collaboration on a distributed team? Is code ownership a problem?&#8221;
&#8220;How do you prioritize what features you&#8217;re working on?&#8221;
&#8220;How do you test new features you&#8217;re developing before you roll them out?&#8221;
&#8220;What were the biggest technical challenges you had to overcome?&#8221;
&#8220;What happened on the site that you didn&#8217;t anticipate?&#8221;
&#8220;Are you happy with the performance of your Windows development stack on the web server?&#8221;
&#8220;Will you have an API? How will you deal with spammers, griefers, and marketers?&#8221;

The Stack Overflow private beta list is essentially full until the end of the month. If you&#8217;d like an invite sooner, do two minutes of transcription in the wiki and I&#8217;ll bump you so you get an invite the same day.

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.

The transcript wiki for this episode is available for public editing.
</div></summary>
  </entry>

  <entry>
    <title>Special Development Team Podcast</title>
    <link href="http://blog.stackoverflow.com/2008/08/special-development-team-podcast/"/>
    <id>http://yoursite/article/?i=dfbd0c286b98d5f65c9157087bea29af</id>
    <updated>2008-08-12T04:00:10-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
You demanded it.

We&#8217;re delivering.

Our special Stack Overflow development team podcast will be recorded later today.

Instead of yet another scintillating hour of Jeff and Joel constantly talking over each other, in this podcast episode you&#8217;ll get to know the other two key players on the Stack Overflow team. You know, the ones that do all the real work.



Jarrod Dixon (Morganton, NC)



Geoff Dalgas (Corvallis, OR)

Pop quiz, hotshot. If you were starting a company, who would you pick to come with you?

For me, it&#8217;s these two guys. Geoff, Jarrod and I all know each other from working together at previous jobs. They are without a doubt two of the very best developers I&#8217;ve ever worked with, and it&#8217;s an honor to have them on the team. Particuarly at the slave wages I&#8217;m paying them.  (Actually, I&#8217;m not sure even a slave could survive on what I pay.)

Let&#8217;s open the comments up &#8212; what questions do you have for the Stack Overflow development team? We&#8217;ll get to as many questions as we can fit in an hour.
</div></summary>
  </entry>

  <entry>
    <title>Bad News, Good News</title>
    <link href="http://blog.stackoverflow.com/2008/08/bad-news-good-news/"/>
    <id>http://yoursite/article/?i=8a14beed856d58b7dbaf85a8fdf43640</id>
    <updated>2008-08-05T18:00:24-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
I&#8217;ve got some bad news and some good news.

I like to start with the bad news, and you don&#8217;t get a choice, so here goes:

There will be no podcasts for the next two weeks.

Joel is on an extended vacation. Our apologies, but the logistics of recording remotely are too daunting. 



Plus, we want Joel to enjoy his vacation, right? Me, I don&#8217;t get a vacation. I have to work frantically with Jarrod, Geoff, and Jeremy on this Stack Overflow thing. Not that I&#8217;m bitter or anything. I&#8217;ll just set my desktop background to something tropical. It&#8217;s almost the same thing as a vacation. Almost.

But, I also bring you the promised good news!

You can sign up for the Stack Overflow beta.

Hooray! Huzzah! Because who doesn&#8217;t love using buggy, incomplete websites filled with irate users?

Click here to sign up for the Beta

I asked around on Twitter and got a recommendation for a Google Spreadsheet Form. I looked at Wufoo and SurveyMonkey but their limits are too low. I must say I&#8217;m impressed with the Google docs spreadsheet form solution; it&#8217;s working amazingly well. And it&#8217;s so simple. Every time someone visits the form and signs up, a new row is created in the spreadsheet. Easy!
</div></summary>
  </entry>

  <entry>
    <title>Stack Overflow Private Beta Begins</title>
    <link href="http://blog.stackoverflow.com/2008/07/stack-overflow-private-beta-begins/"/>
    <id>http://yoursite/article/?i=b0558a73cd5ea1a2a39ab941b9070fd9</id>
    <updated>2008-08-01T05:30:12-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
And then a miracle occured.



We&#8217;re beginning the Stack Overflow private beta.

I am sending out emails to the first 100 people for the private Stack Overflow beta; the email contains the password necessary to log in, as well as a link to this post. I will continue to email 100 people per day until all ~500 people on the private beta list have invites.

Please bear in mind the goals of this beta, as we proceed:

1. Generate REAL questions and answers

Treat the beta like a real live website! Don&#8217;t put &#8220;test&#8221; or &#8220;fun&#8221; or &#8220;play&#8221; questions up &#8212; ask actual, real, bona fide honest-to-goodness programming questions! Answer other people&#8217;s programming questions! If you look some programming question up on the web and you are unsatisfied with the results, post the question and answer on Stack Overflow (yes, it is OK and even encouraged to answer your own questions, if you find a good answer before anyone else.) I want Stack Overflow to be your research notebook for every programming problem you face that you don&#8217;t immediately know the answer. Help us help you.

2. Help Us Remove the Suck

We probably didn&#8217;t get everything right. In fact, I&#8217;m sure of it. The beta is private so you can help us remove all the suck before we let the general public in. I&#8217;m relying on you, the beta heroes, to tell us:

What&#8217;s confusing.
What&#8217;s broken.
What doesn&#8217;t make sense.
What could be better, and specifically how, with carefully researched examples and URLs referencing other sites that demonstrate specifically what ought to be done.


I&#8217;m sure it&#8217;ll still suck at the end. But with your help, less. Much, much less! With any luck, we might even flirt with.. wait for it.. not sucking! A man&#8217;s gotta dream.

3. Be Gentle

I deeply appreciate the effort that you are putting into testing our crappy newborn website. You are giving us the gift of your time, and that&#8217;s not something I (or any startup) should take lightly. So I, and the rest of the Stack Overflow team, will try to be as responsive as we possibly can to your requests during the beta. But we&#8217;re only human, and there are only three of us &#8212; and exactly one full time person (me).

If you are unfortunate enough to receive the yellow screen of death, know that all these errors are automatically logged and we will be looking at them individually. You should also know that these are all, like, totally Jarrod&#8217;s fault. Because he sucks.

For best results, please avoid mailing us directly, and use the stackoverflow.uservoice.com for your private beta feedback. It&#8217;s also linked from the beta site itself, right there in the header. From here, you can:

list bugs you&#8217;ve found
vote on the bugs you want us to fix
list features you want us to add
vote on the features you want us to add


I will check our uservoice site religiously! Direct email, I cannot guarantee a response to, but I will do my best.

Good luck and godspeed, brave beta users.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #16</title>
    <link href="http://blog.stackoverflow.com/2008/07/podcast-16/"/>
    <id>http://yoursite/article/?i=43c688c0b2306c3fe39d8af55e76d8fa</id>
    <updated>2008-07-30T12:00:27-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
This is the sixteenth episode of the StackOverflow podcast, wherein Joel and Jeff discuss the following:

Programmer design is scary &#8211; We now, thank goodness, have an actual designer design! Thanks to Jeremy Kratz for assisting us with our design woes. We also appreciate input from Tim Almond, Rob Allen, and Nathan Bowers.
We plan to have a smooth transition from cookie to authenticated user. I thought Jan Miksovsky had a great post on login barriers. I feel a lot of sites get this wrong by throwing up an abrupt login barrier too quickly. Tear down that login wall!
you have your choice of login methods: either OpenID or the traditional three &#8220;name, email, URL&#8221; input boxes. You will be able to fully participate as a non-authenticated user &#8212; both answer and ask questions. You may, however, be capped on reputation score and a few advanced abilities.
We will not be seeding the site with the data from the Joel on Software .NET forum, as we feel it will bias the site too heavily towards that particular audience. Stack Overflow is intended to be non-denominational. We will be seeding the questions and answers on the site with the content generated by the private beta users. 
One of the great advantages of the new Web 2.0 economy is that there are so few barriers between programmers and the world &#8212; assuming you&#8217;re comfortable building a web site. Contrast this with the bad old days of distributing software on floppy disks or CDs.
Can you remember the first time you used Google? When and where did you discover it? How has Google resisted succumbing the portalitis disease after so many years? It&#8217;s admirable that they&#8217;ve pursued simplicity this long.
I am mightily impressed that the iPhone can render Stack Overflow, even the jQuery and WMD editor parts. Kudos to Apple for an (almost) no-compromises mobile web browser that delivers a desktop browser experience.
Joel loves his new Nokia E71 phone, and he cites the physical keyboard as the primary differentiator &#8212; along with the superior third party Exchange integration.
Revisiting my programming chair article. Although I loved my 1998 Aeron, I felt I could do better &#8212; and the Mirra I&#8217;m sitting in now is a distinct improvement. I&#8217;m with Jason Calacanis: buy a cheap desk, and the best chair you can afford. Joel recommends the Chadwick Chair which I didn&#8217;t get a chance to try, unfortunately.
Don&#8217;t forget overall computer workstation ergonomics; Joel also recommends variable height desks.
On McConnell&#8217;s cone of uncertainty, and the importance of keeping a list of what is to be done. You can&#8217;t estimate without a list of tasks &#8212; and you probably need to break the tasks down to very minute steps to really understand what those tasks entail, too.
As Joel points out, there is the risk of the &#8220;Objects In Mirror Are Closer Than They Appear&#8221; illusion &#8212; your mind&#8217;s eye tends to fill in the gaps. You gloss over the details and presume things will be simpler and easier than they actually are.
I believe in two principles during this project. First, having public artifacts that everyone can objectively see and judge. The team should develop a concensus opinion based on that reality. Second, have a plan &#8212; but start on that plan as soon as possible! The sooner you get started, the sooner you will discover all the details and weirdnesses you could not anticipate or plan for.
Joel proposes having major plans for version two, and just getting a small version one out the door quickly. The actual usage of the app may not be at all what you imagined, and you can change your approach more rapidly to accommodate those real world uses for version two.


We also answered the following listener question:

Josh Parris: &#8220;Why did the Stack Overflow schedule blow out?&#8221;


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.

The transcript wiki for this episode is available for public editing.
</div></summary>
  </entry>

  <entry>
    <title>Stack Overflow Beta Design</title>
    <link href="http://blog.stackoverflow.com/2008/07/stack-overflow-beta-design/"/>
    <id>http://yoursite/article/?i=4072581fcb6679307b1d700cedaafb5a</id>
    <updated>2008-07-26T01:30:06-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
Ever notice how most sites run by programmers have the worst designs ever?

Yeah.

We&#8217;re currently at the stage where we need to implement an actual design &#8212; for which I have recruited actual designers. Here&#8217;s a sneak peek at the beta design we&#8217;re furiously working on implementing at the moment.



Trust me, you do not want to see the &#8220;programmer&#8221; design we had before this. I&#8217;ll have more details on the designer we&#8217;re working with &#8212; who will be featured in our site&#8217;s about page credits as well &#8212; later.

This is by no means final, so feel free to comment, but it is definitely good enough for the beta to begin next week.
</div></summary>
  </entry>

  <entry>
    <title>Podcast #15</title>
    <link href="http://blog.stackoverflow.com/2008/07/podcast-15/"/>
    <id>http://yoursite/article/?i=adfaf65312076a9b99ba173e7ece9788</id>
    <updated>2008-07-25T15:41:08-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
This is the fifteenth episode of the StackOverflow podcast, wherein Joel and Jeff discuss the following:

A brief discussion of our shoestring budget, and the project schedule. The beta for Stack Overflow is close; we will likely be trickling people in by the end of the month.
Strategies for handling recurring or background tasks in ASP.NET. We have a simple method that works for now.
Being a stellar software developer does not necessarily equate to being a stellar manager of software developers. Promoting your best coders is not always the best strategy. We highly recommend Peopleware and Managing Humans: Biting and Humorous Tales of a Software Engineering Manager. If you&#8217;re a manager, staple these books to your face! Live it, learn it, love it! If you know someone who is a manager of software developers, staple these books to their face. They&#8217;re that important.
Joel&#8217;s essential time management tip: get things done by not reading Getting Things Done. Personally, my time management is terrible, but I do have one guiding principle: produce some kind of small public artifact every day. We can recommend Merlin Mann&#8217;s excellent site 43Folders, which is sort of a long running geek love letter to that book.
I argure that regions are the GOTO of code formatting. I navigate in Visual Studio using search as my metaphor. Between CTRL+I incremental search and CTRL+SHIFT+F find in project, I&#8217;m never more than a few keystrokes away from whatever code I need to see. Your code is full of highly unique keywords, just like the web is full of unique search terms.
Joel and I both agree: one of the most effective coding practices you can adopt on your team is interactive, sit-down-with-your-coworker code review. 90% of the things you will learn have nothing to do with the code. I believe programming is a far more social activity than most realize. If you write code, and nobody but you ever sees that code &#8212; did you really extract all the benefit from writing that code?
When it comes to interviewing software developers, it seems there are two classes of interviews: the kind where the interviewee gets to drive, and the kind where the interviewer does all the driving. Try to have a game plan for both types of interviews. Be yourself, build a portfolio, and actively study the company you&#8217;re interviewing at. For some interviews, you really do need to prepare &#8212; practice, practice, practice!
We can&#8217;t talk about programming interviews without mentioning classic interview puzzles and the book How Would You Move Mount Fuji?
On the amazing power of lambda expressions, delegates, and anonymous methods. Fun stuff!
If ACME is in the business of developing explosive widgets, is it unreasonable for them to inevitably outsource their software development to Coders R Us? If you&#8217;re serious about software engineering as a career, you deserve to work at a company that is serious about software engineering, too. This usually means choosing to work for a company where software is at the core of their business model. See Joel&#8217;s Talk at Yale.


We answered the following listener questions:

Gordon Milne: &#8220;I have an opportunity to pursue a more manegerial role; how do you feel about making the transition from developer to being responsible for other developers?&#8221;

Jason Zimpelmann: &#8220;What sorts of time management skills do you use?&#8221; and &#8220;What about that posting on region blocks?&#8221;
Aviv Ben-Yosef: &#8220;Should code review be done alone via email or in person?&#8221;
David McGraw: &#8220;What advice would you give college graduates who are interviewing for programming jobs?&#8221;
Adam Haile: &#8220;How do you handle pointers to functions in the .NET world?&#8221;
Matas A. Bellone: &#8220;Outsourcing has been putting food on my table for the past few years. What are your feelings on this?&#8221;


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.

The transcript wiki for this episode is available for public editing.
</div></summary>
  </entry>

  <entry>
    <title>Dates: Relative or Absolute?</title>
    <link href="http://blog.stackoverflow.com/2008/07/dates-relative-or-absolute/"/>
    <id>http://yoursite/article/?i=3302f64a14f765bd7d335730978779e8</id>
    <updated>2008-07-21T04:00:10-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
Another item we&#8217;re looking at as we get closer to the Stack Overflow private beta is the issue of how to display dates on the questions and answers. We started by displaying the absolute dates as you&#8217;ll see them on Joel&#8217;s existing forum &#8212; although we do add the time as well:

Monday, June 27, 2005 at 6:35 pm

This works fine, assuming you&#8217;re in the same time zone as the server. (Actually, now that I think about it, maybe that&#8217;s why Joel opted to drop the time part; the odds of your time zone being in a completely different day from the server&#8217;s time zone is fairly slim.) Otherwise, you have to record the user&#8217;s time zone and translate all the server times to their local time.

We noticed that some sites, like getsatisfaction, opt to display all times in relative units. So the above would be rendered as:

Three years ago

Granted, it lacks precision, but did you really need to know the message was originally left on June 27th? And isn&#8217;t it simpler not to have to do the &#8220;how old is this&#8221; math in your head? The other big advantage is that relative times work for every timezone, so you don&#8217;t have to tell us your timezone in your user profile, and we don&#8217;t have to be scrupulously careful to convert every date we touch.

However, note that the precision of the date increases automatically as the messages get closer to &#8220;now&#8221;:

Three years ago
Two months ago
17 days ago
6 minutes ago


We&#8217;re leaning heavily towards displaying all question and answer times in relative units now. What are your thoughts?
</div></summary>
  </entry>

  <entry>
    <title>Easy Background Tasks in ASP.NET</title>
    <link href="http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/"/>
    <id>http://yoursite/article/?i=d504dad578418c94a2dc32931d778874</id>
    <updated>2008-07-18T11:00:09-07:00</updated>
    <author>
      <name>http://blog.stackoverflow.com/20</name>
      <email>AUTHOR_EMAIL@email.com</email>
    </author>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
As I work on the badge implementation for Stack Overflow, I needed a way to call the code that detects and awards the badges out of band. Traditionally this is done by something like cron or scheduled tasks. I&#8217;d rather have the code stay inside our current codebase, though.

I asked on Twitter and got some good responses, everything from &#8220;write a service&#8221; to &#8220;use threads&#8221;. I also got a link to Simulate a Windows Service using ASP.NET to run scheduled jobs. Now this is interesting &#8212; it&#8217;s just simple enough to work:

At startup, add an item to the HttpRuntime.Cache with a fixed expiration.
When cache item expires, do your work, such as WebRequest or what have you.
Re-add the item to the cache with a fixed expiration.


The code is quite simple, really:

private CacheItemRemovedCallback OnCacheRemove = null;

protected void Application