site title

Podcast #61 – The “What Jay’s Done Wrong” Podcast

posted under by on 11-25-14 13

Welcome to the 61st installment of the Stack Exchange Podcast, brought to you by okra (yes, that okra). On our show today are David Fullerton, Jay Hanlon, and Joel Spolsky. It’s been a long time since we last did a podcast, so let’s get started.

  • First point of business: we have an iPad app! It’s got a snazzier feed and a fancy live preview in the Compose view. We’ve been getting more posts from mobile than we expected, because computing via iPad is the way of the future (according to Joel), so lots of features in the iOS app are now better optimized for posting as opposed to reading.
  • Moving onto far more important business: Joel’s dog Taco got 21,000 likes on Instagram.
  • PSA: Always make sure your insurance will cover it before you travel to Kansas City. (Any Kansas City. We’re not sure how many there are, or even which one Joel went to on his zombie visit.)
  • Also, Garmin makes boats.
  • By the way, we’re still talking about the iPad app, apparently. We’re collecting a lot of data about how our mobile apps are being used to help us gear them better toward the people who are actually using them. Our mobile team (led by Kasra) has been working really hard on making the apps shine (despite Joel’s efforts to force random features nobody will use onto them). So try it out (iOSAndroid) and let us know what you think. We love feedback.
  • Moving on! We revamped our Be Nice policy after hashing it out with the community on meta. (We didn’t handle the feedback part super well. Lessons were learned!) This discussion of it is about as long as the original draft was, so get comfortable.
    • A secondary point of interest: should comments stick around forever, or disappear after 21 days? I bet you can guess Joel’s opinion.
    • A tertiary point of business: the numbering of the Ten Commandments really is disputed – Joel’s not making this part up.
  • Okay that’s great. Next! Joel tries to bring up diversity (spoiler alert: we’re pro-diversity), but we decide to devote more of a podcast to it later.
  • Say, David, what is a Stack Snippet? We’re glad you asked! It’s essentially a loving knockoff of JSFiddle. They help us ensure that our content stays up-to-date and relevant, and they reduce mental friction.
  • This is cool: we open-sourced our monitoring system. It’s called “Bosun” (or “Boatswain”, or “bo’s’n”, or “the first word of The Tempest“, but we think it’s easiest to stick with Bosun). Listen about it in this podcast, read about it on the blog or the Server Fault blog, or just get started. It’s in alpha, but you can check it out. (Major credit to Matt Jibson and Kyle Brandt for their great work on this project.)
  • We have a new Q&A site about Worldbuilding, and it’s doing really well – despite the Community Team’s misgivings about launching it. We’ve shifted toward letting most Area 51 proposals test their legs in private beta – as long as they don’t embarrass us or duplicate or overlap significantly with other sites. That’s why we decided to launch Worldbuilding even though we didn’t understand it – and luckily, they proved us wrong.
  • Worldbuilding is in public beta. So is:
  • We closed down Web Design and Home Automation due to lack of activity.
  • Salesforce is fully graduated with a beautiful new design. It’s got all kinds of fonts and colors.

We’ve been going for HOURS (one hour), so it’s time to wrap it up. Thanks for listening to the Stack Exchange Podcast episode 61, brought to you by okra!


Announcing Bosun, our new open source monitoring & alerting system

posted under by on 11-11-14 30

If trees could scream, would we be so cavalier about cutting them down?
We might, if they screamed all the time, for no good reason.

- Deep Thoughts, by Jack Handey

A big part of scaling up an engineering team is getting serious about monitoring and alerts. A good monitoring system collects data from all of your various systems — for example, how fast pages are loading, or server CPU usage, or emails being sent — and alerts you when something isn’t working correctly. When everything works perfectly you can sleep easy at night knowing that you’ll get an alert if something isn’t working correctly.

That’s the theory, anyway. About a year ago we realized that our monitoring system needed some serious upgrading. Instead of proactively alerting us before something broke, it mostly alerted us that something was already down. When we did get an alert it wasn’t obvious what exactly was breaking or who needed to fix it. If you’re a developer or sysadmin this email inbox probably looks a bit familiar:

alert hell

So we set out to fix it. We weren’t happy with any of the tools available so we decided to build our own. Since we are big fans of giving back to the community, we decided to make it open source as well.

The new system is called Bosun (because naming is hard) and was developed by our own Kyle Brandt and Matt Jibson. It’s still very much in development but we’ve been using it internally for a few months and are really happy with the results. We can measure much more intelligently and build complex alerts based on those metrics. Some of the things it makes easy are:

  • Push data into Bosun from anywhere via a simple JSON api, or use scollector to collect common metrics from lots of different systems
  • Test alerts against older data and see when they would have gone off
  • Reduce email clutter with scope-aware alerts, so when e.g. redis goes down we get one email, not twelve (one for each instance)
  • Forecast and alert against future data, like when we’re about to run out of disk space

If you’re interested, read the full announcement (with a lot more detail) on the Server Fault blog or go straight to to check it out. There’s a link on the Getting Started page to a Docker image that populates itself with some data for you to experiment with. And if you happen to be at LISA this week you can check out Kyle Brandt’s talk on Thursday.

As with any open source project, we’re looking for a few brave souls to join us. You can grab the source on GitHub and start submitting issues and pull requests today.


Stack Exchange for the iPad is here – and iOS apps now support iOS 8

posted under by on 11-03-14 19

When we launched our iOS and Android apps, we were pretty sure they’d help our most active users in a couple of ways:

  • Push inbox notifications are epic – you can know the minute you get an answer or someone comments on your post.
  • The personalized mobile feed lets you browse all content relevant to you, whether it’s posts from your communities or replies to your posts.
  • Voting, commenting, and minor edits are all things you often want to do when you’re away from your desktop, and an interface built for touch makes them a breeze.

Those were a huge success; a ton of our most active users loved them. Here’s what we didn’t expect:

A lot of people are posting from the app.

  • Over twenty-five thousand posts have been made from the app…
  • …More than 69% of them are answers!
  • The average quality of the posts is significantly higher than the overall average.1

Those on-screen buttons may not have the same satisfying click your Cherry MXs do, but despite your freakishly large thumbs, an amazing number of you are helping others from the bus. Or in line at the DMV. Or at other times that you’re… just not at your computer. (They tell me I can’t make a “or while in the bathroom” joke here. Because of course that would be a joke, right?) That’s not just a reflection of how dedicated our users are to sharing their knowledge; it’s also awesome for my personal job security, so thanks!

(Phil Schiller with actual-size prototypes.)

Bigger is Better

So that’s all great. But we still had a problem. Sure, the iPhone 6+ is big – but even the new iPhone 6+ probably can’t show you all the upvotes you’ve earned today from all the knowledge you’ve dropped lately.

So, what are you supposed to do? Scroll? Like an animal?!?

We thought not. So, we’re ecstatic to announce Stack Exchange for iPad, built from the ground up for the ideal tablet experience.2

Go download it now! What if we raised the price to $0.99 next week? Think about how long you’d agonize over paying nearly a dollar for this wonderful app. We really don’t want that stress for you, so go get it now. (Okay, we’re probably not going to charge for it. But why risk it? Isn’t life stressful enough?)

The Feed: Bigger than Ever

Thanks to the bigger screen real estate, we were able to let the feed display way more of your recent notifications, achievements, and recommended questions. If you haven’t downloaded it yet, there’s a screenshot at the top of this post – just look at all that information!

There’s also a dedicated, swipe-browsable hot questions section at the top. Did you ever wish you could swipe new things onto your screen, without the sense of guilt that comes from swiping a human out of your life based entirely on their looks? Have you ever wanted to know if a society could evolve without wood, or if submarines technically “float”? Your day has come.

Editor and Preview Just Might be Better than on the Web

We can’t overstate how happy we’ve been to see people writing actual, great posts on the go. This new update makes that even easier, with touch-optimized Markdown tools in the composer, and a live preview that’s right next to the compose window, so you can see your beautiful formatting as you type (without scrolling!)

This is just the start. Given how much you’re posting using the applications, we’re going to be focusing a lot on making the entire process nicer.

When we started out, we thought the iPad standard browser experience was pretty solid, and we decided we weren’t going to build an iPad app unless we thought it actually improved that experience. Between the touch optimized browsing and interface elements, side-by-side composing, and a much more integrated experience going from one site to the next, we’re convinced it does just that – we’ve been testing it a lot internally for the last few months and I can’t live without it; hopefully you’ll feel the same.

So, if you’ve got an iPad, get to the store and download it now. (No worries, it’s still free. For now…)  If you’re an iPhone user, the new update also includes lots of quality of life changes for you too (including full iOS 8 support), so upgrade or install it today!

Not an iOS user?

  • If you’re an Android tablet user, don’t worry, we’re working on things to make you happy too.
  • If you’re a Windows Phone pioneer, check out this meta discussion.
  • If you’re anxiously waiting for a Symbian or WebOS version, please submit your request via betamax video, ideally delivered by a human being riding on a horse, don’t forget to have another person following to clean up after the horse.


These apps couldn’t have happened without our incredible beta testers from the community, and we’re counting on you to tell us how to make it even better! Please post any feature requests you have on Meta – and if you find a bug, please report that too.

1 To be fair, there’s probably a lot of selection bias there – the app users are likely our most active, experienced users, but the point is this: the posts from the app are good.
2 Technically, it’s iOS 1.2.0, a universal app available now for iPhone and iPad.


Editing is essential: new badges and review enhancements

posted under by on 10-07-14 34

Explainer - Edited and answered 1 question (both actions within 12 hours, answer score > 0)
Refiner - Edited and answered 50 questions (both actions within 12 hours, answer score > 0)
Illuminator - Edited and answered 500 questions (both actions within 12 hours, answer score > 0)

We rolled out three new badges last week!

These recognize a pattern that sets Stack Exchange apart from the forums and message boards that came before it: answering and editing questions, the ability to not only write an answer that can be useful beyond the immediate asker but also re-write the question such that it can be found and understood by future readers. Thanks to this capability, brilliant explanations need not languish under titles such as “C++ problem” or “Java doubt” – having written an answer that ably fixed the problems in the asker’s code, it is possible to also fix the problems in his writing!

It’s no surprise then that the top editors tend to include an awful lot of the top answerers. If you’re good at writing, good enough to consistently hammer out insightful answers, you’d be a fool not to make sure the introductions to those answers – the questions being answered – were of similar quality. Yet, this seemingly-obvious technique remains unknown to many – indeed, I’ve heard some express shock at the notion that answerers would be allowed to touch the words of those whose questions they strive to interpret and address.

Well, you are allowed. And now, encouraged!

As with previous sets of badges, the bronze level exists to provide a form of “just in time” learning for new users, while the silver and gold levels offer increasingly lofty goals to strive for.

Recent changes to suggested edits

With the introduction of suggested edits, we sought to make the immense power of editing available to anyone reading the site. Instead of going into effect immediately, suggested edits required approval from some number of people who had already earned full editing privileges, thus ensuring some resistance to spammers, vandals and griefers as well as a path by which inexperienced editors could be guided by those with more exposure to community norms. However, several serious deficiencies in this system became apparent over the past few years, so we’ve now taken steps to correct them:

  1. We’re now notifying editors of past rejections when they load the edit form.

    There are some checks in place to avoid hassling folks with occasional rejections, but for a new editor whose edits are being rejected these should help them to improve before they waste too much of their time.
  2. Reviewers are given a limited period of exclusivity for edits they’re reviewing, during which the edit won’t be assigned to anyone else for review. This should greatly reduce the frustration for conscientious reviewers, who might previously find the edit they were reviewing (or improving) already approved or rejected by the time they submitted their review.
  3. Reviewers who wish to perform edits themselves have the option of either approving and editing on top of the suggestion, or rejecting and replacing it with a different edit.

    This replaces both the previous “Improve” option, and the “too minor” rejection reason, allowing edits that make small changes while overlooking large flaws to be quickly discarded, while ensuring that truly helpful edits – even small ones – are more consistently approved. Combined with change #2, this gives a great deal more power to reviewers who are comfortable editing – and who better to review edits than editors?
  4. Finally, we’ve revamped the rest of the predefined suggested edit rejection reasons, improving their context-sensitivity and focusing more specifically on common mistakes and outright abuse.

Together, these changes should offer better guidance to both editors and reviewers, helping both work together effectively.

Big thanks to everyone who chimed in on the meta discussions linked above, as well as those who’ve repeatedly reported these problems over the past few years. Gratitude is also due to the developers who patiently worked to implement these changes, Geoff Dalgas (badges, review changes) and Kevin Montrose (edit rejection feedback). And of course, huge thanks to everyone who uses this tooling in spite of the occasional rough edges.

These changes are part of a project intended to help improve the quality of Q&A on Stack Exchange. Stay tuned for even bigger, better changes in the coming months!


Introducing Runnable JavaScript, CSS, and HTML Code Snippets

posted under by on 09-16-14 94

On Stack Overflow and our other code-related sites, creating a minimal, complete, and verifiable example is the best way to get an answer to your question. We’ve always loved JSFiddle and sites like it because they let both askers and answerers reference runnable, working code that demonstrates their problem or solution.

Unfortunately, the use of these external sites introduces a few problems:

  1. If the link breaks, the post becomes worthless.
  2. If the code isn’t embedded in the page, visitors are forced to go elsewhere to get the full content of the question or answer.
  3. Also, because the code isn’t a part of our post Markdown, changes to it don’t show up in the revision history.

The community voiced similar concerns around external sites, which eventually led us to block posts that contain links to JSFiddle and similar sites without a corresponding code block. This is an unnecessary burden for both askers and answerers.

So we’ve created our own way to embed runnable JavaScript, CSS, and HTML code blocks right in the body of a post. As of today, we’re launching “Stack Snippets,” a fully integrated feature available on Stack Overflow and any other code-related Stack Exchange sites.

How Do Stack Snippets Work?

With Stack Snippets, a code block:

Code block

Can become a runnable code block:

Runnable code block

The code will not run until you press the “Run code snippet button:

Runnable code block that has been executed

How Do I Make A Stack Snippet?

Stack Snippets work for both questions and answers. In the Markdown editor window, there’s a new button that you can click to launch the Stack Snippets editor.

The Markdown toolbar with the new Stack Snippet button

The editor appears and allows you to enter HTML, CSS, and JavaScript (or any combination of them):

The Stack Snippet editor

Once you’ve got your code working, press “Insert into Post” at the bottom and you’re done! You can test your snippet, or load it back into the Snippets editor from right in the Preview screen:

The run and edit options of Stack Snippets in the editor preview

When answering a post containing a snippet, you can easily include a modified version of the original in your answer – just click the “Copy snippet to answer” button.

Under the Hood

A great feature of Stack Snippets is that they are inserted as regular Markdown code blocks:

The actual Markdown of a Stack Snippet

This makes them instantly backwards-compatible with our normal revision history and diffs, and also any API clients including our own mobile apps.

The runnable snippets behavior is triggered by a few new HTML comments that are not rendered by Markdown. You can even edit the code right from the Markdown editor and the snippet will still be runnable.

Are Stack Snippets Safe?

Yes, as much as the web in general is safe. You are not in any more danger than you are when browsing any site with JavaScript enabled. With that said, the snippets are running client code in your browser, and you should always exercise caution when running code contributed by another user.

We isolate snippets from our sites to block access to your private Stack Exchange data:

  • We use HTML5 sandboxed iframes in order to prevent many forms of malicious attack.
  • We render the Snippets on an external domain ( in order to ensure that the same-origin policy is not in effect and to keep the snippets from accessing your logged-in session or cookies.

Like all other aspects of our site, Stack Snippets are ultimately governed by the community. Because users can still write code that creates annoying behaviors like infinite loops or pop-ups, we disable snippets on any post that is heavily downvoted (scoring less than -3 on Stack Overflow, -8 on Meta). If you see bad code that you think should be disabled, downvote the post. If you see code that is intended to be harmful (such as an attempt at phishing), you should flag it for moderator attention.

What About Other Languages?

Our initial release supports HTML, CSS, and JavaScript because questions on these topics use external code hosting sites the most frequently. These languages also run client-side in the user’s browser, making them self-contained and easy to support. Server-side languages are much more complicated and require significant infrastructure changes in order to properly implement. We don’t have any specific plans at this time to implement other languages, but it’s something we might consider in the future.

What About Sites Like JSFiddle?

You can still use sites like JSFiddle if you prefer them. JSFiddle and similar sites still have a bunch of features that we have not implemented yet. The normal rules for a link still apply: make sure you copy the relevant code into your question or answer so that it can be accessed if the external site is unavailable.

We decided to implement our own version instead of embedding a third-party site for the reasons mentioned earlier:

  • There’s no need to copy-paste the code into the post. It’s all embedded in the post automatically, so revision history and diffs just work.
  • There’s no need to visit another site to get your answer. The best experience is one where your question and answer(s) are complete and on the same page.
  • Since we host it, we can guarantee performance and up-time. We have high standards when it comes to performance and up-time, and want to make sure that the ability to run a snippet is always available.

Give Stack Snippets A Try

We’re excited to see how the community uses Stack Snippets, and looking forward to your feedback:

  • If you find bugs, or you’d like to give specific feedback on Stack Snippets, you can post on Meta Stack Exchange using the tag stack-snippets.
  • If you just want to try it out, we’ve created a sandbox on Meta Stack Exchange.
  • If you feel that a particular site should have Stack Snippets, post a feature-request on that site’s meta – if there’s support from the community there, we’ll enable them.

We’ve already started piloting it on Code Review and are seeing some neat results. Don’t hesitate to share interesting examples you come across – or create – here in the comments.

Have fun!