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

This is the 47th episode of the StackOverflow podcast, where Joel and Jeff discuss Eclipse, plugin architectures, sketching mockups, and optimizations that don’t optimize.

  • I had the honor of keynoting EclipseCon this year with Clay Shirky. Eclipse is an open source IDE with an excellent plugin ecosystem. It’s also a great Java GUI framework.
  • A brief discussion of the communal relationship between applications and plugins.
  • I am cautiously optimistic about the release of Internet Explorer 8. The betas were very scary, but the final released version is surprisingly solid and fast. A totally respectable update from Internet Explorer 7, and it has a very convenient “switch to IE7 rendering mode” (along with a HTML header that does the same thing) that means it’s super easy to essentially have both browsers. 
  • Joel explains that he’d rather spend any amount of money than have his developers “take a few weeks” to optimize the FogBugz compiler. Remember, hardware is cheap, and programmers are expensive. This may include buying 8 GB of memory (cheap!) and the super-fast Intel SSD hard drive. It’s recommended by Linus! Be careful with SSDs, the only ones worth having at the moment are the very high end models like the Intel one. Cheaper ones can be slower than regular hard drives!
  • I continue to recommend the two-spindle approach for desktops for optimal performance. It’s the same reason, on a database server, you typically have the OS on one drive and the data on another drive. It reduces contention.
  • We joke about pure architecture software releases, where nothing visible changes in the product, except the underlying code. There are reasons to do this, such as performance, scalability, and simplicity. But for a product users pay for, a pure architecture release would be suicide.
  • Our live podcast from MIX went great — thanks to everyone who participated! You can watch our 5-minute bit at about 50 minutes into the day one keynote on the official MIX website.
  • The classic example of a free site attacking the business model of a pay site is Markus Frind’s Plenty of Fish. What’s odd is that PoF has been so successful that Markus is looking to acquire a pay dating site at this point. On the other hand, he’s adding some pay features to his free site as well.
  • Joel talks about how smart the design of Balsamiq Mockups is. It actually forces you to stay simple and abstract, which is the whole point of sketching.
  • Sketching is on our minds because the Bill Buxton book Sketching User Experiences was provided to every MIX attendee, and Bill Buxton was the first day 1 keynote speaker.
  • Joel complains that so many design books start by talking about the design of the iPod, to the point that it’s cliche. Perhaps one design lesson is that people care more about the content than the design — the websites they load are far more important than what browser widget they load it in, despite how important choice of browser is to us geeks.
  • One of the points Clay brought to our EclipseCon keynote was that social software ends up being a mirror, a reflection of the community you drop it in to. Unlike PhotoShop, which works exactly the same no matter how many times you copy it or who is using it, the same social software may behave completely differently for different communities. This is why Reddit cloning itself into weheartgossip isn’t really working — the audience is too different.
  • Make sure your “optimizations” are actually optimizing, otherwise you’re pessimizing — with the best of intentions, you make your code slower. Benchmark first, not last!
  • There are huge categories of premature optimization you should avoid, but you also want to avoid making big design mistakes early on. It’s not necessarily optimization, per se, but don’t do things that are so incredibly boneheaded you will regret them forever.

We answered the following listener questions on this podcast:

  1. “What about Stack Overflow for car questions?”

Our favorite Stack Overflow qustions this week are:

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

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

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

We’re now experimenting with serving up a small AdSense banner for users with less than 200 reputation. This banner appears just under the title of any question.

stackoverflow-ads-adsense

Up to 90 percent of our traffic is from Google now. We feel that users arriving from Google search will be accustomed to seeing a small ad banner at the top of the page, so it shouldn’t be a bother.

While we don’t want to pummel anyone with ads, we do need to advertise responsibly to ensure we generate enough revenue to fund continued development of the site — specifically, so I can pay Jarrod and Geoff. I’d love to be able to hire Geoff full time, and continue to increase Jarrod’s meager salary so it actually resembles something approaching professional wages. This money does not go into buying gold-plated humvees and designer megayachts. Yet. It all goes directly toward feeding your fellow programmers!

Once you’ve earned 200 or more reputation:

  1. The question ad banner will no longer appear.
  2. The two sidebar ads will stay, however, they will switch from a contrast visual style to a blend visual style (for text ads).

We aren’t planning to have more than 3 ads, and as always, we will never accept animated, Flash, or Silverlight ads. We think this is a good, responsible balance of advertising, and hopefully sufficient to underwrite the continued development and improvement of Stack Overflow!

That said, like everything we do, it’s an experiment. We’ll continue to tweak and adjust as necessary.

In December we began tracking and removing anomalous voting patterns. This happens automatically as part of a daily script, and it’s worked well to date, nullifying the most egregious upvoting and downvoting anomalies.

I’ve been getting a few reports of further voting issues via the email link provided at the bottom of every Stack Overflow page. We take any reports of exploits or problems on Stack Overflow very seriously, and they’re all investigated. In particular, we will not tolerate gaming our vote system.

examining-vote-chad

Based on additional analysis of the voting data and user data, we’ve refined our detection of voting anomalies even further. I have to be coy (again) about exactly how we do this because I don’t want users optimizing around the various checks we do. But, in a nutshell:

  1. We can automatically detect sockpuppet accounts now. Sockpuppets used for the purpose of upvoting or downvoting will be deleted, and their votes — cancelled.
  2. We now perform a more detailed statistical analysis on voting patterns. Any voting patterns that are too far outside the statistical norm will be nullified.

If you see a reputation drop today, it’s likely because our new, improved daily vote anomaly check found something that should be removed. And if you own a sockpuppet account, you may find it no longer exists. That said, we believe in discouraging behaviors rather than the user. Nobody will be banned or penalized. Just refrain from engaging in these behaviors unless you want them undone every day, like clockwork.

The bottom line is this: it will always be easier to earn reputation legitimately — by asking good questions and providing great answers — than by gaming the system.

Stack Overflow has exactly four moderators: Joel, Jeff (me), Jarrod, and Geoff. It’s no coincidence that the list of moderators is identical to the list of co-founders and mainline developers.

As we launch the upcoming IT / SysAdmin sister site, we’ve had very little luck locating notable folks from that community to act as moderators and spiritual leaders for the site. So we’re flirting with the idea of promoting users with high reputation scores and the respect of the community to moderator status.

Moderators (indicated by the small star icon) are the most highly trusted members of the system, so this is not something we take lightly. Moderators can:

  • cast one-shot binding votes on open, close, delete, and offensive.
  • edit anything in the system, including user profiles.
  • delete revisions.
  • have visibility into our internal error logs.

.. and so forth.

It occurred to me that we might as well test this theory out by starting with Stack Overflow itself. So let’s give this a shot. Reply in the comments, nominating up to three Stack Overflow users you think would make good moderators. Some ground rules:

  1. Must be a currently registered Stack Overflow user in good standing
  2. Must have at least 7,000 reputation (I was going to say 10k, but as long as you’re in the ballpark, that’s fine.)
  3. Should exhibit patience and fairness at all times in their questions, answers, and comments.
  4. Should lead by example, showing respect for their fellow programmers in everything they write.
  5. They should want the responsibility. Nominating users isn’t the same as an obligation. It’s purely voluntary.

The nomination period will last for one week. At that point, I’ll tally the nominations up and put it to a public vote — but only registered Stack Overflow users with a reputation score of 200 or higher will be able to cast votes!

This is the 46th episode of the StackOverflow podcast, live from MIX09, where Joel and Jeff answer questions from the live audience.

  • This podcast is live from the MIX09 conference! Joel and I also had a small 5 minute segment in the Day 1 keynote, which you can view online. It’s at around the 50 minute mark or so.
  • We had a live audience, so the focus of this podcast is on questions from our live audience.

We answered the following live audience questions on this podcast:

  1. “What’s the point of Silverlight?” The short answer is, it’s like Adobe Flash, but much more programmer oriented. Silverlight 3 beta was just launched at MIX, with lots of new developer-y goodness.
  2. “What’s the most number of questions asked by an actual Stack Overflow user?” That would be Edward Tanguay with 210 questions, closely followed by Thomas Owens who asked 207 questions. One reason the “ask a question” button isn’t more prominent on the site is that we encourage people to read and answer a while before asking anything. Good questions take some effort!
  3. “Have you ever considered moving Stack Overflow to the cloud?” The cloud makes more sense for experimental projects that may or may not succeed. We did the math and decided that owning the hardware was a better deal for our project. It could also make sense for hot-standby disaster recovery backup servers. It depends whether or not you prefer flexibility, or fine-grained control.
  4. “What issues did you have with using ASP.NET MVC?” Other than the typical beta issues, not much. The big advantage, to us, is that MVC is a much more web-centric development model. It is a much closer match to our mental model of how web programming should work, and how URLs should be formed.
  5. What does the new guy do on the first day?” Fix the simplest possible bug in your product. And on the next day, fix a slightly more complex bug. It helps to do this in an environment of active pairing or mentoring.
  6. “Are there some things about the web platform (HTML, CSS, etc) that you wish worked differently?” Sure, the platform barely works. There’s something inspiring about so many programmers are building great stuff on such a rickety platform. And it’s creating a whole new generation of programmers. There’s a certain inexplicable elegance to the madness.
  7. “We have a lot of relatively unstructured data that we’re storing in a database, is there some other way do deal with this? And what about REST vs. SOAP access to it?”  Joel points to Adam Bosworth’s classic talk about the flexibility of loosely structured data. Perhaps something like Lucene or CouchDB would be a better choice than a traditional rigid database. And remember that meta-tags, while worthless on the open web, are trustworthy on local data. Sometimes you don’t need a perfect 100% right answer back from the data. Joel describes the advantage of REST over SOAP thusly: you can just type stuff into the browser’s address bar and see the results in real time.
  8. “Should you teach the framework, or the underlying languages?” Joel points out that maybe students shouldn’t be studying programming at all. You can learn a lot about programming through related fields. Joel and I disagree a bit on this one. I think good developers are inherently curious, so they can learn the framework and dip into the lower level language as necessary to solve whatever problem is at hand. Joel says you should start with the language and scale up.
  9. “How different is the world view of a programmer who is twenty-something and grew up with the web, versus a thirty-something who didn’t? How important is historical context?” Can developers who only know JavaScript, HTML, and CSS grow into being generally great developers? I argue that there’s an inherent intellectual curiosity in all great programmers, so they can start anywhere and get amazing results. Joel notes that some of the historical context can become a burden and possibly even incorrect over time. There’s a tension between necessary mentoring between older and younger programmers, and fresh eyes questioning the status quo. It’s good to continually question the programming status quo. Otherwise, how would we make any progress? We’d carry forward our old biases and decisions forever, even after they were no longer necessary.
  10. “At what point in Stack Overflow do you see yourselves hiring specialists? How do we justify bringing in experts to management?” We already have, to some degree; we have Jeremy Kratz helping us with design and Brent Ozar helping us with advanced database stuff. You have to know your own limitations, what you’re good at and not good at, and how to slice off a small piece of work that’s appropriate for the specialist. If you need to sell this to management, try it on a small part of the project first and show what the difference would be on the full project.

Our favorite Stack Overflow qustions this week are:

  • Stack Overflow on Line 25 — this is one of the downsides of having the name “Stack Overflow”. It’s impressive how good the answers are to a question by a poor, beleaguered end user who just got a stack overflow JavaScript error in their browser

  • Why does setting a stack method result in a Stack Overflow? — this is a classic example of a mind reading answer. The asker wasn’t able to establish what their question really was.

  • Is there a human readable programming language? — yes, until everyone decided that was a really dumb idea. Its name was COBOL.

  • Should a function have only one return statement? — a classic discussion question. Discussions are valid as long as they’re focused. Here, the goal is to avoid writing “arrow” or “pacman” code and to keep the functions as small as possible. It’s amazing to us that some developers are still dogmatic about this one. In theory, this is a good rule, but in practice, it isn’t. And practice always overrules theory in my book.

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

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

 
icon for podpress  Podcast 46 [01:08:52m]: Play Now | Play in Popup | Download