




if (typeof(disqus_iframe_css) == 'undefined') {
	disqus_iframe_css = '';
}
if (typeof(disqus_def_name) == 'undefined') {
	disqus_def_name = '';
}
if (typeof(disqus_def_email) == 'undefined') {
	disqus_def_email = '';
}
if (typeof(disqus_skip_auth) == 'undefined') {
	disqus_skip_auth = false;
}
if (typeof(disqus_default_text) == 'undefined') {
	disqus_default_text = 'Type your comment here.';
}

(function(){
	
	var ie = document.uniqueID
		&& document.compatMode
		&& !window.XMLHttpRequest
		&& document.execCommand ;

	try {
		if(!!ie) {
			document.execCommand("BackgroundImageCache", false, true);
		}
	} catch(e) {};
})();

var Dsq = new function() {
	this.container = document.getElementById('dsq-content');
	this.jsonData = {"reactions": [], "has_more_reactions": false, "users": {"f61190ed8c2750ed799d00b2c7602756": {"username": "sam", "tumblr": "", "display_name": "sam", "url": "http://disqus.com/guest/f61190ed8c2750ed799d00b2c7602756/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "87eda257b7c5b47f249728d387295246": {"username": "Cody", "tumblr": "", "display_name": "Cody", "url": "http://disqus.com/guest/87eda257b7c5b47f249728d387295246/", "registered": false, "linkedin": "", "blog": "http://www.cypherxero.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "f620f4647fb816073c9152a284245e64": {"username": "Booger", "tumblr": "", "display_name": "Booger", "url": "http://disqus.com/guest/f620f4647fb816073c9152a284245e64/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "5592612ebf8d076d37ade21c099b2152": {"username": "Ken", "tumblr": "", "display_name": "Ken", "url": "http://disqus.com/guest/5592612ebf8d076d37ade21c099b2152/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "844db5e761eb9626db9f108e72c83793": {"username": "Simo", "tumblr": "", "display_name": "Simo", "url": "http://disqus.com/guest/844db5e761eb9626db9f108e72c83793/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "d00ea036111227788e9a1bfc15d1cb62": {"username": "OS11", "tumblr": "", "display_name": "OS11", "url": "http://disqus.com/guest/d00ea036111227788e9a1bfc15d1cb62/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "91a6d5aea5dce5c8364f8d6d17032a23": {"username": "Cider", "tumblr": "", "display_name": "Cider", "url": "http://disqus.com/guest/91a6d5aea5dce5c8364f8d6d17032a23/", "registered": false, "linkedin": "", "blog": "http://in-cider.spaces.msn.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "3553f5e0db0fd1ec4e40a932a2d8f5b3": {"username": "Robert Scoble", "tumblr": "", "display_name": "Robert Scoble", "url": "http://disqus.com/guest/3553f5e0db0fd1ec4e40a932a2d8f5b3/", "registered": false, "linkedin": "", "blog": "http://scobleizer.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/4069/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "4c88cd2e96fdd0ee4661c1c127b4770e": {"username": "Jared Smith", "tumblr": "", "display_name": "Jared Smith", "url": "http://disqus.com/guest/4c88cd2e96fdd0ee4661c1c127b4770e/", "registered": false, "linkedin": "", "blog": "http://ordinaryworldz.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "1efe17fdbe3f4c0b1237606388ed1a0c": {"username": "Brian Shapiro", "tumblr": "", "display_name": "Brian Shapiro", "url": "http://disqus.com/guest/1efe17fdbe3f4c0b1237606388ed1a0c/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "f9c4cad87c2acf37ef6e5398b05cb171": {"username": "Ahsan", "tumblr": "", "display_name": "Ahsan", "url": "http://disqus.com/guest/f9c4cad87c2acf37ef6e5398b05cb171/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "14f89ec6dc2aad3658d47eb45723fbfa": {"username": "Deepak", "tumblr": "", "display_name": "Deepak", "url": "http://disqus.com/guest/14f89ec6dc2aad3658d47eb45723fbfa/", "registered": false, "linkedin": "", "blog": "http://mndoci.com/blog", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/10764/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "9b646ff3eeda1f01cc2b1cb86d1634f9": {"username": "paul", "tumblr": "", "display_name": "paul", "url": "http://disqus.com/guest/9b646ff3eeda1f01cc2b1cb86d1634f9/", "registered": false, "linkedin": "", "blog": "http://dotnetjunkies.com/WebLog/paul/default.aspx", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "b4c15007f7d16c7c6db1c9e1cd7ef381": {"username": "Chris", "tumblr": "", "display_name": "Chris", "url": "http://disqus.com/guest/b4c15007f7d16c7c6db1c9e1cd7ef381/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "656056ac7ffbc97b499c02df119e2bab": {"username": "Tim", "tumblr": "", "display_name": "Tim", "url": "http://disqus.com/guest/656056ac7ffbc97b499c02df119e2bab/", "registered": false, "linkedin": "", "blog": "http://www.guyswithtowels.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "66f2c05667ce6a07ec5a048423bd4683": {"username": "James Halpern", "tumblr": "", "display_name": "James Halpern", "url": "http://disqus.com/guest/66f2c05667ce6a07ec5a048423bd4683/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "8d5979cc80de286a060d5ebdd0d479ef": {"username": "Reality Lives Here", "tumblr": "", "display_name": "Reality Lives Here", "url": "http://disqus.com/guest/8d5979cc80de286a060d5ebdd0d479ef/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "bc8e528b9bac701e8cb84c3f0c34b992": {"username": "Cybereer", "tumblr": "", "display_name": "Cybereer", "url": "http://disqus.com/guest/bc8e528b9bac701e8cb84c3f0c34b992/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "be71fa3c3cb504b76afdab5c53a2af10": {"username": "Andrew Fife", "tumblr": "", "display_name": "Andrew Fife", "url": "http://disqus.com/guest/be71fa3c3cb504b76afdab5c53a2af10/", "registered": false, "linkedin": "", "blog": "http://andrewbfife.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "f89b745cb3983fb1c02bca74a4f6d077": {"username": "Francine Hardaway", "tumblr": "", "display_name": "Francine Hardaway", "url": "http://disqus.com/guest/f89b745cb3983fb1c02bca74a4f6d077/", "registered": false, "linkedin": "", "blog": "http://blog.stealthmode.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/13604/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "cab1041ab2de14f71e070c15f8ae968e": {"username": "Christopher Coulter", "tumblr": "", "display_name": "Christopher Coulter", "url": "http://disqus.com/guest/cab1041ab2de14f71e070c15f8ae968e/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "6d4d24b12c84be6eecddf121bc3fee48": {"username": "John Koetsier", "tumblr": "", "display_name": "John Koetsier", "url": "http://disqus.com/guest/6d4d24b12c84be6eecddf121bc3fee48/", "registered": false, "linkedin": "", "blog": "http://sparkplug9.com/bizhack/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/163/6598/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "254e55cf40eefad4bd622b5f24469062": {"username": "Jamie", "tumblr": "", "display_name": "Jamie", "url": "http://disqus.com/guest/254e55cf40eefad4bd622b5f24469062/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "26493d7270fb206c1e08599674e51e5a": {"username": "LayZ", "tumblr": "", "display_name": "LayZ", "url": "http://disqus.com/guest/26493d7270fb206c1e08599674e51e5a/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "9cb8ed0d13763dcbe9a5f671d9c77dcf": {"username": "ChrisMc", "tumblr": "", "display_name": "ChrisMc", "url": "http://disqus.com/guest/9cb8ed0d13763dcbe9a5f671d9c77dcf/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "a03a80ab17b93670d40d93c92ceb4cdd": {"username": "Neal", "tumblr": "", "display_name": "Neal", "url": "http://disqus.com/guest/a03a80ab17b93670d40d93c92ceb4cdd/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "90a54836373c3d2498080859d2ee5a18": {"username": "tom", "tumblr": "", "display_name": "tom", "url": "http://disqus.com/guest/90a54836373c3d2498080859d2ee5a18/", "registered": false, "linkedin": "", "blog": "http://ichbineinberliner.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "422187df3c45655b0dc2ae5de0710b27": {"username": "John C. Welch", "tumblr": "", "display_name": "John C. Welch", "url": "http://disqus.com/guest/422187df3c45655b0dc2ae5de0710b27/", "registered": false, "linkedin": "", "blog": "http://www.bynkii.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "2dd0721e184c2cb201baf6ebfd6de11d": {"username": "Farhan", "tumblr": "", "display_name": "Farhan", "url": "http://disqus.com/guest/2dd0721e184c2cb201baf6ebfd6de11d/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "15ceeef84bcec075e2dc57c844b8dbcf": {"username": "Michiel", "tumblr": "", "display_name": "Michiel", "url": "http://disqus.com/guest/15ceeef84bcec075e2dc57c844b8dbcf/", "registered": false, "linkedin": "", "blog": "http://acidzebra.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "5d21d62d95d18914fa9edd9ff888fb8c": {"username": "solomonrex", "tumblr": "", "display_name": "solomonrex", "url": "http://disqus.com/guest/5d21d62d95d18914fa9edd9ff888fb8c/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "bcd0903b5ff543849b5b7cbb4ac448a8": {"username": "Pradeep", "tumblr": "", "display_name": "Pradeep", "url": "http://disqus.com/guest/bcd0903b5ff543849b5b7cbb4ac448a8/", "registered": false, "linkedin": "", "blog": "http://yata.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "041df34bb32de260b772c8ae71541a88": {"username": "Wesley Parish", "tumblr": "", "display_name": "Wesley Parish", "url": "http://disqus.com/guest/041df34bb32de260b772c8ae71541a88/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "e3432acdf7dc1d0216266e9fe88a7804": {"username": "Todd Blanchard", "tumblr": "", "display_name": "Todd Blanchard", "url": "http://disqus.com/guest/e3432acdf7dc1d0216266e9fe88a7804/", "registered": false, "linkedin": "", "blog": "http://www.blackbagops.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "d7c7c2b27980b56ba67f86b0224f8ef4": {"username": "Barrington", "tumblr": "", "display_name": "Barrington", "url": "http://disqus.com/guest/d7c7c2b27980b56ba67f86b0224f8ef4/", "registered": false, "linkedin": "", "blog": "http://www.bazzler.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "9d517523757437142d5cf847cca636b6": {"username": "Diegoz", "tumblr": "", "display_name": "Diegoz", "url": "http://disqus.com/guest/9d517523757437142d5cf847cca636b6/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "df679bd3d287a21d5ed6020bae384e17": {"username": "Diego Barros", "tumblr": "", "display_name": "Diego Barros", "url": "http://disqus.com/guest/df679bd3d287a21d5ed6020bae384e17/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "03fe2b26b2fad0bf93e2d9d39e1b3b3c": {"username": "Alijah Green", "tumblr": "", "display_name": "Alijah Green", "url": "http://disqus.com/guest/03fe2b26b2fad0bf93e2d9d39e1b3b3c/", "registered": false, "linkedin": "", "blog": "http://www.alijahgreen.spaces.msn.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "46577b7e0e07307ca1ab1d634fc84809": {"username": "Brett Thomason", "tumblr": "", "display_name": "Brett Thomason", "url": "http://disqus.com/guest/46577b7e0e07307ca1ab1d634fc84809/", "registered": false, "linkedin": "", "blog": "http://bthomason.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "67ddf598c32d0ae929852af89fa4b272": {"username": "Karim", "tumblr": "", "display_name": "Karim", "url": "http://disqus.com/guest/67ddf598c32d0ae929852af89fa4b272/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "3aeb85796d88e54daedf94e769fda691": {"username": "Goebbels", "tumblr": "", "display_name": "Goebbels", "url": "http://disqus.com/guest/3aeb85796d88e54daedf94e769fda691/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "926dc48ec003ba967ef46904fc6d64f1": {"username": "blegh", "tumblr": "", "display_name": "blegh", "url": "http://disqus.com/guest/926dc48ec003ba967ef46904fc6d64f1/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "8a84e895c150cc6e2d067054d41fd45d": {"username": "Mark Reinhold", "tumblr": "", "display_name": "Mark Reinhold", "url": "http://disqus.com/guest/8a84e895c150cc6e2d067054d41fd45d/", "registered": false, "linkedin": "", "blog": "http://markr.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "macbeach": {"username": "macbeach", "tumblr": "", "display_name": "macbeach", "url": "http://disqus.com/macbeach/", "registered": true, "linkedin": "", "blog": "http://blog.macb.net", "remote_domain": null, "points": 4, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/130/4404/avatar92.jpg", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}}, "forum": {"use_media": true, "name": "Scobleizer", "streaming_realtime": true, "url": "scobleizer", "allow_anon_post": true, "reactions_enabled": true, "reply_position": 1, "show_avatar": true, "allow_anon_votes": false, "disqus_auth_disabled": false}, "realtime_enabled": true, "request": {"username": "", "is_global_moderator": false, "sharing": {}, "sort": 4, "forum": "scobleizer", "is_initial_load": true, "is_authenticated": false, "timestamp": "2009-12-17_10:09:23", "remote_domain": "", "page": 1, "is_moderator": false, "display_username": "", "points": null, "subscribe_on_post": 2, "moderator_can_edit": false, "is_remote": false, "is_verified": false, "missing_perm": "locked"}, "realtime_paused": false, "posts": {"9647744": {"up_voted": false, "ip": "", "has_replies": false, "message": "Barrington: &gt;Please , please , please stop dropping WWDC hints.<br><br>I'd tell you more if Apple didn't demonstrate it is willing to sue bloggers to find out how they found out that secret information. Apple enjoys this anyway. It's hype. It'll get you to watch the news stream coming from the WWDC.<br><br>Jared: &gt;When a entire team fails on a NFL Team it\u2019s the coach that gets the blame.<br><br>Yup, I understand that and there is lots of blame coming to the coaches too. But I'd rather fight the mob tendencies. Even where the coach gets blamed, the team shares some of the blame too. And, what happens when the new coach comes in? A house cleaning, usually.<br><br>&gt;And what the hell is so bad about thinking like an engineer? Great engineering is why people like BMW.<br><br>Absolutely wrong. The fact that you think that way is because of the great marketing. But if you let a car engineer have his or her way without thinking about the customer every car would end up like a Ferrari or a Porsche. Funny joke: \"what do you get when you ask Porsche customers what they want? Answer: a Volvo.\"<br><br>John: \"Robert, I\u2019ve done user support for:\"<br><br>Really? You worked at Microsoft on the support lines? I was talking about that. Microsoft is a business. If someone calls the support line they lose money. So, they put lots of annoying things in their products to reduce the numbers of phone calls. Note: I hate them too. But each dialog was put there for a reason with lots of thought.<br><br>Ahsan: Bill Gates now agrees with you. The reason Longhorn was redone was he put too many features in that were built on too many undone technologies. Boiling the ocean as a software development approach doesn't work at the scale Microsoft was trying to do it.<br><br>Deepak: \"I am a Linux user, but the great thing about OSX was that Apple basically tossed out their existing OS model and built something completely new. \"<br><br>Yeah, and Apple really pissed off its existing customer base who had to wait years to get QuarkXpress done.<br><br>And what did it take to get Apple to that point? A falling marketshare that was headed into obscurity. You do remember the \"Pray\" headline on BusinessWeek's covers to Apple faithful, right? Microsoft isn't being pushed into such desperate measures. To do what Apple did would kill Microsoft. I'd short it big time. Why? Cause Microsoft has a healthy customer base (its sales and profits are continuing to go up, even with the attack of Linux and Apple stuff).<br><br>Rewriting the OS would be a disaster. Why? Cause the C and Assembler bit heads who built Windows don't work at Microsoft anymore. What, you want your OS to be rewritten in .NET? Yeah, that'll really be performant.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_13:54:52", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647745": {"up_voted": false, "ip": "", "has_replies": false, "message": "Common SCOBY, tell me what WWDC is all about!!!!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:23:22", "killed": false, "user_key": "46577b7e0e07307ca1ab1d634fc84809", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647746": {"up_voted": false, "ip": "", "has_replies": false, "message": "Nothing like discussing a Windows ship date to get people's hackles up. Cody said, in the comments of a previous post, \"Instead of putting in MORE bloat, they need to seriously re-work Windows.\" etc.I agree with Cody, but probably disagree with his definition of bloat. Bloat = \"feature(s) you personaly don't use\". I say, lose the backwards compatability for MSDOS6 applications, Win 1-3.11, Win9x, etc. I'm not planning on needing them in 2010 when Blackcomb might ship.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:20:34", "killed": false, "user_key": "844db5e761eb9626db9f108e72c83793", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647747": {"up_voted": false, "ip": "", "has_replies": false, "message": "Cody:<br><br>If your BSD box can do anything a Windows box can, then why don't you convince 90% of the market to convert? There are good reasons to use BSD and good reasons to use Windows.<br><br>Just because you consider yourself an elitist hacker, doesn't mean the world should go with your opinion.<br><br>Also, the reason why your BSD box is using such little memory is because it is not running a GUI shell. Try loading up Gnome 2.6.x and then look at the stats. Yes, Windows comes with Explorer pre-installed and tightly coupled, and then again, it is for good reason.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:24:09", "killed": false, "user_key": "2dd0721e184c2cb201baf6ebfd6de11d", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647748": {"up_voted": false, "ip": "", "has_replies": false, "message": "Getting rid of bloat in the OS does mean you have to get rid of all the features. Sure, you might have to cut a feature or two from it, but what I mean is to re-work the code and strip away everything that makes it bloated. Why should feature X use 75% CPU power and 40% of RAM when it can use much less?<br><br>And about system resources, my BSD machine is currenly using 8MB of the available 192MB of RAM. My BSD box can do anything and everything Windows can do. Now tell me again why I need 1GB of RAM to use Vista properly.<br><br>You know, you can keep this up all day, but the people that know their shit are going to keep blasting Vista for good reason. It sucks.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_13:35:50", "killed": false, "user_key": "87eda257b7c5b47f249728d387295246", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647750": {"up_voted": false, "ip": "", "has_replies": false, "message": "Cody: stop playing Halo 2. Oh, wait, you're on BSD and can't play.<br><br>And, as for Media Center? You know I'm gonna use your words against you when Apple announces such, right?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:26:01", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647751": {"up_voted": false, "ip": "", "has_replies": false, "message": "I am a marketer and to be honest I think \"more features\" is an engineering mindset (having been on that end as well).  Vista should focus on the correct features, not making it everything for everyone, cause that only fulfils the law of diminishing returns.<br><br>I am a Linux user, but the great thing about OSX was that Apple basically tossed out their existing OS model and built something completely new.  Vista should not be an upgrade on XP, but something completely and not just a clone of OSX either.  The OS world could have used a shot in the arm, which I don't think Vista is going to be.  I could be (hope to be) wrong, since I do use windows, but I signs suggest otherwise.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_13:33:41", "killed": false, "user_key": "14f89ec6dc2aad3658d47eb45723fbfa", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647752": {"up_voted": false, "ip": "", "has_replies": false, "message": "&gt;not by sociopaths like Cody<br><br>Yes, because I'm the only one that's giving real criticism for Windows Vista.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_15:32:24", "killed": false, "user_key": "87eda257b7c5b47f249728d387295246", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647753": {"up_voted": false, "ip": "", "has_replies": false, "message": "There's nothing convincing about Windows Vista anyways. Ooohhh, so there's a Media Center, and *gasp* shitty Voice Recognition! Wow! Ugh.<br><br>It's always good to know your next OS is going to ship with shit you don't care about and use up all your resources for it. Thanks, Microsoft.<br><br>I love 100% CPU usage from my OS! *walks away in disgust*", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:17:38", "killed": false, "user_key": "87eda257b7c5b47f249728d387295246", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647754": {"up_voted": false, "ip": "", "has_replies": false, "message": "Barrington, Robert habitually does this. It's his way of \"keeping a secret\". If you imagine a little kid running around going \"I know something you don't know and I'm not going to teeeeeeeeeel\" while sticking his tongue out, that's Robert with a secret.<br><br>Robert, no one cares who or what you know that you can't tell. Stop letting your feelings of technical genital inadequacy get the better of you.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_13:26:07", "killed": false, "user_key": "422187df3c45655b0dc2ae5de0710b27", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647755": {"up_voted": false, "ip": "", "has_replies": false, "message": "I guess a more incremental release towards Vista would have been much better. So XP++ including a better search experience for consumers as well as business. Next internet explorer 7. Then another release with better graphics engine. Parallel release of server with Indigo and all Enterprise stuff. An evolutionary approach would have given the customers much more confidence with different technologies instead of just blasting all these things in their faces and then telling them to wait until sp1 to upgrade.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_13:24:53", "killed": false, "user_key": "f9c4cad87c2acf37ef6e5398b05cb171", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647756": {"up_voted": false, "ip": "", "has_replies": false, "message": "<i>John: \u201cWhen things are working correctly, STFU already. If I have all the drivers to make my USB device work, I don\u2019t need to know that.\u201d<br><br>John, have you ever worked on the customer support lines for Windows? Sorry, many users are NOT like you. I agree with you, by the way, but if I designed an OS for myself it\u2019d have 10% marketshare. Or worse.</i><br><br>Robert, I've done user support for:<br><br>Windows from 3.1 to XP<br>OS/2 from 2.1 to 3.0<br>Every version of the Mac OS<br>AS/400 green screens<br>Solaris 7-9, just learning 10<br>Irix 5.x and 6.x<br>AIX 4.x<br>Too many Linux distros.<br><br>In:<br><br>Small companies, 26- 100 employees<br>medium companies, 100-600 employees<br>Large companies, thousands of employees<br><br>So I'll HAPPILY put MY direct user support experience up against YOURS any day you care to play.<br><br>The biggest complaint(s) I got about Windows, starting with 95 was: \"Why the HELL does it need to continutally bother me? Aren't things SUPPOSED to work right? What is this, a dog wanting a treat for obeying a command? Why do I need to know that my network is up, I'm sending email, DUH. Why do I need 234523523 popups a day. I get more popups from Windows than from Web sites. Why is Windows using a \"porn storm\" as a notification model?<br><br>Ran the gamut of users. Positive notification is dumb. Period. The sheer number of windows' notification dialogs, bubbles, and wizards is stupid. Do I REALLY need to see a blow by blow of a successful driver install? No. Just fire up the damned driver and let me work.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_13:24:13", "killed": false, "user_key": "422187df3c45655b0dc2ae5de0710b27", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647757": {"up_voted": false, "ip": "", "has_replies": false, "message": "When a entire team fails on a NFL Team it's the coach that gets the blame. With Office and Vista the flagship products of Microsoft continually being pushed back there is no one else to blame but management, regardless of poor performance by the employees. - Too many sports analogy's", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_13:20:37", "killed": false, "user_key": "4c88cd2e96fdd0ee4661c1c127b4770e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647758": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"Customers\" don't want spyware or viruses but Microsoft doesn't care enough to actually usher in policies that make spyware impossible in the first place, eliminating the need for constant security updates.<br><br>I don't give a shit what \"customers\" want (they certainly don't care what I want); I care about what _I_ want, and I want a decent text editor (better than Notepad) that can handle Unix linebreaks and Unicode; I want development and scripting tools bundled in; I want a command line that doesn't suck; I want a web browser that's extensible and that has excellent support for standards; I want an operating system that does not assume I pirated it until I can prove, repeatedly, otherwise. I do not want my web browser to be neglected for years just because Microsoft incorrectly determines it doesn't need to be updated and I do not want to be placed in double jeopardy every time I reinstall or make a major upgrade to my computer.<br><br>And what the hell is so bad about thinking like an engineer? Great engineering is why people like BMW.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_13:21:01", "killed": false, "user_key": "926dc48ec003ba967ef46904fc6d64f1", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647759": {"up_voted": false, "ip": "", "has_replies": false, "message": "Deepak: I agree with you, and so does Bill Gates and others. The problem is that they bit off too much at the beginning of Vista. Even today the app compat story is gonna be pretty bad because they turned off administrator as default (for security reasons, which is the right thing to do, but it'll break a lot of software out there that relied on having administrator permissions).", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:13:14", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647760": {"up_voted": false, "ip": "", "has_replies": false, "message": "Nerd patrol citation: The \"Pray\" cover was on Wired Magazine, not BusinessWeek.<br><br>You are seriously setting my expectations high for the WWDC with these hints. Most of the buzz I've heard has been about the iPhone, and since the latest iPod/iTunes update makes reference to a phone in hidden preference strings, it's a credible rumor.<br><br>But the way I read your latest hints, I'm anticipating something like a tablet.<br><br>Maybe they'll announce BOTH!<br><br>I wish I had a brother who worked at Apple.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:13:55", "killed": false, "user_key": "f61190ed8c2750ed799d00b2c7602756", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647761": {"up_voted": false, "ip": "", "has_replies": false, "message": "Please , please , please stop dropping WWDC hints - its hard enough for a poor Macolyte (like myself) waiting for Mr Jobs keynote without a respected journalist implying all manner of  Leopard virtualisation and media centre goodness!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_13:08:16", "killed": false, "user_key": "d7c7c2b27980b56ba67f86b0224f8ef4", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647762": {"up_voted": false, "ip": "", "has_replies": false, "message": "Like fine wine it takes time....I've been a beta tester all along and there are hints of greatness but I still rely on XP....", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_12:56:27", "killed": false, "user_key": "9b646ff3eeda1f01cc2b1cb86d1634f9", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647763": {"up_voted": false, "ip": "", "has_replies": false, "message": "MacBeach: the core of Longhorn was never going to be totally rewritten, even before the redesign.<br><br>Certainly not in .NET. The fact that you think you can write the kernel in ANY high-level language demonstrates you have never been close to an OS development team.<br><br>The parts that were up for rewriting were much higher up the stack like pieces of the UI stack and the search engines and such.<br><br>.NET was scrapped for those because .NET wasn't ready and they wanted to remove intra-team dependencies to help it ship.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_15:28:19", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647764": {"up_voted": false, "ip": "", "has_replies": false, "message": "Scoble - Anyone who says they can accurately predict when software will be ready is a liar. If you expect accurate ship dates in the software industry you\u2019ll constantly go unsatisfied.<br><br><br>Alijah - THE AVERGE PERSON DOESN\u2019T EVEN KNOW ABOUT A NEW OPERATING SYSTEM FROM MICROSOFT THEIR HAS NOT BEEN ANY MARKETING YET, SO IF YOU DON\u2019T KNOW ABOUT IT HOW WOULD THEY (AVERGE CONSUMER) REMEMBER A SLIP ANYWAY. MORE SUPPORT FROM THE GEEKS OUT THERE. YOU GUYS REMIND ME OF A BUNCH OF B____!!. THANK GOD SCOBLE STILL CARES.<br><br>These comments make me think you guys think Vista is 6 months late or even a year late. Vista is LATE!!! I can understand software can be late but this is getting ridiculous", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:07:02", "killed": false, "user_key": "4c88cd2e96fdd0ee4661c1c127b4770e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647765": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert, but the proof of the pudding lies in the eating, doesn't it.  One has to have confidence in the product.  If Apple had continued down the path with OS9 etc, then they really would be a purely iPod company.  Yes there were people who were mad (I know some of them).  The reason so many people are using powerbooks today (apart from the cool factor) is the OS.  With the switch to intel, they took another risk (I am not sure its going to pan out, but that's another thread).  Microsoft has to take calculated risks (I admit its too late for Vista at this point).  If it continues along its current path, as the OS becomes less of a focal point, the user experience will become critical. A few years ago, who would have thought that a number of people at leading biotech or software companies (just to use Google as an example) would be using a Mac at work.<br><br>The point is that by taking risks Apple has resurrected itself from the mess it was in around 10 years ago.  Microsoft should not rest on the safety net of its market share.  Consumers are hoping to see some risk taking and something fresh.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:10:59", "killed": false, "user_key": "14f89ec6dc2aad3658d47eb45723fbfa", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647766": {"up_voted": false, "ip": "", "has_replies": false, "message": "One thing I fail to understand about this whole MS Windows Vista/LongHorn saga, and of course the whole MS Windows Legacy albatross-around-the-neck-thereof, is why Microsoft, being world-famous in Redmond for \"innovation\" (RT[F]M), hasn't done anything with virtual machines and emulation to solve its \"can only run as administrator\" albatross.<br><br>(Of course, that leads on to the deep and meaningful question of why Microsoft's application certification is so stuffed-up that as long as a program runs on MS Windows, it gets the certification, even if it poses a major security risk?  But let's leave that to another day, shall we?)<br><br>In Linux I can run anything that demands super-administrator rights in a UML - User-Mode Linux.  To suggest that Microsoft can do the same with its Windows Vista is to suggest that Microsoft is incompetent.<br><br>That could well be the truth.  Who knows?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-08_00:56:23", "killed": false, "user_key": "041df34bb32de260b772c8ae71541a88", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647767": {"up_voted": false, "ip": "", "has_replies": false, "message": "Oops - \"To suggest that Microsoft can do the same with its Windows Vista is to suggest that Microsoft is incompetent.\"<br><br>should read \"To suggest that Microsoft can't do the same with its Windows Vista is to suggest that Microsoft is incompetent.\"<br><br>My bad.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-08_00:57:49", "killed": false, "user_key": "041df34bb32de260b772c8ae71541a88", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647693": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"I heard howls from Apple users who had software that didn\u2019t work on OSX, and there is relatively little software that runs on OSX.\"<br><br>Carbon is the old Mac Classic api with a few dangerous calls removed.  It takes a minor update to move a Classic app to Carbon.  Quicken is an example of an app that did this.  Appleworks.  Photoshop.  All written to old apis supported through the Carbon compatibility layer.<br><br>New apps are on Cocoa.  Many are ports of Next apps.<br><br>Plus, we now have the entire unix library available thanks to the X11 layer.  Macs run more software than pretty much everything through being API inclusive.<br><br>Windows is API exclusive.  Surely you get that?<br><br>Also, Ballmer admits his error today.<br><a href=\"http://www.crn.com/sections/breakingnews/dailyarchives.jhtml;jsessionid=ZEQ0I0LMYJC1MQSNDLPCKHSCJUNN2JVN?articleId=191600739\" rel=\"nofollow\">http://www.crn.com/sections/breakingnews/dailya...</a><br><br>Nothing new.  Most experienced developers know that Big Bang development doesn't work well.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-02_16:31:04", "killed": false, "user_key": "e3432acdf7dc1d0216266e9fe88a7804", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647694": {"up_voted": false, "ip": "", "has_replies": false, "message": "Sorry people.... Vista is a pathetic imitation (several years in delay) of the best OS around... Mac OS X ... my brother is testing a b. version of vista... all new (and very beta) features are old for mac user... advanced and lightfast search engine, advanced gui, widget etc... look at this video (<a href=\"http://video.google.it/videoplay?docid=7919991136779006253&amp;q=vista\" rel=\"nofollow\">http://video.google.it/videoplay?docid=79199911...</a>) or this one (<a href=\"http://video.google.it/videoplay?docid=2674791799339834706&amp;q=vista\" rel=\"nofollow\">http://video.google.it/videoplay?docid=26747917...</a>) .... poor people with a very poor os system.....", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-02_19:08:08", "killed": false, "user_key": "9d517523757437142d5cf847cca636b6", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647695": {"up_voted": false, "ip": "", "has_replies": false, "message": "<i>Carbon is the old Mac Classic api with a few dangerous calls removed. It takes a minor update to move a Classic app to Carbon. Quicken is an example of an app that did this. Appleworks. Photoshop. All written to old apis supported through the Carbon compatibility layer.</i><br><br>If you believe that, i have oceanfront property in Missouri for you. Nice view of the Eiffel Tower. Getting it to initially compile and build may be *relatively*  simple. Getting an OS 9 codebase moved over, built correctly, the UI redesigned correctly, etc., yadda was NOT simple. At all.<br><br><i>New apps are on Cocoa. Many are ports of Next apps.</i><br><br>No, the Next ports are rather small in number. Most new applications are just that, new applications.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-03_13:14:20", "killed": false, "user_key": "422187df3c45655b0dc2ae5de0710b27", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647696": {"up_voted": false, "ip": "", "has_replies": false, "message": "70, Robert, so let me see if I have this straight. Are you saying it took 6 months for the issue you are seeing to surface?  Are you running the same builds of Vista that you ran when you left MS?  Are you running a later build than the one you were speaking so highly of in March?  If so, then it seems the builds are getting worse, not better.<br><br>I find it a bit incredible to believe you've changed your usage patterns such that these issues would start to surface now and not in April, May, June, or July.  Why are they suddenly seeming to surface AFTER you left MS?  Inquiring minds want to know.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-02_14:51:59", "killed": false, "user_key": "26493d7270fb206c1e08599674e51e5a", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647697": {"up_voted": false, "ip": "", "has_replies": false, "message": "The biggest and best thing Microsoft can do to make Vista better is make it refuse to run AT ALL on underpowered, underRAMed machines.  No more PC makers selling PCs running Windows on 1/4 to 1/8 the amount of memory that's needed for it to be usable.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-02_13:51:09", "killed": false, "user_key": "a03a80ab17b93670d40d93c92ceb4cdd", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647698": {"up_voted": false, "ip": "", "has_replies": false, "message": "Booger: because it takes a while for problems to show up. Modern OS's are so stable now that they don't crash in the first few minutes like Windows 95 betas did.<br><br>I'm going to go back to Vista as soon as my new computer arrives. Right now I need to do work and not play with beta OS's that work mostly.<br><br>I desperately miss Vista, though, and Office 2007. Can't wait to use them again.<br><br>And all those posts I'll stand behind. They are all accurate. But playing with betas isn't for everyone and shouldn't be done on a production machine that you need to rely on. I also said that.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-02_13:03:25", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647699": {"up_voted": false, "ip": "", "has_replies": false, "message": "Booger, why to take Scoble's challenge and go back and look at what Scoble said about Vista. Brilliant!<br><br>How do you plan to cover your ass now, Robert?  About the only way to get out of it is to either say you were a complete and utter MS shill when you worked for them, or to say later builds of Vista are worse than the older builds you were running.  In which case, that says things are getting worse, not better.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-02_11:47:52", "killed": false, "user_key": "26493d7270fb206c1e08599674e51e5a", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647700": {"up_voted": false, "ip": "", "has_replies": false, "message": "Dude these people who are bashing Vista are just afraid of \"CHANGE\"...reminds me of my 69 year old mom who can't get over using a \"credit card\" to pay for gas!<br><br>Like any software, its new, there will be some kinks to work out, but the progress is something to look forward to. I love the new WMP11, and Vista has lots of promise, so I'm excited for all the changes!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-02_10:32:23", "killed": false, "user_key": "9cb8ed0d13763dcbe9a5f671d9c77dcf", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647701": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert,<br><br>even though I've programmed I wasn't too deep into it, to be able to answer this question well---<br><br>do you think if Microsoft was able to migrate everyone to managed code, that it would be much easier to introduce radical changes to the foundations of the Windows code, because old applications would function based on an object model, which could be maintained, or compensated for ?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-04_23:30:18", "killed": false, "user_key": "1efe17fdbe3f4c0b1237606388ed1a0c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647702": {"up_voted": false, "ip": "", "has_replies": false, "message": "\u201cI heard howls from Apple users who had software that didn\u2019t work on OSX, and there is relatively little software that runs on OSX.\u201d<br><br>A purely laughable comment, there are about 11,000 OS9 or (Classic Apps) and 15,560 OSX Apps, and since OSX runs most every Classic App there are about 26,560 current Apps for Macs today. The software library on OSX is the best in the industry, the quality is stunning!<br><br>And no, Quark Inc. messed up with Xpress, not Apple... but it ran fine in Classic so it was never really an issue.<br><br>Lastly, Mac OS9 was just a stopgap version to bridge over the user from the failed Copland Project. Vista is \"MS's\" Copland Project, so they will end up releasing a major XP Update before Vista appears.<br><br>MS's tried to do too much, provide too much legacy support in Vista, when they should have copied what Apple / Steve did and \"bury\" the old DOS/XP code and start over. OSX is now the leanest, meanest OS there is on the planet, and will overwhelm Vista going forward.<br><br>OSX Leopard on Intel is the next iPod... just watch!<br><br>Monday is going to ROCK the Computing World...<br><br>100's of news stories will be here:<br><br><a href=\"http://www.macsurfer.com/\" rel=\"nofollow\">http://www.macsurfer.com/</a><br><br>The tape/digital delay will be here:<br><br><a href=\"http://www.apple.com/quicktime/qtv/wwdc06/\" rel=\"nofollow\">http://www.apple.com/quicktime/qtv/wwdc06/</a><br><br>Last year's big announcement is here: fun to watch!<br><br><a href=\"http://www.apple.com/quicktime/qtv/wwdc05/\" rel=\"nofollow\">http://www.apple.com/quicktime/qtv/wwdc05/</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-04_19:39:36", "killed": false, "user_key": "d00ea036111227788e9a1bfc15d1cb62", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647703": {"up_voted": false, "ip": "", "has_replies": false, "message": "What's all this about Vista's lack of performance. The team has taken care of it! :)<br><br><a href=\"http://channel9.msdn.com/ShowPost.aspx?PostID=221908#221908\" rel=\"nofollow\">http://channel9.msdn.com/ShowPost.aspx?PostID=2...</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-02_07:19:26", "killed": false, "user_key": "df679bd3d287a21d5ed6020bae384e17", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647704": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert<br><br>Wowsa - you say, \"I went back to XP on my Lenovo Tablet PC because Vista was sluggish and the drivers weren\u2019t reliable). Application compatibility (I\u2019m hearing that many apps are having problems). Driver compat (my Dell computer at Microsoft never worked completely, and a coworker called me a few days ago to ask 'did you ever get the soundcard working?')\"<br><br><br>what's happened? We've had months of the following:<br><br>March 16 2006 \u2013 why vista is better than XP: \u201cMy test? Use Vista for a month then see if you can move back to XP. I am finding it frequently frustrating to move back as I get used to new things in Vista.\u201d<br><br>February 20 2006 \u2013 Penny Arcade wonders why Halo is on Vista: \u201cOn Windows Vista the audio and video continue playing just fine with the same level of stress (on the same hardware). It\u2019s a dramatic example of how much better multimedia will be on Windows Vista.\u201d<br><br>January 22, 2006 \u2013 Why do I need Windows Vista: \u201cSo, today we were arguing out just how good Windows Vista is on an internal mailing list. Someone said \u201cXP is good enough for me.\u201d And I answered back with 15 videos about why I\u2019m moving my life over to Windows Vista.\u201d<br><br>January 2 2006 \u2013 Hell\u2019s weather Report: \u201cwe should get you Windows Vista. I\u2019m running it on a Tablet PC and it\u2019s getting to be pretty interesting. Everyone I\u2019ve shown it to says they are gonna get it.\u201d<br><br>December 26 2005 \u2013 Hope Your Christmas Went Well: \u201cMe too, after switching half of my life over to Windows Vista and Office 12 it\u2019s really hard to go back to XP and Office 2003.\u201d<br><br>If you were concerned about driver support and these other things, why didnt you say it? This is a significant error in omission if you had lingering concerns about something that others had noted about the subject. Should we read comments such as \"switching half my life over to Vista\" differently than we have in the past?  Like you said yourself, \"who will listen to an evangelist who tells you something that you already know isn\u2019t true...\"<br><br>Booger", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-02_04:42:04", "killed": false, "user_key": "f620f4647fb816073c9152a284245e64", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647705": {"up_voted": false, "ip": "", "has_replies": false, "message": "@74. And apparently Sr. V.P. Brian Valentine gets to take the fall for it by getting put on what appears to be the death sentence of \"special projects\" (if one reads between the lines)<br><br><a href=\"http://www.windowsitpro.com/windowspaulthurrott/Article/ArticleID/93002/windowspaulthurrott_93002.html\" rel=\"nofollow\">http://www.windowsitpro.com/windowspaulthurrott...</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-03_02:09:16", "killed": false, "user_key": "26493d7270fb206c1e08599674e51e5a", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647706": {"up_voted": false, "ip": "", "has_replies": false, "message": "no.76: Even though I think Vista will tank I will use it because the alternative is to associate with sad sacks like you. No, wait, I'm using linux at home. Nevermind. Sap.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-03_01:09:50", "killed": false, "user_key": "15ceeef84bcec075e2dc57c844b8dbcf", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647707": {"up_voted": false, "ip": "", "has_replies": false, "message": "hi,<br>    I know you can't time a software, coz I have friends who work in a software company and they tell me what it's like. This is their suggestion to let them take it easier.<br>   A simultaneous team develops the next generation software while you release. So, when MS is releasing its Vista, another team can be working on the next version of Vista.A team of, say, maybe 10 members working out what the next package should have and put in the basic codes that's the basis of all Windows systems. Then you get the other coders (or atleast most of them) to work on it while you're shipping Vista. After you've finished say 90% of the job. You put a shipping date 6 months away.You meet the targets.<br><br> I know it'll not be so easy in implementation. Coz my friends are just talking from the employee point of view and not the overall development. But, can the software industry work like that??", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-02_00:23:17", "killed": false, "user_key": "bcd0903b5ff543849b5b7cbb4ac448a8", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647708": {"up_voted": false, "ip": "", "has_replies": false, "message": "<i>Reality: I think a Toyota or a Ford that costs less than $20,000 is better engineering than a BMW, by the way. It\u2019s easier to build a great $40,000 car cause you can use the best components. It\u2019s a lot harder to engineer a low-cost one that still is great.</i><br><br>Robert, you keep saying that like it's true. You're confusing good engineering with being able to build a decent cheap car. There's a difference. There's a lot of stuff you get standard for that $40K that you pay extra for on the 20K cars. ABS is STILL an extra cost feature, in spite of the clear evidence that it has no drawbacks and is a fantastic way to reduce injuries and death by reducing accidents.<br><br>Note also that BMW does make $20K cars. The Mini for one.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_23:37:38", "killed": false, "user_key": "422187df3c45655b0dc2ae5de0710b27", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647709": {"up_voted": false, "ip": "", "has_replies": false, "message": "Am I the only one who wants this to be an absolute failure, one that brings the company to its knees?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_22:30:39", "killed": false, "user_key": "5592612ebf8d076d37ade21c099b2152", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647710": {"up_voted": false, "ip": "", "has_replies": false, "message": "&gt;&gt; And the Tablet PC, Speech Recognition, and Media Center stuff that\u2019s in there is WORLDS ahead of Apple.<br><br>What the heck are you talking about?  Every single Mac can understand voice commands since\" 15 years ago, and Apple even shipped a Chinese language kit with impressive voice and handwriting recognition functions in early 1990s, long before Bill Gates started hyping it and the recent Vista \"Dear Aunt\" fiasco.<br><br>I thought you used to be a Mac geek, but obviously that's not the case.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_22:16:59", "killed": false, "user_key": "bc8e528b9bac701e8cb84c3f0c34b992", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647711": {"up_voted": false, "ip": "", "has_replies": false, "message": "Scoble, what the hell? In this post, you wrote:<br><br>\"I don\u2019t want to see blogs that, when it finally ships, says 'wait for the service pack.'\"<br><br>And a few posts below this one, you wrote:<br><br>\"I will recommend not installing it and waiting for the first service pack.\"<br><br>You should be hating your blog right about now then...", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_21:06:02", "killed": false, "user_key": "87eda257b7c5b47f249728d387295246", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647712": {"up_voted": false, "ip": "", "has_replies": false, "message": "Cody: it's clear to me.<br><br>If it ships in October, wait for the service pack.<br><br>I hope not to have to tell you that. I hope it slips and they put out an awesome product that you WON'T need to wait for the service pack for.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_21:13:53", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647713": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"And what the hell is so bad about thinking like an engineer? Great engineering is why people like BMW. \"<br><br>Which is also why BMWs are a niche market.  If BMW was gunning for 95% or the market, it'd be hello Honda and Toyota clone.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_18:28:58", "killed": false, "user_key": "8d5979cc80de286a060d5ebdd0d479ef", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647714": {"up_voted": false, "ip": "", "has_replies": false, "message": "Microsoft's biggest problem? It can't say no. The requirements for Vista are horrid. We all know that Vista could run on a 700Mhz machine. But that wouldn't sell new computers would it? Some things are slowly getting better over at MSFT; and I guess some things never change. The reason you have WGA built into Vista is because you have a salesman as your CEO. Plain and simple.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_17:29:44", "killed": false, "user_key": "b4c15007f7d16c7c6db1c9e1cd7ef381", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647715": {"up_voted": false, "ip": "", "has_replies": false, "message": "MS can most certainly meet their ship date. If bugs aren't resolved by October then they'll be available through Microsoft Update once Vista is installed on individual machines.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_17:33:24", "killed": false, "user_key": "66f2c05667ce6a07ec5a048423bd4683", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647716": {"up_voted": false, "ip": "", "has_replies": false, "message": "<i>it&#8217;ll be far worse to be remembered for shipping an OS that isn&#8217;t finished</i><br><br>True. But it's already unfinished, no matter what happens, WinFS gone, P2P tech gone, this that, everything halfway cool, that was promised, gone, gone. So even the good (delayed) finished is yet unfinished.<br><br>But not your fight anymore, let it be. ;) It's all just wacking the hornets nest now.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_19:57:05", "killed": false, "user_key": "cab1041ab2de14f71e070c15f8ae968e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647717": {"up_voted": false, "ip": "", "has_replies": false, "message": "The most interesting thing about this article are the Apple hints.<br><br>And im a Microsoft employee!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_19:56:56", "killed": false, "user_key": "254e55cf40eefad4bd622b5f24469062", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647718": {"up_voted": false, "ip": "", "has_replies": false, "message": "<i>I\u2019d tell you more if Apple didn\u2019t demonstrate it is willing to sue bloggers to find out how they found out that secret information. Apple enjoys this anyway. It\u2019s hype. It\u2019ll get you to watch the news stream coming from the WWDC.</i><br><br>What news stream? Apple doesn't do live streams of keynotes anymore, and the rest of the conference is NDA'd. Like I said last year, telling you a secret is riskier than telling a parrot. The parrot MIGHT shut up about it.<br><br><i>John: \u201cRobert, I\u2019ve done user support for:\u201d<br><br>Really? You worked at Microsoft on the support lines? I was talking about that. Microsoft is a business. If someone calls the support line they lose money. So, they put lots of annoying things in their products to reduce the numbers of phone calls. Note: I hate them too. But each dialog was put there for a reason with lots of thought.</i><br><br>No robert, I've not worked for Microsoft, nor have I ever had any real interest in it. I've dealt with enough tottering beauracracy and unfocused mindsets to last me a lifetime. However, what I AM saying is that I've done a crapload more user support over the last 20 years than YOU have, and I can tell you that the \"Why won't windows STFU\" was one of the top 5 complaints I heard. They never bothered calling Microsoft on it, as a) it was annoying, not broken, and b) Microsoft was never going to change this anyway. But if you ever get out of your tech bubble, you'd find that people are FAR more annoyed with Windows than you think.<br><br><i>Yeah, and Apple really pissed off its existing customer base who had to wait years to get QuarkXpress done.</i><br><br>Well, no, actually, they were far more pissed off at Quark. But Classic did work really well, and had Quark not tried to foist Xpress 5.x off on people, their dropping customer share might have not hemmorhaged so badly.<br><br>Adobe however was DELIGHTED with Quark, hence InDesign stomping Quark continuously now. If you think anyone using Xpress was ever happy with that company, you're real confused.<br><br><i>That\u2019s the problem. Not a single customer was asking about those things in the 1980s. They didn\u2019t even know that spyware and viruses were possible. And the engineers didn\u2019t design their software for those uses.</i><br><br>No, but Microsoft also let the marketing dipwads decide that security and reliablity were second to everything else. Hence the lower reliability in NT 4 compared to NT 3.5.1, and the utter, unjustifiable stupidity of not only making the default user *root*, but not even REQUIRING a password. Microsoft built insecurity into NT/2000/XP, and they reaped the rewards of their work.<br><br><i>Todd: really? I heard howls from Apple users who had software that didn\u2019t work on OSX, and there is relatively little software that runs on OSX.</i><br><br>Really? I bet if we both go to SourceForge with stock installs of Mac OS X and Windows, I'll win. Yeah, you keep forgetting all the stuff that's NOT windows that runs on Stock OS X. No Cygwin needed. But nice try.<br><br>It's so nice to see you're still keeping that inner 12 year old handy.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_16:45:23", "killed": false, "user_key": "422187df3c45655b0dc2ae5de0710b27", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647719": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"Certainly not in .NET. The fact that you think you can write the kernel in ANY high-level language demonstrates you have never been close to an OS development team.\"<br><br>You know what they say about people who ASSUME.<br><br>You need to distinguish between \"high level\" code and interpreted code.  Some might consider C high level.  But high level code, no matter what the original language can be optimized.<br><br>Who said anything about kernel code?  Not I.  Is most of Windows implemented in the kernel?   Again, this is news.<br><br>You can mix and match low/high compiled/interpreted code (note: talking two different issues there) all you want as long as code that gets executed a LOT is non-interpreted and has been optimized (by writing it in assembler or using a very good optimizing compiler).<br><br>But even interpreted code isn't necessarily slow.  APL is an interpreted language, but I'd put it's ability to do matrix manipulation up against any average C programmer, because the matrix operation are all \"primitives\" in APL and the matrix work is highly optimized (at least for any commercial version).<br><br>And while we're at it, your comment much earlier about implementing Windows on top of BSD is at best misleading.  The WINE project is an attempt to implement as much of the Widows API as possible on top of another base OS.  This is a reverse-engineering effort, and is far from perfect.  But is was a good enough base to allow Google to port Picassa to Linux relatively quickly.<br><br>Given the actual Windows code (and the rights to use it of course) Microsoft could do a near perfect re-implementation of the Windows user and driver interface just about anywhere they wanted to.<br><br>I don't happen to think that the VMS underpinnings (to the extent that the VMSness hasn't been tweaked out of existence) are the source of Windows flaws (WINE has proven that the flaws port quite well).   On the other hand, there is nothing inherently spectacular about that VMS history.  In fact there is something quite spectacular about your original comment, which I'll re-quote:<br><br>\"Cause the C and Assembler bit heads who built Windows don\u2019t work at Microsoft anymore. \"<br><br>All the more reason to build Windows on top of a base that is still openly maintained by exactly that sort of \"bit-head\".  It is exactly at that level that there is no longer any significant competitive advantage in maintaining proprietary code.  When is that last time you heard a Windows user complain about inadequacies in the Windows HAL (Hardware Abstraction Layer)?  Same issue.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_16:51:04", "killed": false, "user_key": "macbeach", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647720": {"up_voted": false, "ip": "", "has_replies": false, "message": "Let's look at Windows' Vista for a second.<br>Major new features:<br>1. Desktop search is added, like Apple has had, even though there are several completely free 3rd party apps from Google, Yahoo and... MSN.<br>2. A new security model, different from anything the most respected secure OSs use.  It's reported to be extremely annoying and difficult to use with legacy apps.<br>3. A new graphics system is added into Windows, that will sit beside Windows Themes that most people disable that was tacked onto XP as a skin to impress the dimwitted.  Hey, I thought it was pretty neat, too...<br>4. widgets system also offered by Apple for a long time, and offered for free by 3rd parties, AND a drain on resources.  A semi-useful system for little apps, until it becomes a security issue.<br><br>Problems?<br>1. Current issues not fixed by Vista: system tray, notifications in general, focus issues, IE integration, zillion online apps that run in background that won't move to widgetland.<br>2. Simple innovations that MS could corner the market on are being ignored.  Groove, Steam-like games store, online-integration with Calendar/email/etc., Xbox Live community/marketplace equivalent.<br>3. The security in XP is fine, especially since most of us now use a wireless router (most of us do now).  And corporate computers are always locked down.  I'm not sure you can ever stop spyware and phishing on the consumer end, since you have to allow people to download and install apps off the internet.<br><br>MS is treading water.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_16:55:37", "killed": false, "user_key": "5d21d62d95d18914fa9edd9ff888fb8c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647721": {"up_voted": false, "ip": "", "has_replies": false, "message": "Why doesn't Vista chuck compatibility at least for the consumer version?  It seems like the idea is to sell faster hardware, and the virtual software that would run legacy apps (like the original Civ or Starcraft) would certainly need it.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_17:11:33", "killed": false, "user_key": "5d21d62d95d18914fa9edd9ff888fb8c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647722": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"I heard howls from Apple users who had software that didn\u2019t work on OSX, and there is relatively little software that runs on OSX.\"<br><br>There is more software on OSX than on OS9.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_19:23:50", "killed": false, "user_key": "3aeb85796d88e54daedf94e769fda691", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647723": {"up_voted": false, "ip": "", "has_replies": false, "message": "Goebbels: I meant to write that there was very little software on OS9 compared to the amount that runs on Windows. Sorry and thanks for correcting me.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_19:27:35", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647724": {"up_voted": false, "ip": "", "has_replies": false, "message": "I'm confused. First you lambast people for \"thinking like engineers and not like customers\" then you praise the engineers for giving customers something they would never think to ask for,,because, well...they thought like an engineer?  Boy, you are a master at covering your ass.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_16:12:00", "killed": false, "user_key": "26493d7270fb206c1e08599674e51e5a", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647725": {"up_voted": false, "ip": "", "has_replies": false, "message": "this is FUN. I was going to tell Robert to tell us what he really thinks; then I read the replies.<br><br>I like BSD too. I have a BSD machine and XP 64 bit machine and I like them both for different reasons.<br><br>And I like my HD TV. but am waiting for HD DVD machines to come down. I am in the bay area but moving to Costa Rica where they have no army. the wars between OSs is enough now for me.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_16:41:16", "killed": false, "user_key": "8a84e895c150cc6e2d067054d41fd45d", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647726": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hey, Robert, this wouldn't happen to be your brother, would it? :-)<br><br><a href=\"http://secretdiaryofstevejobs.blogspot.com/\" rel=\"nofollow\">http://secretdiaryofstevejobs.blogspot.com/</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_16:33:12", "killed": false, "user_key": "26493d7270fb206c1e08599674e51e5a", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647727": {"up_voted": false, "ip": "", "has_replies": false, "message": "Reality: I think a Toyota or a Ford that costs less than $20,000 is better engineering than a BMW, by the way. It's easier to build a great $40,000 car cause you can use the best components. It's a lot harder to engineer a low-cost one that still is great.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_19:45:37", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647728": {"up_voted": false, "ip": "", "has_replies": false, "message": "Nothing like a real opinion to bring out the sharp knives and hateful comments.<br><br>Scoble, I know that getting a lot of comments that are negative, nasty, and just plain stupid can start to weigh on you sometimes - don't let it.<br><br>Thanks for your blog and for calling 'em as you see 'em.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_15:51:47", "killed": false, "user_key": "6d4d24b12c84be6eecddf121bc3fee48", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647729": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"Rewriting the OS would be a disaster. Why? Cause the C and Assembler bit heads who built Windows don\u2019t work at Microsoft anymore. What, you want your OS to be rewritten in .NET? Yeah, that\u2019ll really be performant.\"<br><br>Huh?  I thought the original plan was to write much of Vista in .net no? (yes, I know they blame some of the delay on failure to get this to work).  But if they are not writing it in .net, and not writing it in C or assembler, then what?  Perl? PHP?  This is really news.  You should make a headline out of it.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:51:53", "killed": false, "user_key": "macbeach", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647730": {"up_voted": false, "ip": "", "has_replies": false, "message": "TomB: \u201cMSFT had a chance to re-work the OS and put it on top of a BSD or a LINUX kernel....\u201d<br><br>Scoble: Sorry, throwing application compatibility out the window would be monumentally STUPID. Stop thinking like an engineer. Start thinking like a customer.<br><br>Actually, they could have tossed the proprietary underpinnings and KEPT application compatibility.  Apple did it with Carbon.  They open sourced the plumbing (darwin) and focused on the application api layer up, adding compatibility apis where necessary.<br><br>Maintaining the core OS can't be cheap, adds no end user value, and gratuitous incompatibility with Unix apis locks out lots of good open source stuff that Mac users are getting for free now.  Better to leverage the open source goodness at the bottom and focus on the visible bits and app level apis.<br><br>It could have been done without loss of app compatibility for existing apps - but it requires the will to do it.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:55:45", "killed": false, "user_key": "e3432acdf7dc1d0216266e9fe88a7804", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647731": {"up_voted": false, "ip": "", "has_replies": false, "message": "Todd: really? I heard howls from Apple users who had software that didn't work on OSX, and there is relatively little software that runs on OSX.<br><br>Changing the underpinings of Windows isn't something done lightly and probably won't happen unless Microsoft goes into deep financial pain which certainly isn't happening this year.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:58:06", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647732": {"up_voted": false, "ip": "", "has_replies": false, "message": "Is this a blog or a high school class? I always read for the information, and when I have to sort through all the invective, it slows me down.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:46:36", "killed": false, "user_key": "f89b745cb3983fb1c02bca74a4f6d077", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647733": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"Actually, they could have tossed the proprietary underpinnings and KEPT application compatibility. Apple did it with Carbon.\"<br><br>And Microsoft did it with NT.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_15:11:36", "killed": false, "user_key": "656056ac7ffbc97b499c02df119e2bab", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647734": {"up_voted": false, "ip": "", "has_replies": false, "message": "Vista is now what it always should have been - an evolutionary step up from XP, as opposed to a revolutionary one.  Much of the best stuff in Vista are things that are steps up from XP - some small such as the new audio stack and tablet functionality baked in, some massive, such as the security and IE 7.  Indeed, virtually no one mentions and no one sees some of the best steps forwards such as WIM and the new network stack.<br><br>Overall, I'm starting to really like it, but think it is still 3-4 months from Gold.  Scoble is right on one thing:  most don't care about the lateness - if it releases relatively bug-free, the response from the everyday folk (ie.  not by sociopaths like Cody) will be very favourable.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_15:21:10", "killed": false, "user_key": "91a6d5aea5dce5c8364f8d6d17032a23", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647735": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"I want an OS that\u2019ll protect me against phishing attacks\"<br><br>OK, yes on the features, as long as I can either turn them off or they are off by default. But Robert, if we are going to have to rely on a machine to protect us against low-level social engineering then all hope is lost. No OS will ever protect against human stupidity.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_15:59:36", "killed": false, "user_key": "15ceeef84bcec075e2dc57c844b8dbcf", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647736": {"up_voted": false, "ip": "", "has_replies": false, "message": "I have a couple of addons to my xp like a burning program for .iso, 'launchy' as my application opener and document retrieval-er, filezilla for ftp and \u00b5torrent for torrents. But if these applications were built in into windows, I'd use the windows applications.<br><br>So, stuff vista with all these things, add some better security, and it is sold to me. I do not care if it uses all my ram, as long as it works without problems. (i agree that the nagging should be less)<br><br>besides, if you are checking your ram usage, i do not think you are the average user...", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_15:00:01", "killed": false, "user_key": "90a54836373c3d2498080859d2ee5a18", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647737": {"up_voted": false, "ip": "", "has_replies": false, "message": "BSD can subtract numbers too!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:42:34", "killed": false, "user_key": "67ddf598c32d0ae929852af89fa4b272", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647738": {"up_voted": false, "ip": "", "has_replies": false, "message": "I don't play Halo anymore, and I've never played Halo 2. You just don't know what OpenBSD can do, and you mock it like all it can do is add numbers together. Which is sad.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:39:22", "killed": false, "user_key": "87eda257b7c5b47f249728d387295246", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647739": {"up_voted": false, "ip": "", "has_replies": false, "message": "Blegh: thank you for agreeing that you weren't right. :-)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:04:22", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647740": {"up_voted": false, "ip": "", "has_replies": false, "message": "Andrew: when a journalist does shoddy journalism someone needs to point that out. I don't want to debate such a person. I want them to be professional.<br><br>Blegh: \u201cCustomers\u201d don\u2019t want spyware or viruses but Microsoft doesn\u2019t care enough to actually usher in policies that make spyware impossible in the first place, eliminating the need for constant security updates.<br><br>That's the problem. Not a single customer was asking about those things in the 1980s. They didn't even know that spyware and viruses were possible. And the engineers didn't design their software for those uses.<br><br>By the way, Windows Vista makes spyware a lot lot lot harder. I won't say impossible, because there aren't absolutes in the security industry, but it's a HUGE step up and one that I can't wait for.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:01:18", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647741": {"up_voted": false, "ip": "", "has_replies": false, "message": "haha, someone took a crap in scoble's cheerios today. good luck being an aggro pissant, dude. later.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_14:01:51", "killed": false, "user_key": "926dc48ec003ba967ef46904fc6d64f1", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647742": {"up_voted": false, "ip": "", "has_replies": false, "message": "Why do you have to \"attack\" anyone?  I believe that one can be critical without attacking.  Using the word \"attack\" to describe your criticism puts people on the defensive, which is counter productive if your goal is to engage them in debate.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_13:57:01", "killed": false, "user_key": "be71fa3c3cb504b76afdab5c53a2af10", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9647743": {"up_voted": false, "ip": "", "has_replies": false, "message": "THE AVERGE PERSON DOESN'T EVEN KNOW ABOUT A NEW OPERATING SYSTEM FROM MICROSOFT THEIR HAS NOT BEEN ANY MARKETING YET,  SO IF YOU DON'T KNOW ABOUT IT HOW WOULD THEY (AVERGE CONSUMER) REMEMBER A SLIP ANYWAY.  MORE SUPPORT FROM THE GEEKS OUT THERE.  YOU GUYS REMIND ME OF A BUNCH OF B____!!. THANK GOD SCOBLE STILL CARES.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-08-01_13:52:41", "killed": false, "user_key": "03fe2b26b2fad0bf93e2d9d39e1b3b3c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}}, "integration": {"receiver_url": "", "theme": 4, "reply_position": true, "disqus_logo": false}, "timer": {"timer_url": "http://localhost:8005", "thread_id": "18447873", "user_id": "anonymous", "forum_id": "125200", "hash": 3062081410362193195}, "thread": {"total_posts": 0, "paginate": false, "per_page": 0, "slug": "looking_at_vista", "num_pages": 1, "days_alive": 0, "realtime_paused": true, "id": 18447873, "num_posts": 74, "closed": true, "queued": false, "killed": false}, "reactions_limit": 10, "context": {"show_reply": false, "use_fb_connect": true, "forum_facebook_key": "faaf467d0f47abde553c3b8e0e1b3570", "use_yahoo": false, "subscribed": false, "use_twitter_signin": true, "use_openid": false, "realtime_speed": 5000}, "reactions_start": 0, "settings": {"debug": false, "disqus_url": "http://disqus.com", "media_url": "http://media.disqus.com"}, "media_url": "http://media.disqus.com"};
	/* */ this.jsonData.cookie_messages = {"user_created": null, "post_has_profile": null, "post_twitter": null, "post_not_approved": null}; this.jsonData.session = {"url": null, "name": null, "email": null}; /* */

	
	this.curPageId = 'dsq-comments';

	this.frames = {};
};

var disqus_popup_reference = null;

if(typeof DsqLocal == 'undefined') {
	DsqLocal = {};
}



/**
 * Dsq.Strings: UI strings
 */
Dsq.Strings = new function() {
	this.ADD_NEW_COMMENT = "Add New Comment";
	this.LOG_INTO_DISQUS = "Log into DISQUS";
	this.USE_MEDIA = "Use Media";
	this.LOGOUT = "Logout";
	this.SHARING_OPTIONS = "Sharing options";
	this.SHARE_ON = "Share on";
	this.TWEET_THIS_COMMENT = "Tweet this comment";
	this.SHARE_ON_NEWSFEED = "Share on news feed";
	this.SEND_UPDATE_TO_YAHOO = "Send update to Yahoo!";
	this.REBLOG_ON = "Reblog on";
	this.CONFIGURE_OPTIONS = "Configure options";
	this.POST_AS = "Post as";
	this.SORT_BY = "Sort by";
	this.SUBSCRIBE_BY_EMAIL = "Subscribe by email";
	this.SUBSCRIBE_BY_RSS = "Subscribe by RSS";
	this.POPULAR_NOW = "Popular now";
	this.BEST_RATING = "Best Rating";
	this.NEWEST_FIRST = "Newest first";
	this.OLDEST_FIRST = "Oldest first";
	this.HIGHLIGHTED = "Highlighted";
	this.UNSUBSCRIBE = "Unsubscribe";
	this.REQUIRED = "Required";
	this.OPTIONAL = "Optional";
	this.YOU_ARE_COMMENTING_AS_A = "You are commenting as a";
	this.LOGIN_BELOW = "Login below";
	this.PLEASE_LOGIN_BELOW_TO_COMMENT = "Please login below to comment.";
	this.SUBSCRIBE_TO_ALL_COMMENTS_BY_EMAIL = "Subscribe to all comments by email";
	this.DO_NOT_SUBSCRIBE_TO_COMMENTS = "Do not subscribe to comments";
	this.REALTIME_UPDATING_IS = "Real-time updating is";
	this.ENABLED = "enabled";
	this.PAUSED = "paused";
	this.PAUSE = "Pause";
	this.RESUME = "Resume";
	this.SHOW = "Show";
	this.JUST_NOW = "Just now";
	this.REPLY = "Reply";
	this.EDIT = "Edit";
	this.FLAG = "Flag";
	this.MODERATE = "Moderate";
	this.CANCEL = "Cancel";
	this.REPLYING_TO = "Replying to";
	this.REPORT_MISSING_REACTIONS = "Report missing reactions";
	this.POST_A_COMMENT = "Post a comment";
	this.FLAG_INAPPROPRIATE_COMMENT = "Flag inappropriate comment";
	this.FLAGGED = "Flagged";
	this.NO = "No";
	this.YES = "Yes";
	this.NEVER_MIND = "Never mind";
	this.ARE_YOU_SURE_YOU_WOULD_LIKE_TO_REPORT_THIS_COMMENT_TO_A_MODERATOR = "Are you sure you would like to report this comment to a moderator";
	this.THIS_WILL_FLAG_COMMENTS_FOR_MODERATORS_TO_TAKE_ACTION = "This will flag comments for moderators to take action";
	this.TO_RATE_PLEASE_LOG_IN = "To rate, please log in";
	this.JUST_A_MOMENT = "Just a moment...";
	this.GUEST = "Guest";
	this.NAME = "Name";
	this.EMAIL = "Email";
  this.WEBSITE = "Website";
  this.SETTINGS = "Settings";
  this.MODERATOR_OPTIONS = "Moderator options: ";
  this.MODERATE_OPTIONS = "Moderate Options";

  // Thread moderator actions
  this.CLOSE_THREAD = "Close thread";
  this.OPEN_THREAD = "Open thread";
  this.REMOVE_THREAD = "Remove thread";
  this.RESTORE_THREAD = "Restore thread";
  this.ACTIONS = "Actions";
};
// Dsq.Strings

/**
 * Dsq.FmtStrings: functions that return interpolated UI strings
 */
Dsq.FmtStrings = new function() {
	// Seems we have to use named interpolation for Django to translate. Investigate more.
	this.LOGGED_IN_AS = function(username) {
		return Dsq.Utils.interpolate('Logged in as %(username)s', {username:username});
	};

	this.LOGOUT_FROM = function(disqus) {
		return Dsq.Utils.interpolate('Logout from %(disqus)s', {disqus:disqus});
	};

	this.SHOWING_COMMENTS_FULL = function(total, num) {
		if (num === 1) {
			return Dsq.Utils.interpolate("Showing <span id='dsq-num-posts'>%(num)s</span> of <span id='dsq-total-posts'>%(total)s</span> comment", {num:num, total:total});
		} else {
			return Dsq.Utils.interpolate("Showing <span id='dsq-num-posts'>%(num)s</span> of <span id='dsq-total-posts'>%(total)s</span> comments", {num:num, total:total});
		}
	};

	this.SHOWING_COMMENTS_WITHOUT_PAGINATION = function(num) {
		if (num === 1) {
			return Dsq.Utils.interpolate("Showing <span id='dsq-num-posts'>%(num)s</span> comment", {num:num});
		} else {
			return Dsq.Utils.interpolate("Showing <span id='dsq-num-posts'>%(num)s</span> comments", {num:num});
		}
	};

	this.NUMBER_OF_COMMENTS = function(num) {
		return Dsq.Utils.interpolate(
			(num == 1
				? '%(num)s comment'
				: '%(num)s comments'
			), {num:num});
	};

	this.NUMBER_OF_LIKES = function(num) {
		return Dsq.Utils.interpolate(
			(num == 1
				? '%(num)s like'
				: '%(num)s likes'
			), {num:num});
	};

	this.NUMBER_OF_POINTS = function(num) {
		return Dsq.Utils.interpolate(
			(num == 1
				? '%(num)s point'
				: '%(num)s points'
			), {num:num});
	};
};
// Dsq.FmtStrings





Dsq.CSRF_TOKEN = 'a2d140c59df8cd4ce27a20e0829cacd8';
Dsq.COMMENTS_RE = /(<li.*?id="?dsq-comment-(\d+)"?.*?>)((?:.|\s)*?)(<\/li>)/gim;
Dsq.POST_RE = /(<div.*?id="?dsq-comment-header-(\d+)"?.*?>)((?:.|\s)*?)(<\/div>)\s*(<div.*?class="?dsq-comment-body"?.*?>)((?:.|\s)*)(<\/div>)/gim;
Dsq.POST_BODY_RE = /\s*(<div.*?id="?dsq-comment-message-(\d+)"?.*?>)((?:.|\s)*)(<\/div>)/gim;
// HACK: Safari ends with "-->" while other browsers end with "--&gt;" as expected.
Dsq.MEDIA_POST_RE = /&lt;!--\[(.*?)\]--(?:>|&gt;)/gim;



var FragmentPacket = function(reader, writer, writer_url, is_child, receiveCallback) {
	var that = this;
	this.reader = reader;
	this.writer = writer;
	this.writer_url = writer_url;

	this.is_child = is_child || false;
	this.receiveCallback = receiveCallback;

	this._lastHash = null;

	this._accumMsg = '';

	this._lastSeqno = 0;

	this.MAX_DATA_LEN	= 1024;

	this.WAIT_TIME		= 10;

	this.READY		= 0x1;
	this.WRITING	= 0x2;
	this.FIN		= 0x4;
	this.ACK		= 0x8;

};

FragmentPacket.prototype.createListener = function() {
	var that = this;
	var listener = function() {
		that.recv();
	};
	return window.setInterval(listener, 10);
};

FragmentPacket.prototype.log = function(msg) {



};

FragmentPacket.prototype.recv = function() {
	var hash;
	if (/MSIE/.test(navigator.userAgent)) {

		hash = this.reader.name;
	} else {

		var hashIndex = this.reader.location.href.indexOf('#');
		if (hashIndex == -1) {
			return;
		}
		hash = this.reader.location.href.substring(hashIndex+1);
	}
	var flags = parseInt(hash.substring(0, 4), 10);
	var seqno = parseInt(hash.substring(4, 24), 10);
	var data  = hash.substring(24);

	if (this._lastHash !== hash) {
		this._lastHash = hash;
		this.log('recv: ' + hash);

		this.log(' flags: ' + flags);
		this.log(' seqno: ' + seqno + ' len: ' + hash.substring(4, 24).length + ' (' + hash.substring(4, 24) + ')');
		this.log(' data: ' + data + ' len: ' + data.length);

		this._lastSeqno = seqno;

		if (flags & this.WRITING) {
			this._accumMsg += data;
			this.sendFlag(this.ACK, seqno);
			if (flags & this.FIN) {
				this.log('recv finished: ' + decodeURIComponent(this._accumMsg));
				this.receiveCallback(decodeURIComponent(this._accumMsg));

				this._accumMsg = '';

				this.sendFlag(this.READY | this.ACK, this._lastSeqno);
			}
		}
	}

	return {
		flags: flags,
		seqno: seqno,
		data: data
	};
};

FragmentPacket.prototype.sendRawPacket = function(packet) {
	if (/MSIE/.test(navigator.userAgent)) {
		this.writer.name = packet;
	} else {

		this.writer.location.href = this.writer_url + '#' + packet;
	}

};

FragmentPacket.prototype.sendFlag = function(flag, seqno) {
	this.sendRawPacket(this._zerofill(flag, 4) + this._zerofill(seqno, 20));
};

FragmentPacket.prototype.send = function(msg) {
	this._send(0, encodeURIComponent(msg));
};

FragmentPacket.prototype._send = function(packetNum, msg) {
	var that = this;
	var recvBuf = this.recv();

	if (packetNum === 0) {

		if (!(recvBuf.flags & this.READY)) {
			this.log('client is not ready, waiting...');
			window.setTimeout(function() { that._send(packetNum, msg); }, this.WAIT_TIME);
			return;
		}
	} else {

		if (!( (recvBuf.flags & this.ACK) && (recvBuf.seqno === this._lastSeqno) )) {
			this.log('waiting for ack from client...');
			window.setTimeout(function() { that._send(packetNum, msg); }, this.WAIT_TIME);
			return;
		} else {
			this.log('received ack: ' + this._lastSeqno + ' ' + recvBuf.seqno);
		}
	}

	var flags = this.WRITING;
	var num_packets = Math.ceil(msg.length / this.MAX_DATA_LEN);
	this.log('num_packets: ' + num_packets);

	if (num_packets === packetNum) {

		this.log('message successfully sent!');
		this.sendFlag(this.READY | this.ACK, this._lastSeqno);
		return true;
	}

	this._lastSeqno++;

	if (packetNum == num_packets-1) {
		flags |= this.FIN;
	}

	var data = msg.substring(packetNum * this.MAX_DATA_LEN, (packetNum+1) * this.MAX_DATA_LEN);
	var packet = this._zerofill(flags, 4) + this._zerofill(this._lastSeqno, 20) + data;

	this.log('sending raw packet: ' + packet);
	this.sendRawPacket(packet);

	return this._send(packetNum + 1, msg);
};

FragmentPacket.prototype._zerofill = function(num, width) {
	var retval = num.toString();
	var retval_len = retval.length;
	for (var i = 0; i < width - retval_len; i++) {
		retval = '0' + retval;
	}
	return retval;
};

var PostMessagePacket = function(receiver, receiveCallback, id, receiverId) {
	var that = this;
	this.receiver = receiver;
	this.receiveCallback = receiveCallback;
	this.id = id;


	this.receiverId = receiverId;
};

PostMessagePacket.prototype.createListener = function() {
	var that = this;

	var listener = function(e) {

		if (!that.id) {
			that.id = e.data;
			return;
		}


		var id = e.data.split(';')[0];
		if (id !== that.id) {
			return;
		}
		var data = e.data.substring(e.data.indexOf(';') + 1);

		that.receiveCallback(data);
	};

	if (typeof window.attachEvent == 'function') {
		window.attachEvent('onmessage', listener);
	} else if (typeof window.addEventListener == 'function') {
		window.addEventListener('message', listener, false);
	} else {
		throw new Error('No method found to create event listener for PostMessagePacket.');
	}
};

PostMessagePacket.prototype.send = function(msg) {



	var needs_reget = false;
	try {
		if (typeof this.receiver.id == 'undefined' || typeof this.receiver.postMessage == 'undefined') {
			needs_reget = true;
		}
	} catch(e) {


	}
	if (needs_reget && typeof this.receiverId != 'undefined') {
		this.receiver = document.getElementById(this.receiverId).contentWindow;
	}

	var packet;
	if (!msg) {

		packet = this.id;
	} else {
		packet = this.id + ';' + msg;
	}
	this.receiver.postMessage(packet, '*');
};

PostMessagePacket._last_unique_id = null;
PostMessagePacket._get_unique_id = function() {
	var id = (new Date()).getTime();
	if (id == PostMessagePacket._last_unique_id) {
		id++;
	}
	PostMessagePacket._last_unique_id = id;
	return id.toString();
};

var JsonRpc = function() {

	this.ids = {};

	this.objectToJSON = function(obj) {
		var json = '';
		var results = [];

		if (obj === undefined || obj === null) {
			return 'null';
		}

		switch (obj.constructor) {
			case Object:
				for (var property in obj) {
					if (obj.hasOwnProperty(property)) {
						results.push(this.objectToJSON(property) + ': ' + this.objectToJSON(obj[property]));
					}
				}
				json = '{' + results.join(', ') + '}';
				break;
			case Array:
				for (var i = 0; i < obj.length; i++) {
					results.push(this.objectToJSON(obj[i]));
				}
				json = '[' + results.join(', ') + ']';
				break;
			case Number:
			case Boolean:
				json = obj.toString();
				break;
			case String:

				var specialChars = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\'};

				json = obj.replace(/[\x00-\x1f\\]/g, function(match) {
					var ch = specialChars[match];
					return ch ? ch : '\\u00' + match.charCodeAt().toPaddedString(2, 16);
				});

				json = '"' + json.replace(/"/g, '\\"') + '"';
				break;
			default:

				json = 'null';
				break;
		}

		return json;
	};

	this.createHandler = function(send_func, registered_funcs) {
		var that = this;
		var handler = function(message) {

			try {
				var rpc = eval('(' + message + ')');
			} catch(e) {
				alert('bad JSON: ' + message);
				return;
			}
			if (rpc.method) {

				if (!registered_funcs[rpc.method]) {
					return;
				}

				var retval = registered_funcs[rpc.method].apply(null, rpc.params);
				if (rpc.id) {
					var response = {
						result: retval,
						error: null,	// TODO
						id: rpc.id
					};
					send_func(that.objectToJSON(response));
				}
			} else if(rpc.result) {

				if (!that.ids[rpc.id]) {
					return;
				}

				that.ids[rpc.id](rpc.result);
				delete that.ids[rpc.id];
			}
		};
		return handler;
	};

	this.execute = function(send_func, method, params, response_callback) {
		response_callback = response_callback || null;
		var id = (response_callback) ? (new Date()).getTime() : null;

		var request = {
			method: method,
			params: params,
			id: id
		};

		send_func(this.objectToJSON(request));

		if (id) {
			this.ids[id] = response_callback;
		}
	};
};
JsonRpc = new JsonRpc();

var ParentMessenger = function(childUrl, receiverUrl, container, receiveCallback) {


	if (navigator.userAgent.indexOf('Safari') >= 0 && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf('Version/') + 8), 10) == 3) {
		throw new Error("unsupported.");
	} else if (window.opera) {
		throw new Error("unsupported.");
	}



	if (!receiverUrl &&
		navigator.userAgent.indexOf('Gecko') >= 0 &&
		parseFloat(navigator.userAgent.slice(navigator.userAgent.indexOf('rv:') + 3, navigator.userAgent.indexOf('rv:') + 6)) < 1.9) {
		throw new Error("unsupported.");
	}


	if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) {


		if (document.domain == window.location.hostname) {
			receiverUrl = '';
		}
	}

	var that = this;
	this.childUrl = childUrl;
	this.receiverUrl = receiverUrl;
	this.container = container || document.body;

	this.packetHandler = null;


	this._ready = false;
	this._error = false;


	var _createReceiverForFragmentPacket = function() {

		that.receiver = document.createElement('iframe');
		that.receiver.src = receiverUrl;
		that.receiver.id = 'receiver_' + (new Date()).getTime();
		that.receiver.name = that.receiver.id;

		that.receiver.frameBorder = '0';
		that.receiver.frameSpacing = '0';
		that.receiver.style.borderStyle = 'none';

		var receiver_onload = function() {
			var receiver = document.getElementById(that.receiver.id).contentWindow;

			try {
				receiver.document.body.innerHTML = '';
			} catch(e) {

				that._error = true;
			}
			receiver.document.body.style.padding = '0px';
			receiver.document.body.style.margin = '0px';

			var child = receiver.document.createElement('iframe');
			child.id = 'child';
			child.name = 'child';
			child.src = that.childUrl;

			child.frameBorder = '0';
			child.frameSpacing = '0';
			child.style.borderStyle = 'none';
			child.style.width = '100%';
			child.style.height = '100%';
			receiver.document.body.appendChild(child);

			that.child = receiver.document.getElementById('child').contentWindow;
			that.receiver = receiver;

			that.packetHandler = new FragmentPacket(that.receiver, that.child, that.childUrl, false, receiveCallback);

			that._listener = that.packetHandler.createListener();

			that.packetHandler.sendFlag(that.packetHandler.READY, 0);

			that._ready = true;
		};

		that.receiver.onreadystatechange = function() {
			if (this.readyState == 'complete') {
				receiver_onload();
			}
		};

		that.receiver.onload = receiver_onload;







		if (Dsq.Utils.ie) {
			if (that.container.clientWidth === 0) {

				var _waitForWidth = function() {
					if (that.container.clientWidth > 0) {
						Dsq.Utils.fixIframesIE(that.container.id);
					} else {
						window.setTimeout(_waitForWidth, 100);
					}
				};
				_waitForWidth();

				that._once = false;
				that.receiver.onresize = function() {
					if (!that._once) {
						Dsq.Utils.fixIframesIE(that.container.id);
					}
					that._once = true;
				};
			}
		}

		that.container.appendChild(that.receiver);
	};


	var _createReceiverForPostMessage = function() {

		var receiver_onload = function() {

			that.packetHandler.send();
			that._ready = true;
		};

		var id = PostMessagePacket._get_unique_id();
		var receiverId = 'child_' + id;


		ParentMessenger['_receiver_onload_' + receiverId] = receiver_onload;

		that.container.innerHTML += '<iframe ' +
			'src="' + childUrl + '" ' +
			'id="' + receiverId + '" ' +
			'name="' + receiverId + '" ' +
			'onload="ParentMessenger._receiver_onload_' + receiverId +'();" ' +
			'></iframe>';

		that.receiver = document.getElementById(receiverId).contentWindow;
		that.packetHandler = new PostMessagePacket(that.receiver, receiveCallback, id, receiverId);
		that._listener = that.packetHandler.createListener();
	};

	if (typeof window.postMessage == 'function') {
		_createReceiverForPostMessage();
	} else {
		_createReceiverForFragmentPacket();
	}

};

ParentMessenger.prototype.sendMessage = function(message) {
	var that = this;
	if (!this._ready) {

		window.setTimeout(function() { that.sendMessage(message); }, 10);
		return;
	}
	this.packetHandler.send(message);
	return true;
};

Dsq.NewFrames = function(url) {
	this.url = url;
};

Dsq.NewFrames.prototype.init = function(onFailure) {
	var that = this;

	try {
		this.messenger = new ParentMessenger(this.url, Dsq.jsonData.integration.receiver_url, this.container, this.receive_callback);
	} catch(e) {
		if (typeof onFailure == 'function') {
			onFailure();
		}
	}

	if (typeof onFailure == 'function') {
		var iId = window.setInterval(function() {
			if (typeof that.messenger == 'undefined') {
				window.clearInterval(iId);
				return;
			}
			if (that.messenger._ready) {
				window.clearInterval(iId);
			} else if (that.messenger._error) {
				window.clearInterval(iId);
				onFailure();
			}
		}, 10);
	}
};

Dsq.NewFrames.prototype._execute = function(method, args, callback) {
	var that = this;
	if (typeof that.messenger == 'undefined') {
		return false;
	}
	JsonRpc.execute(
		function(msg) { that.messenger.sendMessage(msg); },
		method,
		args || [],
		callback);
	return true;
};

Dsq.ReplyFrame = function(container, parent_post_id) {
	var that = this;
	this.container = container;
	this.parent_post_id = parent_post_id;

	var sendFunc = function(msg) {

		Dsq.Debug.log('Dsq.ReplyFrame.sendFunc');
		that.messenger.sendMessage(msg);
	};


	var postComment_onSuccess = function(response) {
		Dsq.jsonData.posts[response.message.id] = response.message.post_meta;
		if (!Dsq.jsonData.users[response.message.post_meta.user_key]) {
			Dsq.jsonData.users[response.message.post_meta.user_key] = response.message.user_meta;
		}


		var reply_position = (typeof(disqus_insert_wrt_sort) == 'undefined' 
			? (Dsq.jsonData.forum.reply_position ? -1 : null) 
			: (Dsq.jsonData.request.sort == 2 ? null : -1));
		
		if (response.message.post_meta.approved) {
			Dsq.Post.insert(response.message.post_meta.parent_post_id || reply_position, response.message.id, response.message.post_meta.message);
		}

		Dsq.Templates.postComment_onSuccess(response, parent_post_id, response.message.id);
	};

	var postComment_onFailure = function(response) {
		Dsq.Popup.popModal(response.message, 'Error');
		Dsq.Templates.postComment_onFailure(response, parent_post_id, response.message.id);
	};

	var editComment_onSuccess = function(response) {
		var post_id = parent_post_id;
		var message = Dsq.$('dsq-comment-message-' + post_id);
		
		message.innerHTML = response.message;
		Dsq.Templates.toggleEdit(post_id);
		Dsq.Templates.setLoadingButton(false);
	};
	
	var editComment_onFailure = function(response) {
		var post_id = parent_post_id;
		
		Dsq.Popup.popModal('Sorry, there was an error editing this comment.', 'Edit Error');
		Dsq.Templates.toggleEdit(post_id);
		Dsq.Templates.setLoadingButton(false);
	};

	var getUserByEmail_onSuccess = function(response) {
		var msg = response.message;
		var fields = Dsq.Templates.getFormFields(parent_post_id);

		if (msg.username) {

			Dsq.Templates.lightboxAuthenticate(parent_post_id, 'login', {
				'username': msg.username,
				'display_name': msg.display_name,
				'avatar_url': msg.avatar_url,
				'verified': msg.verified,
				'email': fields.email.value
			});
		} else {

			Dsq.Templates.lightboxAuthenticate(parent_post_id, 'register');
		}
	};

	var validateAuth_onSuccess = function(response, auth_choice) {
		Dsq.Templates.postComment(parent_post_id, null, true, auth_choice);
	};

	var validateAuth_onFailure = function(response, auth_choice) {
		var pid = parent_post_id ? '-' + parent_post_id : '';
		var msg = response.message;

		if (auth_choice == 'register') {
			var fields = ['email', 'username', 'password'];

			for (var i = 0; i < fields.length; i++) {
				var field = fields[i];
				var errorDiv = Dsq.$('dsq-' + field + '-errors' + pid);

				if (msg[field]) {
					errorDiv.innerHTML = msg[field];
				} else {
					errorDiv.innerHTML = '';
				}
			}
		} else if (auth_choice == 'login') {
			Dsq.$('dsq-lightbox-errors' + pid).innerHTML = '<p>We couldn\'t log you in. Please verify your login.</p>';
		}
		
		Dsq.Templates.setLoadingButton(false);
	};

	this.receive_callback = JsonRpc.createHandler(sendFunc, {
		'postComment.onSuccess': postComment_onSuccess,
		'postComment.onFailure': postComment_onFailure,
		'editComment.onSuccess': editComment_onSuccess,
		'editComment.onFailure': editComment_onFailure,		
		'getUserByEmail.onSuccess': getUserByEmail_onSuccess,
		'validateAuth.onSuccess': validateAuth_onSuccess,
		'validateAuth.onFailure': validateAuth_onFailure,
		'reload': function() { window.location.reload(); }
	});

	this.url = Dsq.Urls.REPLY +
		'?' + (new Date()).getTime() +
		'&f=scobleizer' +
		'&t=looking_at_vista' +
		'&ff=' + Dsq.Thread.ff +
		'&default_text=' + encodeURIComponent(disqus_default_text) +
		'&ifrs=' + encodeURIComponent(disqus_iframe_css);
	if (this.parent_post_id) {
		this.url += '&parent_post=' + this.parent_post_id;
	}
};

Dsq.ReplyFrame.prototype = new Dsq.NewFrames(Dsq.ReplyFrame.url);

Dsq.ReplyFrame.prototype.post = function(author_name, author_email, author_url, authenticate, sharing_services, subscribe) {
	this._execute('postComment', [author_name, author_email, author_url, authenticate, sharing_services, subscribe]);
};

Dsq.ReplyFrame.prototype.edit = function(post_id, message) {
	this._execute('editComment', [post_id, message]);
};

Dsq.ReplyFrame.prototype.setState = function(parent_post_id, depth) {
	this._execute('setState', [parent_post_id, depth]);
};

Dsq.ReplyFrame.prototype.getUserByEmail = function(email) {
	this._execute('getUserByEmail', [email]);
};

Dsq.ReplyFrame.prototype.validateAuth = function(auth_choice, email, username, password) {
	this._execute('validateAuth', [auth_choice, email, username, password]);
};

Dsq.ReplyFrame.prototype.authenticateFacebook = function(session, forum_url) {
	this._execute('authenticateFacebook', [session, forum_url]);
};

	Dsq.Facebook = function() {
	var that = this;

	var handleSessionData = function(session) {

		var forum_url = Dsq.jsonData.forum.url;




		if (typeof disqus_facebook_forum != 'undefined') {
			forum_url = disqus_facebook_forum;
		}
		Dsq.frames.reply_0.authenticateFacebook(session, forum_url);
	};

	var onLogin = function() {
		FB.Connect.getSignedPublicSessionData(handleSessionData);
	};

	this.login = function() {
		FB.Connect.requireSession(onLogin, true);
	};
};
Dsq.Facebook = new Dsq.Facebook();


	






Dsq.Themes = {};

Dsq.Themes.narcissus = new function() {
	this.addPostContainer = 'dsq-form-area';
	this.textareaContainer = 'dsq-textarea-wrapper';



	
	this.header = function() {
		var comments_count, total_posts, num_posts;
		var html = '';
		var missing_perm_tmpl;

		if (Dsq.jsonData.request.missing_perm) {
			missing_perm_tmpl = Dsq.Templates.missingPermissions();
			if (missing_perm_tmpl) {
				html += '<div class="dsq-missing-permissions">' + missing_perm_tmpl + '</div>';
			}
		}

		total_posts = Dsq.jsonData.thread.total_posts;
		num_posts = Dsq.jsonData.thread.num_posts;

		if (total_posts) {
			comments_count = Dsq.FmtStrings.SHOWING_COMMENTS_FULL(total_posts, num_posts);
		} else {
			comments_count = Dsq.FmtStrings.SHOWING_COMMENTS_WITHOUT_PAGINATION(num_posts);
		}

		html += ' \
		<div id="dsq-comments-title"> \
			<h3>' + comments_count + '</h3> \
		</div> \
		';

		html += ' \
		<div class="dsq-options"> \
			<span class="dsq-item-sort">'
				+ Dsq.Strings.SORT_BY + ' \
				<select id="dsq-sort-select" onchange="Dsq.Thread.sortBy(this.value);"> \
					<option value="hot" ' + (Dsq.jsonData.request.sort == 4 ? 'selected="selected"' : '') + '>' + Dsq.Strings.POPULAR_NOW + '</option> \
					<option value="best" ' + (Dsq.jsonData.request.sort == 3 ? 'selected="selected"' : '') + '>' + Dsq.Strings.BEST_RATING + '</option> \
					<option value="newest" ' + (Dsq.jsonData.request.sort == 2 ? 'selected="selected"' : '') + '>' + Dsq.Strings.NEWEST_FIRST + '</option> \
					<option value="oldest" ' + (Dsq.jsonData.request.sort == 1 ? 'selected="selected"' : '') + '>' + Dsq.Strings.OLDEST_FIRST + '</option> \
				</select> \
				&nbsp; \
			</span> \
			<span class="dsq-subscribe-email"> \
				<img src="http://media.disqus.com/images/embed/email.png" style="width:12px;height:12px;vertical-align:middle"> \
				<span id="dsq-subscribe">'
					+ (Dsq.jsonData.context.subscribed
						? '<a href="#" onclick="Dsq.Thread.subscribe(0); return false">' + Dsq.Strings.UNSUBSCRIBE + '</a>'
						: '<a href="#" onclick="Dsq.Thread.subscribe(1); return false">' + Dsq.Strings.SUBSCRIBE_BY_EMAIL + '</a>')
				+ '</span> \
			</span> \
			<span class="dsq-subscribe-rss" style="width:12px;height:12px;vertical-align:middle"> \
				<img src="http://media.disqus.com/images/embed/bullet-feed.png" alt="" /> \
				<a href="http://scobleizer.disqus.com/looking_at_vista/latest.rss">' + Dsq.Strings.SUBSCRIBE_BY_RSS + '</a> \
			</span> \
		</div> \
		';

		
		

		return html;

	};
	
	this.footer = function() {
		var html = '';

		html += Dsq.Templates.pagination();

		
		
			html += Dsq.Templates.realtime();
			html += Dsq.Templates.showThreadSettings();
			html += Dsq.Templates.postBox();

		html += Dsq.Templates.reactions();

		
			html += Dsq.Templates.trackbacks();
		


		if (Dsq.jsonData.request.is_global_moderator) {
 			html += ' \
				<div class="dsq-global-moderator-extras">'
					+ '<strong>shortname:</strong> ' + Dsq.jsonData.forum.url
					+ '<strong>thread id:</strong> ' + Dsq.jsonData.thread.id
					+ '<strong>thread slug:</strong> ' + Dsq.jsonData.thread.slug
				+ '</div> \
			';
		}

		return html;
	};
	
	this.realtime = function() {
		var html = '';
		
		if (Dsq.jsonData.realtime_enabled) {
			html += '<div id="dsq-realtime-options" class="dsq-options">'
					 + Dsq.Strings.REALTIME_UPDATING_IS + ' <strong id="dsq-realtime-status" style="text-transform: lowercase">' + Dsq.Strings.ENABLED + '</strong>. \
					 <a href="#" id="dsq-realtime-toggle" style="text-transform: capitalize"></a> \
					</div>';
		}

		if (!Dsq.jsonData.forum.streaming_realtime) {
			html += ' \
				<div style="display: none" id="dsq-realtime-alert" class="dsq-realtime-alert"><span id="dsq-realtime-queued"></span> <a href="#" id="dsq-realtime-show"></a></div> \
			';
		}
		
		return html;
	};

	this.showThreadSettings = function() {
		if (!Dsq.jsonData.request.is_moderator) {
			return '';
		}

		html = '<div id="dsq-thread-settings" class="dsq-thread-settings">' + Dsq.Strings.MODERATOR_OPTIONS;
		html += '<a href="#" onclick="Dsq.Thread.showSettings(); return false;">' + Dsq.Strings.SETTINGS + '</a>';
		html += '<a href="#" onclick="Dsq.Thread.showModeratorActions(); return false;">' + Dsq.Strings.MODERATE + '</a>';
		if (Dsq.jsonData.forum.reactions_enabled && Dsq.jsonData.reactions.length === 0) {
			html += '<a href="#" onclick="Dsq.Reaction.reportMissingReactions(); return false;">'
						+ Dsq.Strings.REPORT_MISSING_REACTIONS
						+ '</a>';
		}
		html +='</div>';

		return html;
	};

	this.postBox = function(post_id, use_fallback_iframe) {


		var html;
		var display_sharing_options = Dsq.jsonData.request.is_authenticated;

		if (!Dsq.jsonData.request.is_authenticated && Dsq.jsonData.forum.disqus_auth_disabled && !Dsq.jsonData.forum.allow_anon_post) {
			return '';
		}
		
		if (Dsq.jsonData.request.is_remote) {


			if (!Dsq.jsonData.request.sharing.hasOwnProperty(Dsq.jsonData.request.remote_domain)) {
				display_sharing_options = false;
			}
		}
		
		if (post_id) {
			var _meta = Dsq.jsonData.posts[post_id];
			var userData = Dsq.jsonData['users'][_meta.user_key];				
		}
		
		var pid = post_id ? '-' + post_id : '';

		var _requestUserInfo = function() {
			var html;



			var user_has_email = false;

			html = '<div class="dsq-request-user-info"> <!-- // If authenticated --> \
				<a href="' + Dsq.jsonData.settings.disqus_url + Dsq.Urls.LOGOUT + '?ctkn=' + Dsq.CSRF_TOKEN + '" class="dsq-request-user-logout">' + Dsq.Strings.LOGOUT + '</a> \
				<table> \
					<tr> \
						<td rowspan="2">'
							+ (!Dsq.jsonData.forum.disqus_auth_disabled ? '<a href="' + Dsq.jsonData.settings.disqus_url + Dsq.Urls.REQUEST_USER_PROFILE + '">' : '')
								+ '<img src="' + Dsq.Urls.REQUEST_USER_AVATAR + '" width="48" height="48" class="dsq-request-user-avatar">'
							+ (!Dsq.jsonData.forum.disqus_auth_disabled ? '</a>' : '')
						+ '</td> \
						<td class="dsq-request-user-name">'
								+ (Dsq.jsonData.request.is_remote
									 ? '<span class="dsq-badge-small dsq-badge-' + Dsq.jsonData.request.remote_domain + '">' + Dsq.jsonData.request.remote_domain + '</span>'
									 : (Dsq.jsonData.request.is_verified
											? '<span class="dsq-badge-small dsq-badge-verified">Verified</span>'
											: '<span class="dsq-badge-small dsq-badge-registered">Registered</span>'))
							+ (!Dsq.jsonData.forum.disqus_auth_disabled ? ' <a href="' + Dsq.jsonData.settings.disqus_url + Dsq.Urls.REQUEST_USER_PROFILE + '">' : '') 
								+ Dsq.jsonData.request.display_username 
							+ (!Dsq.jsonData.forum.disqus_auth_disabled ? '</a>' : '')
							+  (Dsq.jsonData.request.is_remote && user_has_email ? ' <small>(<a href="#" onclick="Dsq.Popup.remoteAccountSettings(); return false;">change settings</a>)</small>' : '')
							+  (!Dsq.jsonData.request.is_remote && !Dsq.jsonData.forum.disqus_auth_disabled ? ' <small>(<a href="' + Dsq.jsonData.settings.disqus_url + '/profile/info/" target="_blank">change name</a> or <a href="' + Dsq.jsonData.settings.disqus_url + '/profile/avatar/" target="_blank">picture</a>)</small>' : '')
						+ '</td> \
					</tr> \
					<tr> \
						<td class="dsq-request-user-stats"> \
							<span><big>' + Dsq.jsonData.request.comments_count + '</big> ' + (Dsq.jsonData.request.comments_count == 1 ? 'comment' : 'comments') + '</span> \
							<span><big>' + Dsq.jsonData.request.likes_count + '</big> ' + (Dsq.jsonData.request.likes_count == 1 ? 'like' : 'likes') + '</span> \
							<span><big>' + Dsq.jsonData.request.points + '</big> ' + (Dsq.jsonData.request.points == 1 ? 'point' : 'points') + '</span> \
						</td> \
					</tr> \
				</table> \
			</div> \
			';
			return html;
		};

		var _loginOptions = function() {
			var html;
			html = ' \
			<div class="dsq-authenticate"> \
				<p class="dsq-autheneticate-copy">'
				+ (Dsq.jsonData.forum.allow_anon_post
					? Dsq.Strings.YOU_ARE_COMMENTING_AS_A + ' <a class="dsq-help" title="Click for more information" href="#" onclick="Dsq.Popup.helpBadges(); return false">Guest</a>. ' + Dsq.Strings.OPTIONAL + ': ' + Dsq.Strings.LOGIN_BELOW + '.'
					: Dsq.Strings.REQUIRED + ': ' + Dsq.Strings.PLEASE_LOGIN_BELOW_TO_COMMENT + '.')
				+ '</p> \
				<ul class="dsq-login-buttons">'
					+ (!Dsq.jsonData.forum.disqus_auth_disabled ? '<li class="dsq-login-button"><a href="#" onclick="Dsq.Popup.login(); return false"><img src="http://media.disqus.com/images/themes/narcissus/login-disqus.gif" /></a></li>' : '')
					+ (Dsq.jsonData.context.use_fb_connect ? '<li class="dsq-login-button"><a href="#" onclick="Dsq.Facebook.login(); return false;"><img src="http://media.disqus.com/images/themes/narcissus/login-facebook.gif" /></a></li>' : '')
					+ (Dsq.jsonData.context.use_twitter_signin ? '<li class="dsq-login-button"><a href="#" onclick="Dsq.Twitter.startTwitterConnect(); return false"><img src="http://media.disqus.com/images/themes/narcissus/login-twitter.gif" /></a></li>' : '')
					+ (Dsq.jsonData.context.use_openid ? '<li class="dsq-login-button"><a href="#" onclick="Dsq.OpenID.requestURL(); return false" ><img src="http://media.disqus.com/images/themes/narcissus/login-openid.gif" /></a></li>' : '')
					+ (Dsq.jsonData.context.use_yahoo ? '<li class="dsq-login-button"><a href="#" onclick="Dsq.Yahoo.startYahooConnect(); return false"><img src="http://media.disqus.com/images/themes/narcissus/login-yahoo.gif" /></a></li>' : '')
				+ '</ul> \
			</div> \
			';
			return html;
		};

		if (!Dsq.jsonData.context.show_reply) {


			if (!Dsq.jsonData.request.is_authenticated) {



				return '<div id="dsq-form-area" style="display:none"><div id="dsq-textarea-wrapper"></div></div>' + _loginOptions();
			} else {
				return '';
			}
		}

		html = ' \
		<div id="' + (post_id 
			? 'dsq-reply-post-' + post_id
			: 'dsq-new-post')
		 	+ '" class="dsq-post-area"> \
			<div class="dsq-dc-logo"> \
				<a href="http://disqus.com/comments" target="_blank"><img src="http://media.disqus.com/images/themes/narcissus/disqus-logo.png"></a> \
			</div>'
			+ (post_id 
				? '<h3>' + Dsq.Strings.REPLYING_TO + ' ' + userData.display_name + '</h3>'
				: '<h3>' + Dsq.Strings.ADD_NEW_COMMENT + '</h3>')
			+ (Dsq.jsonData.request.is_authenticated 
				? _requestUserInfo()
				: _loginOptions() )
			+ '<div id="dsq-form-area' + pid + '">'
			+ '<div class="dsq-textarea"> \
				<div class="dsq-textarea-wrapper" id="dsq-textarea-wrapper' + pid + '"></div> \
			</div>'
			+ (!Dsq.jsonData.request.is_authenticated
			? ' \
			<div class="dsq-post-fields"> \
				<table> \
					<tr> \
						<td class="dsq-post-fields-left"><div class="dsq-input-wrapper"><input id="dsq-field-name' + pid + '" type="text" value="' + (disqus_def_name ? disqus_def_name : (Dsq.jsonData.session.name ? Dsq.jsonData.session.name : Dsq.Strings.NAME + '" class="dsq-placeholder')) + '" onfocus="Dsq.Templates.handlePlaceholder(event, this, \'name\')" onblur="Dsq.Templates.handlePlaceholder(event, this, \'name\')" /></div></td> \
						<td class="dsq-post-fields-right"><div class="dsq-input-wrapper"><input id="dsq-field-website' + pid + '" type="text" value="' + (Dsq.jsonData.session.url ? Dsq.jsonData.session.url : Dsq.Strings.WEBSITE + ' (' + Dsq.Strings.OPTIONAL.toLowerCase() + ')" class="dsq-placeholder') + '" onfocus="Dsq.Templates.handlePlaceholder(event, this, \'website\')" onblur="Dsq.Templates.handlePlaceholder(event, this, \'website\')" /></div></td> \
					</tr> \
					<tr> \
						<td class="dsq-post-fields-left"><div class="dsq-input-wrapper"><input id="dsq-field-email' + pid + '" type="text" value="' + (disqus_def_email ? disqus_def_email : (Dsq.jsonData.session.email ? Dsq.jsonData.session.email : Dsq.Strings.EMAIL + '" class="dsq-placeholder')) + '" onfocus="Dsq.Templates.handlePlaceholder(event, this, \'email\')" onblur="Dsq.Templates.handlePlaceholder(event, this, \'email\')" /></div></td> \
						<td class="dsq-post-fields-right"> \
							<div class="dsq-subscribe"> \
								<a href="#" onclick="Dsq.Templates.chooseSubscribe(' + post_id + '); return false" class="dsq-subscribe-menu"><span id="dsq-subscribe-select' + pid + '">' + (Dsq.jsonData.request.subscribe_on_post ? Dsq.Strings.SUBSCRIBE_TO_ALL_COMMENTS_BY_EMAIL : Dsq.Strings.DO_NOT_SUBSCRIBE_TO_COMMENTS) + '</span> <small>&#9660;</small></a> \
								<ul class="dsq-panel" id="dsq-subscribe-menu' + pid + '"> \
									<li><a href="#" onclick="Dsq.Templates.setSubscribe(2, this, ' + post_id + '); return false">' + Dsq.Strings.SUBSCRIBE_TO_ALL_COMMENTS_BY_EMAIL + '</a></li> \
									<li><a href="#" onclick="Dsq.Templates.setSubscribe(0, this, ' + post_id + '); return false">' + Dsq.Strings.DO_NOT_SUBSCRIBE_TO_COMMENTS + '</a></li> \
								</ul> \
								<input id="dsq-subscribe-on-post' + pid + '" type="hidden" value="' + Dsq.jsonData.request.subscribe_on_post + '" /> \
							</div> \
						</td> \
					</tr> \
				</table> \
			</div>'
			: '')
			+ '<div class="dsq-post-footer"> \
				<div class="dsq-sharing-options" ' + (!display_sharing_options ? 'style="display:none;"' : '') + '> \
					<button type="button" class="dsq-button-small" onfocus="document.getElementById(\'dsq-post-button' + pid + '\').focus();"><span>' + Dsq.Strings.SHARING_OPTIONS + ' <small>&#9660;</small></span></button> \
					<div class="dsq-panel"> '
						+ (Dsq.jsonData.request.sharing.twitter !== undefined
								&& Dsq.jsonData.request.sharing.twitter.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-twitter' + pid + '"'
								  + (Dsq.jsonData.request.sharing.twitter.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-twitter' + pid + '">' + Dsq.Strings.SHARE_ON + ' Twitter</label> \
								 </div>'
							: '')
						+ (Dsq.jsonData.request.sharing.facebook
								&& (Dsq.jsonData.request.sharing.facebook.enabled === true ||
										(Dsq.jsonData.request.is_remote && Dsq.jsonData.request.remote_domain == 'facebook'))
							? '<div><input type="checkbox" id="dsq-sharing-facebook' + pid + '"'
									+ (Dsq.jsonData.request.sharing.facebook.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-facebook' + pid + '">' + Dsq.Strings.SHARE_ON + ' Facebook</label> \
								 </div>'
							: '')
						+ (Dsq.jsonData.request.sharing.yahoo !== undefined
								&& Dsq.jsonData.request.sharing.yahoo.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-yahoo' + pid + '"'
									+ (Dsq.jsonData.request.sharing.yahoo.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-yahoo' + pid + '">' + Dsq.Strings.SHARE_ON + ' Yahoo!</label> \
								</div>'
							: '')
						+ (Dsq.jsonData.request.sharing.tumblr !== undefined
								&& Dsq.jsonData.request.sharing.tumblr.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-tumblr' + pid + '"'
									+ (Dsq.jsonData.request.sharing.tumblr.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-tumblr' + pid + '">' + Dsq.Strings.SHARE_ON + ' Tumblr</label> \
								 </div>'
							: '')
						+ (Dsq.jsonData.request.sharing.wordpress !== undefined
								&& Dsq.jsonData.request.sharing.wordpress.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-wordpress' + pid + '"'
									+ (Dsq.jsonData.request.sharing.wordpress.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-wordpress' + pid + '">' + Dsq.Strings.SHARE_ON + ' Wordpress</label> \
								 </div>'
							: '')
						+ (Dsq.jsonData.request.sharing.movabletype !== undefined
							  && Dsq.jsonData.request.sharing.movabletype.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-movabletype' + pid + '"'
									+ (Dsq.jsonData.request.sharing.movabletype.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-movabletype' + pid + '">' + Dsq.Strings.SHARE_ON + ' Movable Type</label> \
							   </div>'
							: '')
						+ (Dsq.jsonData.request.sharing.typepad !== undefined
							  && Dsq.jsonData.request.sharing.typepad.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-typepad' + pid + '"'
									+ (Dsq.jsonData.request.sharing.typepad.auto === true ? 'checked=true' : '') + '/> \
								  <label for="dsq-sharing-typepad' + pid + '">' + Dsq.Strings.SHARE_ON + ' TypePad</label> \
							   </div>'
							: '')
						+ '<div><a href="' + Dsq.jsonData.settings.disqus_url + '/profile/connections/" target="_blank" class="dsq-configure-options">' + Dsq.Strings.CONFIGURE_OPTIONS + '</a></div>'
					+ '</div> \
				</div>'
				+ '<button type="button" class="dsq-button" id="dsq-post-button' + pid + '" onclick="Dsq.Templates.postComment(' + post_id + ', this, false)"><span>' + Dsq.Strings.POST_AS + ' '
				+ (Dsq.jsonData.request.display_username
					? Dsq.jsonData.request.display_username
					: Dsq.Strings.GUEST)
				+ '</span></button>'
				+ (post_id
					? '<button type="button" class="dsq-button" id="dsq-cancel-button' + pid + '" onclick="Dsq.Post.toggleReply(' + post_id +', this)"><span>' + Dsq.Strings.CANCEL + '</span></button>'
					: '')
			+ '</div>'
			+ '</div>' // end dsq-form-area
		+ '</div> \
		';
		
		return html;
	};




	this.appendPost = function(post_id) {
		var html = '<div id="dsq-append-post-' + post_id + '"></div>';
		return html;
	};

	this.postPrependHeader = function(post_id) {
		var html;
		var _meta = Dsq.jsonData.posts[post_id];
		var userData = Dsq.jsonData['users'][_meta.user_key];
		
		html = ' \
		<table> \
			<tr> \
				<td id="dsq-header-avatar-' + post_id + '" class="dsq-header-avatar" onmouseover="Dsq.Post.dropProfile(' + post_id + ')"> \
					<a id="dsq-avatar-' + post_id + '" class="dsq-avatar" href="' + userData.url + '" onclick="Dsq.Popup.popProfile(' + post_id + '); return false;">'
					+ (Dsq.jsonData.forum.show_avatar
					? '<img src="' + Dsq.jsonData.users[_meta.user_key].avatar + '" alt="" />'
					: '')
				+ '</a> \
				</td> \
				<td class="dsq-comment-header-meta"> \
		';

		
		return html;
	};
	
	this.postAppendHeader = function(post_id) {
		var _meta = Dsq.jsonData.posts[post_id];
		var html;
		var parent_display_name = '';
		
		if(_meta.parent_post_id) {

			var _parent_meta = Dsq.jsonData.posts[_meta.parent_post_id];

			if (_parent_meta) {
				var parentUserData = Dsq.jsonData['users'][_parent_meta.user_key];
				parent_display_name = parentUserData.display_name;
			}
		}

		html = ' \
		<img src="http://media.disqus.com/images/themes/narcissus/moderator.png" class="dsq-moderator-star" title="Moderator" /> \
		<span class="dsq-comment-header-time"><a href="#comment-' + post_id + '" onclick="Dsq.Popup.permalink(' + post_id + ')" title="Permalink">' + (_meta.is_realtime ? Dsq.Strings.JUST_NOW : _meta.date) + '</a></span> '
		+ (_meta.parent_post_id && parent_display_name
			? '<a href="#comment-' + _meta.parent_post_id + '" title="Jump to comment">in reply to ' + parent_display_name + '</a>'
			: '')
		+ '</td> \
		<td id="dsq-like-pts-' + post_id + '" class="dsq-comment-header-likes">'
		+ (_meta.points
			? _meta.points + Dsq.Utils.pluralize(_meta.points, ' person', ' people') + ' liked this.'
			: '')
		+ '</td> \
		</tr> \
		</table> \
		';
		return html;
	};

	this.preBody = function(post_id) {
		var html = '';
		return html;
	};

	this.postFooter = function(post_id) {
		var html;
		var _meta = Dsq.jsonData.posts[post_id];
		if(_meta.killed || !_meta.approved) { return ''; }
		
		html = ' \
		<div class="dsq-comment-footer" id="dsq-comment-footer-' + post_id + '"> \
			<div class="dsq-comment-footer-left">'
				+ (Dsq.jsonData.request.is_moderator || Dsq.jsonData.request.is_global_moderator
					? '<a href="#" onclick="Dsq.Templates.moderateOptions(' + post_id+ '); return false">' + Dsq.Strings.MODERATE + '</a>'
					: '')
				+ '<a href="#" id="dsq-post-report-' + post_id + '" class="dsq-post-report" onclick="Dsq.Post.report(' + post_id + ', false); return false;">' + Dsq.Strings.FLAG + '</a> \
			</div> \
			<div class="dsq-comment-footer-right">'
				+ (_meta.votable 
					? '<span id="dsq-like-' + post_id + '" class="dsq-like">'
					+ (!_meta.up_voted
						? '<button type="button" class="dsq-button-small" onclick="Dsq.Post.rate(this, ' + post_id + ', 1)" >Like</button>'
						: 'You liked this.&nbsp;&nbsp;')
					+ '</span>'
					: '')
				+ (_meta.can_reply && !_meta.has_replies && _meta.from_request_user
					? '<button type="button" class="dsq-button-small dsq-post-edit" onclick="Dsq.Post.edit(this, ' + post_id + ')" >' + Dsq.Strings.EDIT + '</button>'
					: '')
				+ (_meta.can_reply
					? '<span class="dsq-comment-footer-reply" id="dsq-comment-footer-reply-' + post_id + '" onclick="Dsq.Post.toggleReply(' + post_id +', this)"> \
						<button type="button" class="dsq-button-small">' + Dsq.Strings.REPLY + '</button> \
						<button type="button" class="dsq-comment-footer-reply-tab">' + Dsq.Strings.REPLY + '</button><span></span> \
					</span>'
					: '')
			+ '</div> \
		</div> \
		';
		
		return html;
	};



	
	this.showRetweets = function(id, limit, element_id /* Optional */) {
		var source, html = '';

		for (var i = 0, reaction; reaction = Dsq.jsonData.reactions[i]; i++) {
			if (reaction.id === id) {
				source = reaction.retweets;
			}
		}

		if (source) {
			if (limit === 0) {
				limit = source.length;
			}

			for (var j = 0; j < limit; j++) {
				var rt = source[j];
				html += '<a href="' + rt.url + '">' + rt.author_name + '</a>'	+ ((j === (limit - 1)) ? '.' : ', ');
			}
		}

		if (element_id === undefined) {
			return html;
		}

		var element = document.getElementById(element_id);
		element.innerHTML = html;
		return element;
	};

	this.showMoreReactions = function(reactions, has_more, start, limit) {
		var link = document.getElementById('dsq-show-more-reactions');
		var container = link.parentNode;
		container.removeChild(link);

		for (var i = 0, reaction; reaction = reactions[i]; i++) {
			var el = Dsq.Templates.generateReactionHTML(reaction);
			if (el) {
				container.innerHTML += el;
			}
		}

		if (has_more) {
			var d = Dsq.jsonData.settings.disqus_url;
			var f = Dsq.jsonData.forum.url;
			var t = Dsq.jsonData.thread.id;
			var s = start;
			var l = limit;

			var handler = 'Dsq.Utils.execScript(\'' + d + '/forums/' + f + '/more_reactions.js?t=' + t + '&s=' + s + '&l=' + l + '\', true); return false;';
			container.innerHTML += '<li id="dsq-show-more-reactions" class="dsq-show-more-reactions"><button type="button" class="dsq-button-small" onclick="' + handler + '">Show more reactions</button></li>';
		}
	};

	this.generateReactionHTML = function(reaction) {
		if (reaction.body === null || reaction.body == '') {
			return;
		}

		if (reaction.author_name === '') {
			reaction.author_name = '&nbsp;';
		}

		if (reaction.url === '') {
			reaction.url = reaction.get_service_url;
		}

		var item = '<li class="dsq-comment dsq-reaction" id="dsq-reaction-' + reaction.id + '">'
			+ '<div class="dsq-comment-header"> \
			<table> \
			<tr> \
			<td class="dsq-header-avatar"> \
			';

		if (reaction.author_url && reaction.author_url !== '') {
			item += '<a target="_blank" href="' + reaction.author_url +'" class="dsq-avatar">';
		}

		if (reaction.avatar_url && reaction.avatar_url !== '') {
			item += '<img src="' + reaction.avatar_url + '"/>';
		} else {

			item += '<img src="' + Dsq.jsonData.media_url + '/images/noavatar92.png"/>';
		}

		var service_icon = (reaction.get_service_name == 'trackback' || reaction.get_service_name == 'pingback' ? 'rss' : reaction.get_service_name.replace(' ', ''));
		item += (reaction.author_url && reaction.author_url !== ''
				? '</a>'
				: '')
			+ '</td>'
			+ '<td><cite class="dsq-comment-cite">' + reaction.author_name + '</cite> <span class="dsq-comment-header-time">' + reaction.date_created + '</span></td>'
			+ '<td class="dsq-comment-header-likes"></td>'
			+ '</tr></table></div>' // end dsq-comment-header
			+ '<div class="dsq-reaction-header" \
				<table> \
					<tr> \
						<td class="dsq-reaction-header-left">'
							+ '<img class="dsq-service-icon" src="' + Dsq.jsonData.media_url + '/images/reactions/services/' + service_icon + '.png" />'
							+ ' From <a class="dsq-service-name" target="_blank" href="' + reaction.url + '">' + reaction.get_service_name + '</a> '
							+ 'via <a href="' + reaction.source_url + '">' + (reaction.source == 'backtype' ? 'BackType' : 'UberVU') + '</a>'
						+ '</td>'
						+ '<td class="dsq-reaction-header-right">';

			if(reaction.retweets) {
				var num_retweets = reaction.retweets.length;
				if (num_retweets > 0) {
					if (num_retweets == 1) {
						item += 'One more retweet from <a href="' + reaction.retweets[0].url + '">'  + reaction.retweets[0].author_name + '</a>';
					} else {
						item += (num_retweets + ' more retweets from ');
						item += '<span id="dsq-reaction-retweets-' + reaction.id + '">';
						var n_tweets = (num_retweets > 3) ? 3 : num_retweets;
						item += Dsq.Templates.showRetweets(reaction.id, n_tweets);
						if (n_tweets != num_retweets) {
							item += '</span> <a onclick="Dsq.Templates.showRetweets(' + reaction.id + ', 0, \'dsq-reaction-retweets-' + reaction.id + '\');'
								+ 'this.parentNode.removeChild(this); return false;" href="#">Show all</a>';
						}
					}
				}
			}	
			item += '</td></tr> \
			</table> \
			</div>' // end dsq-reaction-header
			+ '<div class="dsq-comment-body"> \
				<div class="dsq-comment-message">' + reaction.body + '</div>'
			+ '</div> \
			<div class="dsq-comment-footer"> \
				<div class="dsq-comment-footer-left"> \
				</div>'
				+ (Dsq.jsonData.request.is_moderator || Dsq.jsonData.request.is_global_moderator 
					? ' \
					<div class="dsq-comment-footer-right"> \
						<button type="button" class="dsq-button-small dsq-hide-reaction" onclick="Dsq.Reaction.hide(' + reaction.id + ')">Hide</button> \
					</div>'
					: '')
			+ '</div>'
		item += '</li>'; /* Reaction HTML ends */
		return item;
	};

	this.reactions = function() {
		var html, reaction;

		if (Dsq.jsonData.reactions === undefined || Dsq.jsonData.reactions.length === 0) {
			return '';
		}

		html = '';
		for (var i = 0; reaction = Dsq.jsonData.reactions[i]; i++) {
			var item = Dsq.Templates.generateReactionHTML(reaction);
			if (item) {
				html += item;
			}
		}

		if (Dsq.jsonData.has_more_reactions) {
			var d = Dsq.jsonData.settings.disqus_url;
			var f = Dsq.jsonData.forum.url;
			var t = Dsq.jsonData.thread.id;
			var s = Dsq.jsonData.reactions_start;
			var l = Dsq.jsonData.reactions_limit;

			var handler = 'Dsq.Utils.execScript(\'' + d + '/forums/' + f + '/more_reactions.js?t=' + t + '&s=' + s + '&l=' + l + '\', true); return false;';
			html += '<li id="dsq-show-more-reactions" class="dsq-show-more-reactions"><button type="button" class="dsq-button-small" onclick="' + handler + '">Show more reactions</button></li>';
		}

		return '<h3 id="dsq-reactions-title" class="dsq-h3-reactions">Reactions</h3><ul id="dsq-reactions" class="dsq-reactions">' + html + '</ul>';
	};
	
	this._popupGeneric = function(content) {
		return ' \
		<div class="dsq-popup-container"> \
			<table> \
				<tbody> \
					<tr> \
						<td class="dsq-popup-tl"></td><td class="dsq-popup-b"></td><td class="dsq-popup-tr"></td> \
					</tr> \
					<tr> \
						<td class="dsq-popup-b"></td> \
						<td class="dsq-popup-body"> \
							<div class="dsq-popup-content"> \
								<div class="dsq-popup-title"> \
									<button type="button" class="dsq-button-small" style="float:right" onclick="Dsq.Popup._closePopup(null, true)">Close</button>'
									+ content['header'] 
								+ '</div>'
								+ content['body']
							+ '</div> \
							<div class="powered-by"><a href="http://disqus.com/comments/">Powered by <img src="http://media.disqus.com/images/embed/disqus-logo.png" alt="Disqus Comments" style="margin-bottom:-5px" /></a></div> \
						</td> \
						<td class="dsq-popup-b"></td> \
					</tr> \
					<tr> \
						<td class="dsq-popup-bl"></td><td class="dsq-popup-b"></td><td class="dsq-popup-br"></td> \
					</tr> \
				</tbody> \
			</table> \
		</div> \
		';
	};



	
	this.chooseSubscribe = function(post_id) {

		var pid = post_id ? '-' + post_id : '';
		var menu = Dsq.$('dsq-subscribe-menu' + pid);
		
		menu.style.display = menu.style.display == 'block' ? 'none' : 'block';
		
	};
	
	this.setSubscribe = function(value, el, post_id) {

		var pid = post_id ? '-' + post_id : '';
		var input = Dsq.$('dsq-subscribe-on-post' + pid);
		var select = Dsq.$('dsq-subscribe-select' + pid);
		var menu = Dsq.$('dsq-subscribe-menu' + pid);
		
		select.innerHTML = el.innerHTML;
		input.value = value;
		this.chooseSubscribe(post_id);
	};
	
	this.getFormFields = function(post_id) {

		var fields = {};
		var pid = post_id ? '-' + post_id : '';
		var name = Dsq.$('dsq-field-name' + pid);
		var email = Dsq.$('dsq-field-email' + pid);
		var website = Dsq.$('dsq-field-website' + pid);
		var username = Dsq.$('dsq-field-username' + pid);
		var password = Dsq.$('dsq-field-password' + pid);

		fields = {
			'name': name,
			'email': email,
			'website': website,
			'username': username,
			'password': password
		}
		
		return fields;
	}
	
	this.validateFields = function(post_id) {
		
		if(Dsq.jsonData.request.is_authenticated) { return true; }
		
		var fields = Dsq.Templates.getFormFields(post_id);
		
		var nameField = fields.name;
		var websiteField = fields.website;
		var emailField = fields.email;
		
		websiteField.value = (websiteField.value == Dsq.Templates.placeholder['website']) ? '' : websiteField.value;
		
		var v = [{

			validator: Dsq.Validators.name,
			value: nameField.value
		}, {

			validator: Dsq.Validators.email,
			value: emailField.value
		}, {

			validator: Dsq.Validators.url,
			value: websiteField.value
		}];
		
		return Dsq.Validators.validate(v, function(e) { Dsq.Popup.popModal(e, 'Oops...') } );
	};
	
	this.checkExistingUser = function(post_id) {
		var fields = Dsq.Templates.getFormFields(post_id);		
		Dsq.Popup.loading(post_id);
		
		if (post_id) {
			Dsq.frames['reply_' + post_id].getUserByEmail(fields.email.value);
		} else {
			Dsq.frames['reply_0'].getUserByEmail(fields.email.value);
		}
	};

	this.validateAuth = function(el_clicked, post_id, auth_choice) {
		var fields = Dsq.Templates.getFormFields(post_id);
		var email = fields.email ? fields.email.value : '';
		var username = fields.username ? fields.username.value : '';
		var password = fields.password ? fields.password.value : '';
		
		Dsq.Templates.setLoadingButton(el_clicked, post_id);
		
		if (post_id) {
			Dsq.frames['reply_' + post_id].validateAuth(auth_choice, email, username, password);
		} else {
			Dsq.frames['reply_0'].validateAuth(auth_choice, email, username, password);
		}
	};

	this.lightboxUpdateEmail = function(post_id, new_email) {
		var fields = Dsq.Templates.getFormFields(post_id);
		fields.email.value = new_email;
	};

	this.lightboxAuthenticate = function(post_id, auth_choice, auth_data) {
		var title, body;
		var pid = post_id ? '-' + post_id : '';

		if(typeof(auth_data) == 'undefined') {
			var auth_data = Dsq.Templates.getFormFields(post_id);
		}

		d = auth_data;

		switch(auth_choice) {
			case 'register':
				var suggestedUsername = d.name.value.replace(/[^a-zA-Z0-9-]/g,'').toLowerCase();
			
				title = Dsq.jsonData.forum.allow_anon_post ? 'Optional:' : 'Required:';
				title += ' Register a <img src="http://media.disqus.com/images/embed/disqus-profile.png" alt=Disqus Profile" />';

				body = ' \
				<ul class="dsq-lightbox-register-reasons"> \
				<li>Verify your comments</li> \
				<li>Edit and delete comments</li> \
				<li>Manage comments and replies</li> \
				</ul> \
				';

				body += ' \
				<div class="dsq-lightbox-auth-fields"> \
					<table> \
						<tr> \
							<td>Email</td> \
							<td><input type="text" value="' + d.email.value + '" onchange="Dsq.Templates.lightboxUpdateEmail(' + post_id + ', this.value)" /><div id="dsq-email-errors' + pid + '"></div></td> \
						</tr> \
						<tr> \
							<td>Username</td> \
							<td><input id="dsq-field-username' + pid + '" type="text" value="' + suggestedUsername + '"/><div id="dsq-username-errors' + pid + '"></div></td> \
						</tr> \
						<tr> \
							<td>Password</td> \
							<td><input id="dsq-field-password' + pid + '" type="password" /><div id="dsq-password-errors' + pid + '"></div></td> \
						</tr> \
					</table> \
					<div class="dsq-lightbox-switch-auth"><a href="#" onclick="Dsq.Templates.lightboxAuthenticate(' + post_id + ',\'login\'); return false">Login instead</a></div> \
				</div> \
				<div id="dsq-lightbox-errors' + pid + '" class="dsq-lightbox-errors"></div> \
				<div class="dsq-lightbox-submit"> \
					<div class="dsq-lightbox-auth-post"><button type="button" class="dsq-button" onclick="Dsq.Templates.validateAuth(this, ' + post_id + ',\'' + auth_choice + '\')">Register and Post comment</button></div>'
					+ (Dsq.jsonData.forum.allow_anon_post
						? '<div class="dsq-lightbox-auth-skip"><button type="button" class="dsq-button-small" onclick="Dsq.Templates.postComment(' + post_id + ', this, true)">Just post as a Guest</button></div>'
						: '')
				+ '</div> \
				';
				break;
			case 'login':
				title = Dsq.jsonData.forum.allow_anon_post ? 'Optional:' : 'Required:';
				title += ' Login to your <img src="http://media.disqus.com/images/embed/disqus-profile.png" alt=Disqus Profile" />';
				body = '';
				
				if(d.avatar_url) {
					body += '<div class="dsq-lightbox-recognized"><table><tr>';
					body += '<td><img src="' + d.avatar_url + '" alt="" /></td>';
					body += '<td><span class="dsq-badge ' + (d.verified ? 'dsq-badge-verified' : 'dsq-badge-registered') + '">' + (d.verified ? 'Verified' : 'Registered') + '</span></td>';
					body += '<td>Hey <strong>' + d.display_name + '</strong>, is that you? Login below to claim this comment.';
					body += '</tr></table></div>';
				}

				body += ' \
				<div class="dsq-lightbox-auth-fields"> \
					<table> \
						<tr> \
							<td>Username or Email</td> \
							<td><input id="dsq-field-username' + pid + '" type="text" value="' + (d.avatar_url ? d.username : '') + '" /></td> \
						</tr> \
						<tr> \
							<td>Password <a href="http://disqus.com/forgot" target="_blank">(cannot log in?)</a></td> \
							<td><input id="dsq-field-password' + pid + '" type="password" /></td> \
						</tr> \
					</table> \
					<div class="dsq-lightbox-switch-auth"><a href="#" onclick="Dsq.Templates.lightboxAuthenticate(' + post_id + ',\'register\'); return false">Register instead</a></div> \
				</div> \
				<div id="dsq-lightbox-errors' + pid + '" class="dsq-lightbox-errors"></div> \
				<div class="dsq-lightbox-submit"> \
					<div class="dsq-lightbox-auth-post"><button type="button" class="dsq-button" onclick="Dsq.Templates.validateAuth(this, ' + post_id + ',\'' + auth_choice + '\')">Login and Post comment</button></div>'
					+ (Dsq.jsonData.forum.allow_anon_post
						? '<div class="dsq-lightbox-auth-skip"><button type="button" class="dsq-button-small" onclick="Dsq.Templates.postComment(' + post_id + ', this, true)">Just post as a Guest</button></div>'
						: '')
				+ '</div> \
				';
				break;
			default:
				break;
		}
		Dsq.Popup.lightbox(body, title, post_id);
		Dsq.$('dsq-field-username' + pid).focus();
	};
	
	this.buttonsToRestore = [];
	this.setLoadingButton = function(btn, post_id) {
		var pid = post_id ? '-' + post_id : '';
		if (btn) {

			var loadingBtn = document.createElement('button');
			loadingBtn.id = btn.id + '-loading';
			loadingBtn.innerHTML = '<img src="http://media.disqus.com/images/loading-lite.gif" alt="" /> ' + Dsq.Strings.JUST_A_MOMENT;
			loadingBtn.className = btn.className + ' dsq-post-loading';
			btn.parentNode.appendChild(loadingBtn);
			btn.style.display = 'none';
			var cancelBtn = Dsq.$('dsq-cancel-button' + pid);
			if(cancelBtn) { cancelBtn.style.display = 'none'; this.buttonsToRestore.push(cancelBtn); }
			this.buttonsToRestore.push(btn);
		} else {

			var buttons = this.buttonsToRestore;
			for(var i = 0; i < buttons.length; i++) {
				buttons[i].style.display = 'inline';
				Dsq.Utils.deleteNode(Dsq.$(buttons[i].id + '-loading'));
			}
		}
		
	};

	this.postComment = function(post_id, el_clicked, force, auth_choice) {
		var append_id = post_id ? '-' + post_id : '';
		var fields = Dsq.Templates.getFormFields(post_id);

		if (Dsq.Templates.validateFields(post_id)) {

			if (!Dsq.jsonData.request.is_authenticated && !force &&
				((!Dsq.Utils.readCookie('skipped_auth') && !disqus_skip_auth && !Dsq.jsonData.forum.disqus_auth_disabled) || !Dsq.jsonData.forum.allow_anon_post)) {
				Dsq.Templates.checkExistingUser(post_id);
				return false;
			}
			var params = [];
			if (!Dsq.jsonData.request.is_authenticated) {
				params.push(fields.name.value,
					fields.email.value,
					fields.website.value);

				if (auth_choice == 'login' || auth_choice == 'register') {
					params.push({
						auth_choice: auth_choice,
						username: fields.username.value,
						password: fields.password.value,
						email: fields.email.value
					});
				} else {
					params.push(null);
				}

				params.push(null /* sharing options */, Dsq.$('dsq-subscribe-on-post' + append_id).value);
			} else {
				var service_checked = function(name) {
					var el = Dsq.$('dsq-sharing-' + name + append_id);
					return (el !== null && el.checked === true) ? '1' : '0';
				};
				params.push(null, null, null, null, {
					tw: service_checked('twitter'),
					fb: service_checked('facebook'),
					tr: service_checked('tumblr'),
					wp: service_checked('wordpress'),
					mt: service_checked('movabletype'),
					tp: service_checked('typepad'),
					yh: service_checked('yahoo')
				});
			}

			var frame = Dsq.frames['reply_' + (post_id ? post_id : 0)];
			frame.post.apply(frame, params);

			if (el_clicked) {
				Dsq.Templates.setLoadingButton(el_clicked, post_id);
			}
			
			if (force) {
				Dsq.Utils.createCookie('skipped_auth', true);	
			}
			
		} else {
			return false;
		}
	};

	this.editComment = function(el_clicked, post_id) {
		var edited_message = Dsq.$('dsq-edit-textarea-' + post_id).value;

		Dsq.Templates.setLoadingButton(el_clicked, post_id);
		Dsq.frames['edit_' + post_id].edit(post_id, edited_message);
	};

	this.toggleEdit = function(post_id) {
		var body = Dsq.$('dsq-comment-body-' + post_id);
		var message = Dsq.$('dsq-comment-message-' + post_id);

		if (!Dsq.Post.stateEditToggled[post_id]) {


			message.style.display = 'none';
			if (Dsq.$('dsq-edit-' + post_id)) {
				Dsq.$('dsq-edit-' + post_id).style.display = 'block';
			} else {

				var edit_area = document.createElement('div');
				edit_area.id = 'dsq-edit-' + post_id;
				edit_area.className = 'dsq-edit dsq-textarea';
				edit_area.innerHTML = ' \
				<div class="dsq-textarea-wrapper"> \
					<textarea class="dsq-edit-textarea" id="dsq-edit-textarea-' + post_id + '">' + message.innerHTML + '</textarea> \
				</div> \
				<div class="dsq-save-edit"> \
					<button type="button" onclick="Dsq.Templates.editComment(this, ' + post_id + ')" class="dsq-button-small">Save Edit</button> \
				</div> \
				<div id="dsq-edit-iframe-' + post_id + '" style="display: none"></div> \
				';

				body.appendChild(edit_area);

				if (!Dsq.frames['edit_' + post_id]) {
					var _meta = Dsq.jsonData.posts[post_id];
					Dsq.frames['edit_' + post_id] = new Dsq.ReplyFrame(Dsq.$('dsq-edit-iframe-' + post_id), post_id);
					Dsq.frames['edit_' + post_id].init();
					Dsq.frames['edit_' + post_id].setState(post_id, _meta.depth);
				}
			}
		} else {

			message.style.display = 'block';
			Dsq.$('dsq-edit-' + post_id).style.display = 'none';
		}
		
		Dsq.Post.stateEditToggled[post_id] = !Dsq.Post.stateEditToggled[post_id];
	};
	
	this.edit = function(el, post_id) {

		Dsq.Templates.toggleEdit(post_id);
	};

	this.toggleReply = function(post_id, button) {
		
		if(!this.stateReplyToggled[post_id]) {

			if (Dsq.$('dsq-reply-post-' + post_id)) {
				Dsq.$('dsq-append-post-' + post_id).style.display = 'block';
			} else {
				Dsq.$('dsq-append-post-' + post_id).innerHTML = Dsq.Templates.postBox(post_id);
				var container = Dsq.$('dsq-textarea-wrapper-' + post_id);
				if (!Dsq.frames['reply_' + post_id] && container) {
					var _meta = Dsq.jsonData.posts[post_id];
					Dsq.frames['reply_' + post_id] = new Dsq.ReplyFrame(container, post_id);
					Dsq.frames['reply_' + post_id].init(function() {

						Dsq.$('dsq-append-post-' + post_id).innerHTML = Dsq.Templates.postBox(post_id, true);
						Dsq.$('dsq-form-area-' + post_id).innerHTML = '';

						var theme = (typeof disqus_frame_theme == 'undefined') ? 'default' : disqus_frame_theme;
						Dsq.Iframes.showReplyIframeInContainer(Dsq.$('dsq-form-area-' + post_id), post_id, {theme: theme});

					});
					Dsq.frames['reply_' + post_id].setState(post_id, _meta.depth);
				}
			}
			Dsq.$('dsq-append-post-' + post_id).className = 'dsq-append-post';
			Dsq.$('dsq-comment-footer-reply-' + post_id).className = 'dsq-comment-footer-reply-active';
			
		} else {

			Dsq.$('dsq-append-post-' + post_id).style.display = 'none';
			Dsq.$('dsq-append-post-' + post_id).className = '';
			Dsq.$('dsq-comment-footer-reply-' + post_id).className = 'dsq-comment-footer-reply';
		}
		
		this.stateReplyToggled[post_id] = !this.stateReplyToggled[post_id];

		if(Dsq.Utils.ie && this.stateReplyToggled[post_id]) {

		}

		Dsq.Events.fire(Dsq.Events.REPLY_IFRAME_TOGGLED, {
			postId: post_id,
			opened: this.stateReplyToggled[post_id]
		});
	};
	
	this.moderateOptions = function(post_id) {
		var _meta = Dsq.jsonData.posts[post_id];
		var userData = Dsq.jsonData['users'][_meta.user_key];
		
		if(!Dsq.jsonData.request.is_moderator && !Dsq.jsonData.request.is_global_moderator) { return false; }

		var html;
		
		html = ' \
		<div class="dsq-moderate-options"> \
		<table>'
		+ (_meta.email ? '<tr><td>Email</td><td>' + _meta.email + '</td></tr>' : '')
		+ (_meta.ip ? '<tr><td>IP address</td><td>' + _meta.ip + '</td></tr>' : '')
		+ '<tr> \
			<td>Actions</td> \
			<td><ul>'
			+ (Dsq.jsonData.request.moderator_can_edit
				? '<li><a href="#" onclick="Dsq.Post.edit(this, ' + post_id + '); Dsq.Popup._closePopup(null, true); return false;">Edit Comment</a></li>'
				: '')
			+ '<li><a href="#" onclick="Dsq.Post.removePost(' + post_id + ', 1); Dsq.Popup._closePopup(null, true); return false;">Delete Comment</a></li> \
			<li><a href="#" onclick="Dsq.Post.reportSpam(' + post_id + '); Dsq.Popup._closePopup(null, true); return false;">Mark Spam</a></li> \
			<li><a href="#" onclick="Dsq.Popup.blacklist(' + post_id + '); return false">Block User</a></li> \
			</ul></td> \
			</table> \
		</div> \
		';
		
		html += '<p>Go to the full <a href="http://disqus.com/comments/moderate/" target="_blank">moderate panel</a> for more options.</p>';
		
		return Dsq.Popup.popModal(html, 'Moderate Options', post_id);
	};
	
	this.placeholder = {
		'class': 'dsq-placeholder',
		'name': Dsq.Strings.NAME,
		'email': Dsq.Strings.EMAIL,
		'website': Dsq.Strings.WEBSITE + ' (' + Dsq.Strings.OPTIONAL.toLowerCase() + ')'
	};
	
	this.handlePlaceholder = function(evt, el, key) {
		var placeholder = Dsq.Templates.placeholder[key];
		var className = Dsq.Templates.placeholder['class'];
		
		switch(evt.type) {
			case 'focus':
				if(el.value == placeholder) {
					el.value = '';
					el.className = '';
				}
				break;

			case 'blur':
				if(el.value == '') {
					el.value = placeholder;
					el.className = className;
				}
				break;
			default:
				break;
		}
	};
	
	this.paginate = function(page, el_clicked) {

		var extra_params = '';

		if(typeof disqus_per_page != 'undefined') {
			extra_params += '&per_page=' + disqus_per_page;
		}
		if(typeof disqus_sort != 'undefined') {
			extra_params += '&sort=' + disqus_sort;
		}

		Dsq.$('dsq-pagination').innerHTML += '<img src="http://media.disqus.com/images/loading-small.gif">';
		
		if(el_clicked) {
			Dsq.Templates.setLoadingButton(el_clicked);
		}
		
		Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/thread.js'
			+ '?slug='	+ 'looking_at_vista'
			+ '&p='		+ page
			+ extra_params);
	};
	
	
	this.rate = function(el, id, vote) {


		if(Dsq.jsonData.request.is_authenticated || Dsq.jsonData.forum.allow_anon_votes) {
			if(vote == 1) {
				Dsq.$('dsq-like-' + id).innerHTML = '<img src="http://media.disqus.com/images/loading-small.gif">';
			}
			Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/vote.js'
				+ '?post_id='    + id
				+ '&vote='        + vote);
		} else {
			Dsq.Popup.login('To rate, please log in');
		}
	};

	this.voted = function(post_id, points, vote) {

		Dsq.$('dsq-like-pts-' + post_id).innerHTML = points + Dsq.Utils.pluralize(points, ' person', ' people') + ' liked this.';

		if(vote) {
			Dsq.$('dsq-like-' + post_id).innerHTML = 'You liked this.&nbsp;&nbsp;';
		}
	};




	this.postComment_onSuccess = function(response, parent_post_id, post_id) {
		var approved = response.message.post_meta.approved;

		if (parent_post_id) {
			Dsq.Post.toggleReply(parent_post_id);
		}

		Dsq.Popup._closePopup(null, true);
		
		if (approved) {
			Dsq.Post.incrementPostCount();
			Dsq.Post.outlineComment(post_id);
		} else {			
			var unapproved_msg = 'Thanks for posting!\
	 Your comment must be approved by a moderator before appearing here.\
			';
			Dsq.Popup.popModal(unapproved_msg, 'Comment awaiting approval', post_id);
		}

		var sharing_results = response.message.sharing_results;
		var sharing_errors = '';
		for (var service in sharing_results) {
			if (sharing_results.hasOwnProperty(service) === true) {
				if (sharing_results[service].error === true) {
					sharing_errors += service + ', ';
				}
			}
		}

		if (sharing_results.facebook && sharing_results.facebook.callback) {
			FB.ensureInit(function() {
				FB.Connect.streamPublish('', sharing_results.facebook.attachment);
			});
		}

		if (sharing_errors !== '') {
			var message = 'Your comment was posted, but there were errors sharing with the following connections: ';
			message += sharing_errors.replace(/,\s$/, '');
			message += '<p><a href="' + Dsq.jsonData.settings.disqus_url + '/profile/connections" target="_blank">Configure your connections here</a></p>'
			Dsq.Popup.popModal(message, 'Sharing options');
		}

		Dsq.Templates.setLoadingButton(false);
	};

	this.postComment_onFailure = function(response, parent_post_id, post_id) {

		Dsq.Templates.setLoadingButton(false);
	};
};




// TODO: It might be faster to use string methods to find all <li (...) </li> blocks and pass to Dsq.PostHandler manually.
Dsq.CommentsHandler = function(str, head, post_id, content, tail, offset, s) {
	var prepend_post = Dsq.Templates.prependPost(post_id);
	var append_post = Dsq.Templates.appendPost(post_id);

	content = content.replace(Dsq.POST_RE, Dsq.PostHandler);
	Dsq.Templates.postLoopCounter++;
	head = Dsq.Templates.Filters.commentContainer(post_id, head);
	return prepend_post + head + content + tail + append_post;
};

Dsq.PostHandler = function(str, h_head, post_id, h_content, h_tail, b_head, b_content, b_tail, offset, s) {
	var prepend_header = Dsq.Templates.postPrependHeader(post_id);
	var append_header = Dsq.Templates.postAppendHeader(post_id);
	var prepend_body = Dsq.Templates.preBody(post_id);
	var append_body = Dsq.Templates.postBody(post_id);
	var append_footer = Dsq.Templates.postFooter(post_id);

	b_content = b_content.replace(Dsq.POST_BODY_RE, Dsq.PostBodyHandler);
	return h_head + prepend_header + h_content + append_header + h_tail + b_head + prepend_body + b_content + append_body + b_tail + append_footer;
};

Dsq.PostBodyHandler = function(str, head, post_id, content, tail, offset, s) {
	content = Dsq.Templates.Filters.commentContent(post_id, content);
	return head + content + tail;
};

Dsq.MediaPostHandler = function(str, args, offset, s) {
	args = args.split(' ');
	if(args[0] == 'seesmic') {
		return '<br />' + Dsq.Templates.mediaSeesmic(args[1], args[2]);
	}
	return '';
};


/**
 * Shorcuts
 */
Dsq.$ = function(element) { return document.getElementById(element); };
Dsq.$b = document.body || document.getElementsByTagName('body')[0];


/**
 * Dsq.Debug: Logging functions.
 */

Dsq.Debug = new function() {this.log=function(s){};this.profile=function(f){if(typeof f == 'function')return f();else return eval(f);};};


/**
 * Dsq.Urls: URL paths
 */
Dsq.Urls = new function() {
	this.LOGIN = '/profile/login/';
	this.LOGOUT = '/logout/';
	this.REPLY = 'http://scobleizer.disqus.com/looking_at_vista/reply.html';
	this.REQUEST_USER_PROFILE = '/AnonymousUser/';
	this.REQUEST_USER_AVATAR = 'http://media.disqus.com/images/noavatar92.png';
};
// Dsq.Urls

/**
 * Dsq.Validators: Validation for form fields
 */
Dsq.Validators = new function() {
	this.VALID_EMAIL_RE = /^[a-z0-9\-\_\+]+(\.[a-z0-9\-\_\+]+)*\@(([a-z0-9\-\_\+]+(\.[a-z0-9\-\_\+]+)*)+\.[a-z]{2,}|([0-9]+\.){3}[0-9]+)$/i;
	this.name = function(name) {
		var error = false;

		if(typeof Dsq.Templates.placeholder !== 'undefined' &&
		   name == Dsq.Templates.placeholder.name) {
			error = true;
		}
		if(name.length <= 1) {
			error = true;
		}

		if(error) {
			return "Please enter a name to comment.";
		} else {
			return true;
		}
	};
	this.email = function(addr) {
		if(Dsq.Validators.VALID_EMAIL_RE.test(addr)) {
			return true;
		} else {
			return "Please enter a valid email to comment.";
		}
	};
	this.url = function(addr) {
		if(!addr || addr.indexOf('.') != -1) {
			return true;
		} else {
			return "Please check your website URL (this field is optional).";
		}
	};

	this.validate = function(bulk_validation, failure_callback) {
		failure_callback = failure_callback || function(e){ alert(e); };

		for(var i = 0; i < bulk_validation.length; i++) {
			v = bulk_validation[i];
			ret = v.validator(v.value);
			if(ret !== true) {
				failure_callback(ret);
				return false;
			}
		}
		return true;
	};
};

/**
 * Dsq.Utils: Generic utility functions.
 */
Dsq.Utils = new function() {
	this.ie = /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
	this.ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;
	this.ie6 = (!window.XMLHttpRequest) ? true: false;
	this.webkit = navigator.userAgent.indexOf('AppleWebKit/') >= 0;
	this.gebiFromElementCollectionCache = {};
	this._styleSheet = null;

	this.gebiFromElement = function(el, id, tag) {
		// This only method only helps IE.
		if(!this.ie) {
			return Dsq.$(id);
		} else {
			var cacheKey = el.id + '-' + tag;
			tag = tag || 'div';
			if(typeof this.gebiFromElementCollectionCache[cacheKey] != 'undefined') {
				collection = this.gebiFromElementCollectionCache[cacheKey];
			} else {
				collection = el.getElementsByTagName(tag);
				this.gebiFromElementCollectionCache[cacheKey] = collection;
			}

			for(var i = 0; i < collection.length; i++) {
				if(collection[i].id == id) {
					return collection[i];
				}
			}
			return null;
		}
	};

	this.execOnReady = function(func) {
		var node = document.createElement('document:ready');
		try {
			node.doScroll('left');
			func();
			node = null;
		} catch(err) {
			setTimeout(function() { Dsq.Utils.execOnReady(func); }, 10);
		}
	};


	// Courtesy of http://www.quirksmode.org/js/cookies.html
	this.createCookie = function(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	};

	this.readCookie = function(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	};

	this.eraseCookie = function(name) {
		Dsq.Utils.createCookie(name,"",-1);
	};

	this.deleteNode = function(node) {
		if(node) {
			this.deleteChildren(node);
			if(typeof node.outerHTML != 'undefined') { node.outerHTML = ''; }
			else if(node.parentNode) { node.parentNode.removeChild(node); }
			delete node;
		}
	};

	this.deleteChildren = function(node) {
		if(node) {
			for(var x = node.childNodes.length-1; x >= 0; x--) {
				var childNode = node.childNodes[x];
				if(childNode.hasChildNodes()) { this.deleteChildren(childNode); }
				if(typeof childNode.outerHTML != 'undefined') { childNode.outerHTML = ''; }
				else node.removeChild(childNode);
				delete childNode;
			}
		}
	};

	this.findPos = function(obj) {
		var curleft = 0;
		var curtop = 0;
		if (obj.offsetParent) {
			do {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
			} while (obj = obj.offsetParent);
		}
		return [curleft,curtop];
	};

	this.getWindowSize = function() {
		var windowWidth = -1;
		var windowHeight = -1;

		if(typeof(window.innerWidth) == 'number') { //Non-IE
			windowWidth = window.innerWidth;
			windowHeight = window.innerHeight;
		} else if(document.documentElement) { // IE 6+ in 'standards compliant mode'
			windowWidth = document.documentElement.clientWidth || document.body.clientWidth;
			windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
		}

		return [windowWidth, windowHeight];
	}

	this.getScrollPos = function() {
		var scrollWidth, scrollTop;

		if(document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollWidth)) {
			scrollWidth = document.documentElement.scrollWidth;
			// IE is weird here.  If no doctype is provided, document.body.scrollTop is 0,
			// otherwise document.documentElement.scrollTop is 0.
			scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
		} else if(document.body.scrollTop && document.body.scrollWidth) {
			scrollWidth = document.body.scrollWidth;
			scrollTop = document.body.scrollTop;
		}

		return [scrollWidth, scrollTop];
	}

	this.addEventListener = function(instance, eventName, listener) {
		var listenerFn = listener;
		if (instance.addEventListener) {
			instance.addEventListener(eventName, listenerFn, false);
		} else if (instance.attachEvent) {
			listenerFn = function() {
				listener(window.event);
			};
			instance.attachEvent("on" + eventName, listenerFn);
		} else {
			throw new Error("Event registration not supported");
		}
		return {
			instance: instance,
			name: eventName,
			listener: listenerFn
		};
	};

	this.removeEventListener = function(event) {
		var instance = event.instance;
		if (instance.removeEventListener) {
			instance.removeEventListener(event.name, event.listener, false);
		} else if (instance.detachEvent) {
			instance.detachEvent("on" + event.name, event.listener);
		}
	};

	this.fixIframesIE = function(id) {
		var disqusThread = Dsq.$(disqus_container_id);
		var iframes = disqusThread.getElementsByTagName('iframe');

		if(id) {
			var container = Dsq.$(id);
		} else {
			var container = Dsq.$('dsq-content');
		}

		for(i = 0; i < iframes.length; i++) {
			if (container) {
				iframes[i].style.width = container.offsetWidth;
			}
		}
	};

	this.getElementsByClassName = function(oElm, strTagName, strClassName) {
	/* Credit: Jonathan Snook [http://www.snook.ca/jonathan], Robert Nyman [http://www.robertnyman.com] */
		var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
		var arrReturnElements = new Array();
		strClassName = strClassName.replace(/\-/g, "\\-");
		var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
		var oElement;
		for(var i = 0; i < arrElements.length; i++) {
			oElement = arrElements[i];
			if(oRegExp.test(oElement.className)) {
				arrReturnElements.push(oElement);
			}
		}
		return (arrReturnElements);
	};

	this.postToUrl = function(url, post_data, opt_redirect) {
		var form = document.createElement('form');
		var iframe_container = document.createElement('div');
		var id = 'dsq-temp-iframe-' + (new Date()).getTime();

		form.method = 'POST';
		form.action = url;
		if (!opt_redirect) {
			form.target = id;
		}
		iframe_container.innerHTML = '<iframe style="display:none" name="' + id + '" id="' + id + '"></iframe>';

		for(var key in post_data) {
			if(post_data.hasOwnProperty(key)) {
				var input = document.createElement('input');
				input.name = key;
				input.type = 'hidden';
				input.value = post_data[key];

				form.appendChild(input);
			}
		}

		Dsq.$b.appendChild(iframe_container);
		Dsq.$b.appendChild(form);
		form.submit();
	};

	// Strips integer id from id of element in the form ('some-id-###')
	this.extractId = function(e) {
		var chunks = e.id.split('-');
		if(chunks.length <= 1) {
			return 0;
		} else {
			var retval = parseInt(chunks[chunks.length-1]);
			return !isNaN(retval) ? retval : null;
		}
	};

	this.getStyle = function(el, styleProp) {
		if(el.currentStyle) {
			var y = el.currentStyle[styleProp];
		} else if(window.getComputedStyle) {
			var y = document.defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);
		}

		if(y == 'transparent' || y == '') {
			this.getStyle(el.parentNode, styleProp);
		} else {
			return y;
		}
	};

	this.execScript = function(url, append_qs, container) {
		var script = document.createElement('script');
		append_qs = typeof append_qs == 'undefined' ? true : append_qs;
		container = container || Dsq.container;

		if(append_qs) {
			var j = (url.indexOf('?') >= 0) ? '&' : '?';
			url += j + (new Date()).getTime();
		}
		script.type = 'text/javascript';
		script.charset = 'UTF-8';
		script.src = url;
		container.appendChild(script);
		return script;
	};

	this.pluralize = function(num, singular, plural) {
		return (num != 1) ? plural || 's' : singular || '';
	};

	this.getRequestParams = function(queryString /* optional */) {
		var pairs, tuple;
		var params = {};

		queryString = queryString || window.location.search.substring(1);
		pairs = queryString.split('&');

		for (var i = 0, pair; pair = pairs[i]; i++) {
			tuple = pair.split('=');
			params[tuple[0]] = (tuple[1] || true);
		}

		return params;
	};

	this.addCssRule = function(selector, styleText, index) {
		var stylesheet;
		index = index || 0;

		if(!this._styleSheet) {
			var styleEl = document.createElement('style');
			document.getElementsByTagName('head')[0].appendChild(styleEl);
			this._styleSheet = styleEl.sheet;
			if(!this._styleSheet) {
				// IE does not like our newly created stylesheet.
				this._styleSheet = document.styleSheets[document.styleSheets.length-1];
			}
		}
		stylesheet = this._styleSheet;

		if(stylesheet.insertRule) {
			var ruleText = selector + ' { ' + styleText + ' }';
			if(index == -1) {
				index = stylesheet.cssRules.length;
			}
			stylesheet.insertRule(ruleText, index);
		} else if(stylesheet.addRule) {
			stylesheet.addRule(selector, styleText, index);
		}
	};

	this.forEachIn = function(obj, callback) {
		for(var key in obj) {
			if(obj.hasOwnProperty(key)) {
				callback(key, obj[key]);
			}
		}
	};

	this._interpolateGlobalContext = {
		// values that get used a lot and are global to the request
		'profile_url': Dsq.Urls.REQUEST_USER_PROFILE,

		'disqus_url': Dsq.jsonData.settings.disqus_url,
		'media_url': Dsq.jsonData.settings.media_url,
		'request_username': Dsq.jsonData.request.username,
		'request_display_username': Dsq.jsonData.request.display_username,
		'forum_name': Dsq.jsonData.forum.name
	};

	this.renderFromContextStack = function(key, contexts) {
		// Returns the first instance of `key` in the array of objects `contexts` or else ''
		for (var i=0; i<contexts.length; i++) {
			if (contexts[i][key] !== undefined) {
				return String(contexts[i][key]);
			}
		}
		throw new Error('key ' + key + ' not found in context');
	};

	var that = this;
	this.interpolate = function(fmt, opt_localContext) {
		// Interpolate `fmt` named-format string with an assumed global context.
		// Based on `interpolate` in django.views.i18n
		var contextStack = [opt_localContext || {}, that._interpolateGlobalContext];
		return fmt.replace(/%\(\w+\)s/g, function(match){
			return that.renderFromContextStack(match.slice(2,-2), contextStack);
		});
	};

	this.stripTags = function(s) {
		// Removes HTML tags from `s`
		return s.replace(/(<([^>]+)>)/g,"");

	};

	this.assert = function(b) {
		if (!b) {
			throw new Error('Assertion error.');
		}
	};

};
// Dsq.Utils

/**
 * Dsq.Popup: Popup helper functions.
 */
Dsq.Popup = new function() {
	this.timeHide = new Array();
	this.timeShow = new Array();
	this.activePopup = {};
	this.profileCache = {};
	this.statusCache = {};

	this.showTimer = function(post_id) {
		// clear the hide timer
		clearTimeout(this.timeHide[post_id]);

		// start the timer
		if(!Dsq.Popup.profileIsOn && !Dsq.Thread.adminIsOn) {
			this.timeShow[post_id] = setTimeout("Dsq.Popup.popProfile(\"" + post_id + "\")", 400);
		}
	};

	this.hideTimer = function(post_id) {
		// clear the show timer
		clearTimeout(this.timeShow[post_id]);
	};

	this.updateProfile = function(username) {
		// Callback from /embed/profile.js
		if (this.statusCache[username]) {
			var statusEl = Dsq.$('dsq-profile-status-' + username);
			statusEl.innerHTML = this.statusCache[username];
			statusEl.style.display = 'block';
		}

		if (this.profileCache[username]) {
			var _cache = this.profileCache[username];

			var _genhtml = function(text) { return '<span><big>' + text + '</big></span>'; };
			var _no_comments = _genhtml(Dsq.FmtStrings.NUMBER_OF_COMMENTS(_cache.comments_count));
			var _no_likes = _genhtml(Dsq.FmtStrings.NUMBER_OF_LIKES(_cache.likes_count));
			var _no_points = _genhtml(Dsq.FmtStrings.NUMBER_OF_POINTS(_cache.points));

			var statsEl = Dsq.$('dsq-popup-profile-user-stats-' + username);
			statsEl.innerHTML = '';

			if (Dsq.jsonData.users[username].registered) {
				statsEl.innerHTML = _no_comments + _no_likes;
			}
			statsEl.innerHTML += _no_points;

			var activeSites = '';
			for (var i = 0; i < _cache.active_sites.length; i++) {
				var site = _cache.active_sites[i];
				activeSites += '<li><a href="' + site.url + '"> \
					<img src="' + site.favicon + '"/ width="16" height="16"/></a>\
					<a href="' + site.url + '">' + site.name + '</a></li>';
			}
			if (activeSites !== '') {
				Dsq.$('dsq-popup-profile-active-sites-' + username).innerHTML = activeSites;
			} else {
				Dsq.$('dsq-popup-profile-active-sites-' + username).innerHTML = 'This site.';
			}

			var moderatedSites = '';
			for (var i = 0; i < _cache.moderated_sites.length; i++) {
				var site = _cache.moderated_sites[i];
				moderatedSites += '<li><a href="' + site.url + '"> \
					<img src="' + site.favicon + '"/ width="16" height="16"/></a>\
					<a href="' + site.url + '">' + site.name + '</a></li>';
			}
			if (moderatedSites !== '') {
				Dsq.$('dsq-popup-profile-moderated-' + username).innerHTML = moderatedSites;
			} else {
				Dsq.$('dsq-popup-profile-moderated-wrapper-' + username).innerHTML = '';
			}
		}

		// Reposition popup after full HTML is rendered
		if(Dsq.Popup.activePopup && Dsq.Popup.activePopup.el) {
			Dsq.Popup.initPopup(Dsq.Popup.activePopup.el, Dsq.Popup.activePopup.id, Dsq.Popup.activePopup.type);
		}

	};

	this.showCookieMsgs = function() {
		var title = '';
		var message = '';
		var numAlerts = 0;

		Dsq.Utils.forEachIn(Dsq.jsonData.cookie_messages, function(k, v) {
			if (!v) return;

			switch(k) {
				// Cookie: Twitter
				case 'post_twitter':
					if (v === 'error') {
						title = 'Twitter Error!';
						message += '<li id="dsq-msg-twitter-error">Oops, we couldn\'t tweet this comment. Please check your <a href="http://disqus.com/account/services">account settings</a>.</li>';
					} else {
						var _msg = v.split(':');
						title = 'Tweeted!';
						message += '<li id="dsq-msg-twitter-success">Your comment was successfully tweeted. <a href="http://twitter.com/' + _msg[0] + '/status/' + _msg[1] + '">Click here to view the tweet</a>.</li>';
					}
					break;
				// Cookie: Unapproved Post
				case 'post_not_approved':
					title = 'Comment awaiting approval by a moderator';
					message += '<li id="dsq-msg-post-not-approved">Your comment must be approved by a moderator before appearing here.</li>';
					break;
				// Cookie: Profile Found
				case 'post_has_profile':
					title = 'Use your existing commenter profile';
					message += '<li id="dsq-msg-post-has-profile">You have just posted your commment as a <span class="dsq-badge-guest">Guest</span>, but you may already have a <span class="logo-disqus">Disqus</span> Profile.<br /><br /><a href="http://disqus.com/claim">Log in and claim this comment!</a></li>';
					break;
				case 'user_created':
					var _data = v.split(':');
					title = 'Profile created!';
					message += '<li id="dsq-msg-user-created">You have just created a <span class="logo-disqus">Disqus</span> Profile, the best way to claim, manage, and track your comments all over the web. \
					<br /><br />A confirmation is being sent to <strong>' + _data[1] + '</strong>. Please check for this email in order to verify your profile. \
					<ul class="dsq-list-tick"> \
						<li>Your username is <strong>' + _data[0] +'</strong>. <a href="http://disqus.com/people/' + _data[0] + '/" target="_blank">Click here to view your public profile</a>.</li> \
						<li>Be sure to set your profile picture, as well as connect your <span class="dsq-badge-facebook">Facebook</span> and <span class="dsq-badge-twitter">Twitter</span> accounts. <a href="http://disqus.com/account/" target="_blank">Click here for account settings</a>.</li> \
					</ul> \
					</li>'
					break;
				default:
					break;
			}
			numAlerts++;
		});

		if(numAlerts > 1) {
			message = '<ul class="dsq-list-bluebullet">' + message;
			message += '</ul>';
			title = 'Thanks for posting!';
		}
		if(numAlerts > 0) {
			if(typeof(disqus_cookie_msgs) == 'function') {
				disqus_cookie_msgs(message, title);
			} else {
				Dsq.Popup.popModal(message, title);
			}
		}
	};

	this.helpBadges = function(post_id) {
		var html = ' \
			<ul class="dsq-popup-help"> \
				<li><span class="dsq-badge dsq-badge-verified">Verified</span> has a <span class="logo-disqus">Disqus</span> Profile with a confirmed email address.</li> \
				<li><span class="dsq-badge dsq-badge-registered">Registered</span> has a <span class="logo-disqus">Disqus</span> Profile, but has not yet confirmed his or her email address.</li> \
				<li><span class="dsq-badge dsq-badge-guest">Guest</span> is not logged in with any account and has not claimed his or her comments.</li> \
				<li class="dsq-help-otheraccts">Other accounts</li> \
				<li><span class="dsq-badge dsq-badge-facebook">Facebook</span> is using his or her Facebook profile via Facebook Connect.</li> \
				<li><span class="dsq-badge dsq-badge-twitter">Twitter</span> is using his or her Twitter profile via Twitter Sign-in.</li> \
				<li><span class="dsq-badge dsq-badge-openid">OpenID</span> is using his or her OpenID.</li> \
			</ul> \
		';

		this.popModal(html, 'Help: Types of Commenters', post_id);
		return;
	};

	this.permalink = function(post_id) {
		var header = 'Link to this comment';
		var body = '<strong>You are anchored to</strong>:<br />' + document.location.protocol + '//' + document.location.host + document.location.pathname + document.location.search + '#comment-' + post_id;

		this.popModal(body, header, post_id);
	};

	this.login = function(header, body) {
		var h = header || 'Login or Register';
		var b = body || '';
		b += Dsq.Templates.frameLogin({id: 'dsq-popup-login'});
		b += '</iframe>'; // HACK: Sometimes there is something funky with the IFRAME SRC that causes no end tag
		this.popModal(b, h, null, true, 'dsq-popup-login');
	};

	this.blacklist = function(id) {
		var _meta = Dsq.jsonData.posts[id];
		var userData = Dsq.jsonData['users'][_meta.user_key];
		var title = 'Add to Blacklist';
		var message = ' \
		Adding this person to the blacklist will block him or her from commenting on this site. Check the following types that you would like to add to the blacklist:'
		+ (userData['registered'] ?
			'<div class="dsq-blacklist-option"> \
				<input id="dsq-blacklist-username" type="checkbox" checked> \
				<label for="dsq-blacklist-username"><strong>Username</strong>: ' + userData['username'] + '</label> \
			</div>'
			: '')
		+ (_meta.email ?
			'<div class="dsq-blacklist-option"> \
				<input id="dsq-blacklist-email" type="checkbox" checked> \
				<label for="dsq-blacklist-email"><strong>Email address</strong>: ' + _meta.email + '</label> \
			</div>'
			: '')
		+ '<div class="dsq-blacklist-option"> \
			<input id="dsq-blacklist-ip" type="checkbox" onclick="Dsq.$(\'dsq-blacklist-ip-warning\').style.display=\'block\'"> \
			<label for="dsq-blacklist-ip"><strong>IP address</strong>: ' + _meta.ip + '</label> \
		</div> \
		';

		message += ' \
			<p id="dsq-blacklist-ip-warning" style="display:none">	\
				Note: Blocking this person\'s IP address may also unintentionally prevent others, who share his/her IP address, from commenting on this site. \
				This may include people who are sharing the same computer, living in the same house, or using the same Internet provider. Only block an IP address as a last resort. \
			</p> \
		';

		message += ' \
			<p style="text-align:center"><button type="button" onclick="Dsq.Post.blockUser(' + id + '); this.disabled=true; this.innerHTML=\'Just one moment...\'">Add to Blacklist</button></p> \
		';

		Dsq.Popup.popModal(message, title);
	};

	this.remoteAccountSettings = function() {
		var body = '';
		// Set up IFrame.
		var params = {};
		var base_url = 'http://disqus.com/forums/scobleizer/_auth/embed/remote_settings/';
		var attributes = {id: 'dsq-popup-account-settings'};
		if (typeof disqus_frame_theme != 'undefined') {
			params['theme'] = disqus_frame_theme;
		}

		body = Dsq.Templates._frameGeneric(base_url, params, attributes);
		this.popModal(body, 'Account Settings', null, true, 'dsq-popup-account-settings');
	};

	this.popModal = function(message, title, post_id, use_listener, extra_classes) {
		var container = document.createElement('div');
		var header, body;

		Dsq.Popup._closePopup(null, true);

		if(typeof(title) == 'undefined') { title = ''; }
		if(typeof(use_listener) == 'undefined') { use_listener = true; }

		if(post_id) {
			container.id = 'dsq-popup-message-' + post_id;
		} else {
			container.id = 'dsq-popup-message';
		}

		header = title;
		body = message;

		container.innerHTML = Dsq.Templates.popupModal(header, body);
		Dsq.Popup.initPopup(container, post_id, 'message', extra_classes);
		if(use_listener) {
			Dsq.Popup.popupListener = Dsq.Utils.addEventListener(document, 'mouseup', Dsq.Popup._closePopup);
		}
	};

	this.popAlert = this.popModal;

	this.loading = function(post_id) {
		var title = Dsq.Strings.JUST_A_MOMENT;
		var body = '<div style="text-align:center; padding: 5px 0 10px 0"><img src="http://media.disqus.com/images/loading.gif" alt="" /></div>'
		Dsq.Popup.lightbox(body, title, post_id);
	};

	this.lightbox = function(message, title, post_id) {
		// Wraps Dsq.Popup.popModal

		var overlay = document.createElement('div');
		overlay.id = 'dsq-overlay';
		overlay.className = 'dsq-overlay';
		Dsq.$b.appendChild(overlay);
		
		Dsq.Popup.popModal(message, title, post_id, false, 'dsq-lightbox');
	};

	this.popProfile = function(post_id, userKey) {
		var post = Dsq.jsonData['posts'][post_id];
		if (post && post.has_been_anonymized) {
			Dsq.Popup.popModal('This message was anonymized by its previous owner.', 'Anonymized', post_id);
			return;
		}

		if(post_id) {
			userKey = Dsq.jsonData['posts'][post_id].user_key;	
		}
		var userData = Dsq.jsonData['users'][userKey];
		var elId = 'dsq-popup-profile-' + userKey;
		var container = document.createElement('div');

		if(this.activePopup.el) {
			this._closePopup(null, true);
			if(this.activePopup.linkClicked) {
				this.activePopup.linkClicked = false;
				return;
			}
		}

		container.id = elId;
		container.innerHTML = Dsq.Templates.popupProfile(userKey);

		this.initPopup(container, post_id, 'profile');
		this.popupListener = Dsq.Utils.addEventListener(document, 'mouseup', this._closePopup);

		if(!this.profileCache[userKey]) {
			Dsq.Utils.execScript('http://disqus.com/embed/profile.js'
				+ '?username=' + userKey
				+ '&anon=' + (userData['registered'] ? 0 : 1)
				+ '&f=' + Dsq.jsonData['request'].forum);
		} else {
			this.updateProfile(userKey);
		}
	};

	this._closePopup = function(e, force) {
		var activePopup = Dsq.Popup.activePopup.el;
		var id = Dsq.Popup.activePopup.id;
		var link = 'dsq-avatar-' + id; // HACK: Specific to profile toggle target

		// HACK: This event should be gone if there is no active popup.
		if(!activePopup) {
			return;
		}
		if(force || !Dsq.Popup.isClicked(e, activePopup.id)) {
			// TODO: This is breaking iE?
			if(Dsq.Popup.popupListener) {
				Dsq.Utils.removeEventListener(Dsq.Popup.popupListener);
			}
			
			// Kill overlay
			var overlay = Dsq.$('dsq-overlay');
			if(overlay) { Dsq.Utils.deleteNode(overlay); }
			
			try {
				Dsq.Utils.deleteNode(activePopup);
			} catch(e) {
				// HACK: IE6 throws an error when using deleteNode() with a node containing a <table> in the html.
				activePopup.parentNode.removeChild(activePopup);
			}
			Dsq.Popup.activePopup = {};
		}

		if(!force && Dsq.Popup.isClicked(e, link)) {
 			Dsq.Popup.activePopup.linkClicked = true;
		}

	};

	this.initPopup = function(popup, post_id, type, extra_classes) {
		popup.className = 'dsq-popup dsq-popup-' + type + ' ' + (extra_classes ? extra_classes : '');
		if(Dsq.Utils.ie6 || Dsq.Utils.ie7) {
			// HACK: We can't modify the body before it's ready, so we need
			//       to use an IE-safe "DOMReady" workaround before loading
			//       our popup.
			Dsq.Utils.execOnReady(function() {Dsq.$b.appendChild(popup); });
		} else {
			Dsq.$b.appendChild(popup);
		}

		popup.style.display = 'block';

		var xPos = (Dsq.Utils.getWindowSize()[0] - popup.offsetWidth) / 2;
		var yPos = (Dsq.Utils.getWindowSize()[1] - popup.offsetHeight) / 2;

		if(Dsq.Utils.ie6) {
			yPos += Dsq.Utils.getScrollPos()[1];
		}

		popup.style.left = xPos + 'px';
		popup.style.top = yPos + 'px';

		Dsq.Popup.activePopup = {
			'el' : popup,
			'id' : post_id,
			'type': type,
			'linkClicked' : false
		};
	};

	this.isClicked = function(e, id) {
		var t = e.target || e.srcElement;
		while(t && t.parentNode) {
			if(t.id == id) {
				return true;
			}

			t = t.parentNode;
		}
		return false;
	};
};
// Dsq.Popup

/**
 * Dsq.Templates
 */
Dsq.Templates = new function() {
	/*
	 * Counter keeping track of the number of posts iterated over.
	 */
	this.postLoopCounter = 0;
	this.filters = {};
	this.addPostContainer = 'dsq-post-add';
	this.textareaContainer = 'dsq-post-add';

	this.registerTemplate = function(name, func) {
		this['$$_' + name] = func;

		if(typeof DsqLocal.Filters != 'undefined'
		&& typeof DsqLocal.Filters[name] == 'function') {
			// Push filters to this.filters to unify code.
			this.filters[name] = this.filters[name] || [];
			this.filters[name].push(DsqLocal.Filters[name]);
		}

		this[name] = function() {
			var ret;

			if(typeof DsqLocal.Templates != 'undefined'
			&& typeof DsqLocal.Templates[name] == 'function') {
				ret = DsqLocal.Templates[name].apply(this, arguments);
			}

			if(ret === undefined) {
				ret = this['$$_' + name].apply(this, arguments);
			}

			if(this.filters[name]) {
				var args = [ret];

				args.push.apply(args, arguments);
				for(var i = 0; i < this.filters[name].length; i++) {
					ret = this.filters[name][i].apply(this, args);
				}
			}

			return ret;
		};
	};

	this.registerFilter = function(name, func) {
		this.filters[name] = this.filters[name] || [];
		this.filters[name].push(func);
	};

	/**
	 * Dsq.Templates.Filters
	 */
	this.Filters = new function() {
		this.commentContainer = function(post_id, s) {
			var _meta = Dsq.jsonData.posts[post_id];
			var classes = [];
			if(Dsq.jsonData.request.page > 1) {
				classes.push('dsq-append');
			}

			//
			// Extra classes used for custom themes
			//

			if(_meta.depth) {
				classes.push('dsq-comment-child', 'dsq-depth-' + _meta.depth, 'dsq-parent-is-' + _meta.parent_post_id);
			}


			//

			if(_meta.author_is_creator) {
				// TODO: We need to deprecate the "special" class since it is not properly prefixed.
				classes.push('special', 'dsq-special');
			}
			if(_meta.author_is_moderator) {
				classes.push('dsq-moderator');
			}
			classes.push(['dsq-odd', 'dsq-even'][Dsq.Templates.postLoopCounter % 2]);

			s = s.substring(0, s.lastIndexOf('>'));
			return s + ' class="dsq-comment ' + classes.join(' ') + '" style="margin-left:' + _meta.depth*30 + 'px">';
		};

		this.commentContent = function(post_id, s) {
			var _meta = Dsq.jsonData.posts[post_id];
			if (_meta.killed) {
				return '<em>Comment removed.</em>';
			} else if (!_meta.approved) {
				return '<em>This comment was flagged for review.</em>';
			}

			s = s.replace(Dsq.MEDIA_POST_RE, Dsq.MediaPostHandler);
			return s;
		};
	};

	//
	// Thread
	//
	// TODO: These need to be stripped of all Django template tags.

	this.authPost = function() {
		if (!Dsq.jsonData.context.show_reply) {
			return '';
		}
		var result = [];
		result = result.concat([
				'<div id="dsq-auth"',
						Dsq.jsonData.integration.reply_position ? 'class="dsq-auth-bottom"' : '',
						'>',
					'<div class="dsq-by">',
						'<a href="http://disqus.com" target="_blank">',
							(Dsq.jsonData.integration.disqus_logo ?
								Dsq.Utils.interpolate('<img src="%(media_url)s/images/embed/by-disqus.png" alt="discussion by DISQUS">') :
								Dsq.Utils.interpolate('<img src="%(media_url)s/images/embed/dsq-button-120x19.png" alt="discussion by DISQUS">')
							),
						'</a>',
					'</div>',
					'<div class="dsq-auth-header">',
						'<h3 id="dsq-add-new-comment" class="dsq-h3-addcomment">',
								Dsq.Strings.ADD_NEW_COMMENT,
						'</h3>',
						'<div id="dsq-login">',
						(!Dsq.jsonData.request.is_authenticated && Dsq.jsonData.forum.allow_anon_post
								? '<p class="dsq-login-message" id="dsq-login-message">You are commenting as a <a class="dsq-help" title="Click for more information" href="#" onclick="Dsq.Popup.helpBadges(); return false">Guest</a>. You may select one to log into:</p>'
								: '')
		]);
		if (!Dsq.jsonData.request.is_authenticated) {
			result = result.concat([
							Dsq.Utils.interpolate(
								'<a id="dsq-login-toggle" href="%(disqus_url)s%(login_url)s?next=article:%(thread_id)s" onclick="Dsq.Popup.login(); return false"><img class="dsq-login-icon" src="%(media_url)s/images/dsq-profile-btn.png" title="%(log_into)s" alt="%(log_into)s"/></a>',
								{login_url: Dsq.Urls.LOGIN, thread_id: Dsq.jsonData.thread.id, log_into: Dsq.Strings.LOG_INTO_DISQUS}
								),
							'&nbsp; ',
							(Dsq.jsonData.context.use_fb_connect ?
								'<div id="dsq-fbc-login" onlogin="DisqusFbcParentController.onLogin()" size="medium" background="light" length="short" style="display:inline; margin-right:7px"></div>' :
								''
							),
							(Dsq.jsonData.context.use_twitter_signin ?
								Dsq.Utils.interpolate(
									'<div id="dsq-twitter-login" class="dsq-twitter-login" onclick="Dsq.Twitter.startTwitterConnect();" style="display:inline; cursor: pointer"><img src="%(media_url)s/images/twitter-signin-short.png" style="margin-right:7px" /></div>', {}) : ''),
							(Dsq.jsonData.context.use_openid ?
								Dsq.Utils.interpolate(
									'<div id="dsq-openid-login" class="dsq-openid-login" onclick="Dsq.OpenID.requestURL();" style="display:inline; cursor:pointer;"><img src="%(media_url)s/images/openid-login-button.png"/></div>', {}
								) : '')
			]);
		}
		result = result.concat([
						'</div>', // dsq-login
					'</div>', // dsq-auth-header
					'<div id="dsq-authenticated" class="dsq-authenticated" ',
						Dsq.jsonData.request.is_authenticated ? 'style="display:block"' : '',
						'>',
						'<div class="dsq-authenticated-pic">',
								Dsq.Utils.interpolate('<a href="%(url)s" title="%(request_display_username)s">' +
																			'<img class="dsq-post-avatar" src="%(avatar_url)s" alt="" /></a>',
																			{avatar_url: Dsq.Urls.REQUEST_USER_AVATAR,
																			url: (Dsq.jsonData.request.is_remote
																					 ? Dsq.jsonData.request.url
																					 : Dsq.jsonData.settings.disqus_url + Dsq.Urls.REQUEST_USER_PROFILE) }),
						'</div>',
						'<div class="dsq-authenticated-info">',
							'<ul>',
								'<li>',
									(Dsq.jsonData.request.is_remote
										? Dsq.FmtStrings.LOGGED_IN_AS(
												Dsq.Utils.interpolate('<a href="%(url)s" title="%(request_display_username)s">%(request_display_username)s</a>', {url:Dsq.jsonData.request.url})
										  )
										: Dsq.FmtStrings.LOGGED_IN_AS(
												Dsq.Utils.interpolate('<a href="%(disqus_url)s%(profile_url)s" title="%(request_display_username)s">%(request_display_username)s</a>')
											)
									),
								'</li>',
								'<li class="logout">',
									(!Dsq.jsonData.request.is_remote
										? Dsq.Utils.interpolate('<img class="dsq-login-icon" src="%(media_url)s/images/dsqicon12.png" alt="%(logged_in_as)s"/>&nbsp',
											{logged_in_as: Dsq.FmtStrings.LOGGED_IN_AS(Dsq.jsonData.request.display_username)})
										: ''),

									(!Dsq.jsonData.request.is_remote
										? Dsq.Utils.interpolate('<a href="%(disqus_url)s%(logout_url)s?ctkn=%(csrf_token)s" title="%(logout_from_disqus)s">',
											{logout_url: Dsq.Urls.LOGOUT, csrf_token: Dsq.CSRF_TOKEN, logout_from_disqus: Dsq.FmtStrings.LOGOUT_FROM('DISQUS')})
										: ((Dsq.jsonData.request.remote_domain == 'twitter')
												? Dsq.Utils.interpolate('using Twitter (<a href="%(disqus_url)s%(logout_url)s?ctkn=%(csrf_token)s" title="Logout">Logout</a>)',
												 {logout_url: Dsq.Urls.LOGOUT, csrf_token: Dsq.CSRF_TOKEN})
												: ((Dsq.jsonData.request.remote_domain == 'openid')
													 ? Dsq.Utils.interpolate('using OpenID (<a href="%(disqus_url)s%(logout_url)s?ctkn=%(csrf_token)s" title="Logout">Logout</a>)',
													 {logout_url: Dsq.Urls.LOGOUT, csrf_token: Dsq.CSRF_TOKEN})
													 : ''
													)
											)
									),

									(!Dsq.jsonData.request.is_remote ? Dsq.FmtStrings.LOGOUT_FROM('<span class="logo-disqus">DISQUS</span>') : ''),
									'</a>',
								'</li>',
							'</ul>',
						'</div>',
					'</div>'
		]);
		if (Dsq.jsonData.context.use_fb_connect) {
			result = result.concat([
					'<div id="dsq-fbc-authenticated" class="dsq-authenticated">',
						'<div id="dsq-fbc-profilepic" class="dsq-authenticated-pic" uid="loggedinuser" type="FB.XFBML.ProfilePic" size="square" facebook-logo="true"></div>',
						'<div class="dsq-authenticated-info">',
							'<ul>',
								'<li>',
									'Logged in as <span id="dsq-fbc-name" uid="loggedinuser" type="FB.XFBML.Name" linked="true" useyou="false"></span>',
								'</li>',
								'<li class="logout">using Facebook Connect <a href="#" onclick="javascript:DisqusFbcParentController.logout();return false;">(Logout)</a></li>',
							'</ul>',
						'</div>',
					'</div>'
			]);
		}
		result = result.concat([
				'</div>', // dsq-auth
				'<div id="dsq-toolbar-items">',
				'</div>'
		]);
		result = result.concat([
					//
					//
					//
				((!Dsq.jsonData.forum.allow_anon_post && !Dsq.jsonData.request.is_authenticated) ?
					// Needs to be translated:
					('<p id="dsq-no-anon-msg">Required: Please log into <span class="logo-disqus">Disqus</span> ' +
					(Dsq.jsonData.context.use_fb_connect ? 'or connect with Facebook ' : '') +
					(Dsq.jsonData.context.use_twitter_signin ? 'or sign in with Twitter ' : '') +
					(Dsq.jsonData.context.use_openid ? 'or sign in using OpenID ' : '') +
					Dsq.Utils.interpolate('to comment on <strong>%(forum_name)s</strong>.</p>')) :
					''
				),
				'<div id="dsq-post-add"></div>',
				'<div style="margin:10px 0">',
				((Dsq.jsonData.forum.use_media) ?
						'<a href="#" id="dsq-media-link" onclick="Dsq.Post.showMenu(this, false, \'media\'); return false">' + Dsq.Strings.USE_MEDIA + ' <small>&#9660;</small></a>' :
						''),
				'</div>'
		]);
		return result.join('');
	};


	this.header = function() {

		var html = '\<h3 id="dsq-comments-count" class="dsq-h3-commentcount">\
	 <span id="dsq-num-posts">74</span> Comments\
	 &nbsp;\
	 <span class="dsq-item-feed">\
	 <a href="http://scobleizer.disqus.com/looking_at_vista/latest.rss"><img src="http://media.disqus.com/images/embed/bullet-feed.png"></a>\
	 </span>\
	 </h3>\
	 <div id="dsq-options" style="margin:15px 0">\
	 <span class="dsq-item-sort">\
	 Sort by\
	 <select id="dsq-sort-select" onchange="Dsq.Thread.sortBy(this.value);">\
	 <option value="hot" selected="selected">Popular now</option>\
	 <option value="best" >Best Rating</option>\
	 <option value="newest" >Newest first</option>\
	 <option value="oldest" >Oldest first</option>\
	 </select>\
	 &nbsp;\
	 </span>\
	 <span class="dsq-item-cp"><a href="http://scobleizer.disqus.com/looking_at_vista/">Community Page</a>&nbsp;&nbsp;&nbsp;</span>\
	 <span class="dsq-item-subscribe">\
	 <img src="http://media.disqus.com/images/embed/email.png" style="width:12px;height:12px;vertical-align:middle">\
	 <span id="dsq-subscribe">\
	 <a href="#" onclick="Dsq.Thread.subscribe(1); return false">Subscribe by email</a>\
	 </span>\
	 </span>\
	 </div>\
	 <div id="dsq-alerts">\
	 <p>Comments for this page are closed.</p>\
	 </div>\
		';

		

		
		if (Dsq.jsonData.request.is_moderator) { 
			html = ' \
			<div class="dsq-alert-message dsq-upgrade-message"> \
				<strong>Disqus upgrade available.</strong> Hi ' + Dsq.jsonData.request.display_username + ', this message is being displayed to you because you are a moderator of this site. <a href="#" onclick="Dsq.$(\'dsq-upgrade-message\').style.display=\'block\';this.style.display=\'none\';return false">Click here for details.</a> \
				<div style="display:none; margin-top:10px;" id="dsq-upgrade-message"> \
					A new theme is available with added features. <a href="http://disqus.com/comments/settings/' + Dsq.jsonData.forum.url + '/?p=customize">To change your theme, click here</a> and choose the theme Narcissus. \
					If you do not upgrade, you are missing out on features such as: real-time commenting, new sign-in integrations, and an upgrade interface. \
					<strong>This message will automatically go away in one week.</strong> \
				</div> \
			</div> \
			' + html; 
		}
		return html;
	};

	this.footer = function() {
		var html = Dsq.Templates.pagination();

		
			html += Dsq.Templates.authPost();
		

		html += Dsq.Templates.reactions();

		
			html += Dsq.Templates.trackbacks();
		

		return html;
	};

	this.pagination = function() {
		var html = '';
		
		if (Dsq.$('dsq-pagination')) { Dsq.$('dsq-pagination').innerHTML = ''; }
		if (!Dsq.jsonData.thread.paginate) { return ''; }

		//
		// TODO: num_paginator still uses the template tag for pagination, 
		// 		while append_paginator does it all in JavaScript.
		//		This should all be in JavaScript.
		//

		if (Dsq.jsonData.thread.num_pages > 1 && Dsq.jsonData.request.page < Dsq.jsonData.thread.num_pages) {
			html = ' \<a class="dsq-paginate-append-text" href="#" onclick="Dsq.Thread.paginate(Dsq.jsonData.request.page + 1, this); return false">Show more comments...</a>\
	 <button type="button" class="dsq-button-small dsq-paginate-append-button" onclick="Dsq.Thread.paginate(Dsq.jsonData.request.page + 1, this);">Load more comments</button>\
			';
		}
		
		if (Dsq.$('dsq-pagination')) {
			Dsq.$('dsq-pagination').innerHTML = html;
			return '';
		} else {
			return '<div id="dsq-pagination" class="dsq-pagination">' + html + '</div>';
		}
	};

	this.trackbacks = function() {
		var html = '';

		if(typeof DsqLocal != 'undefined' && DsqLocal.trackback_url && DsqLocal.trackbacks) {
			var trackbacks = DsqLocal.trackbacks;
			var trackback_url = DsqLocal.trackback_url;
		} else {
			var trackbacks = [
			
			
			];
			var trackback_url = 'http://scobleizer.disqus.com/looking_at_vista/trackback/';
		}

		html += '<div class="dsq-item-trackback">Trackback URL&nbsp;&nbsp;<input class="dsq-trackback-url" onclick="this.select()" readonly="true" value="' + trackback_url + '"></div>';

		if(trackbacks.length) {
			html += '<ul id="dsq-references">'
			for(var i = 0; i < trackbacks.length; i++) {
				var trackback = trackbacks[i];
				html += '<li><cite><a href="' + trackback.author_url + '" rel="nofollow">' + trackback.author_name + '</a></cite> \
						<p class="dsq-meta">' + trackback.date + '</p> \
						<p class="dsq-content">' + trackback.excerpt + '</p></li>';
			}
			html += '</ul>';
			html = '<h3 class="dsq-h3-trackbacks">Trackbacks</h3>' + html;
		}

		return html;
	}

	this.showRetweets = function(id, limit, element_id /* Optional */) {
		var source, html = '';

		for (var i = 0, reaction; reaction = Dsq.jsonData.reactions[i]; i++) {
			if (reaction.id === id) {
				source = reaction.retweets;
			}
		}

		if (source) {
			if (limit === 0) {
				limit = source.length;
			}

			for (var j = 0; j < limit; j++) {
				var rt = source[j];
				html += '<a href="' + rt.url + '">' + rt.author_name + '</a>'	+ ((j === (limit - 1)) ? '.' : ', ');
			}
		}

		if (element_id === undefined) {
			return html;
		}

		var element = document.getElementById(element_id);
		element.innerHTML = html;
		return element;
	};

	this.showMoreReactions = function(reactions, has_more, start, limit) {
		var link = document.getElementById('dsq-show-more-reactions');
		var container = link.parentNode;
		container.removeChild(link);

		for (var i = 0, reaction; reaction = reactions[i]; i++) {
			var el = Dsq.Templates.generateReactionHTML(reaction);
			if (el) {
				container.innerHTML += el;
			}
		}

		if (has_more) {
			var d = Dsq.jsonData.settings.disqus_url;
			var f = Dsq.jsonData.forum.url;
			var t = Dsq.jsonData.thread.id;
			var s = start;
			var l = limit;

			var handler = 'Dsq.Utils.execScript(\'' + d + '/forums/' + f + '/more_reactions.js?t=' + t + '&s=' + s + '&l=' + l + '\', true); return false;';
			container.innerHTML += '<li id="dsq-show-more-reactions"><a href="#" onclick="' + handler + '">Show more reactions</a></li>';
		}
	};

	this.generateReactionHTML = function(reaction) {
		if (reaction.body === null || reaction.body == '') {
			return;
		}

		if (reaction.author_name === '') {
			reaction.author_name = '&nbsp;';
		}

		if (reaction.url === '') {
			reaction.url = reaction.get_service_url;
		}

		/* Reaction HTML begins */
		var item = '<li class="dsq-reaction" id="dsq-reaction-' + reaction.id + '">'
			+ '<div class="dsq-reaction-header">'
			+ '<div class="dsq-header-avatar">';

		if (reaction.author_url && reaction.author_url !== '') {
			item += '<a target="_blank" href="' + reaction.author_url +'">';
		} else {
			item += '<a target="_blank" href="#" onclick="return false;">';
		}

		if (reaction.avatar_url && reaction.avatar_url !== '') {
			item += '<img src="' + reaction.avatar_url + '"/>';
		} else {
			item += '<img src="' + Dsq.jsonData.media_url + '/images/noavatar32.png"/>';
		}

		var service_icon = (reaction.get_service_name == 'trackback' || reaction.get_service_name == 'pingback' ? 'rss' : reaction.get_service_name.replace(' ', ''));
		item += '<img class="dsq-service-icon" src="' + Dsq.jsonData.media_url + '/images/reactions/services/' + service_icon + '.png"/>'
			+ '</a></div>'
			+ '<cite><span>' + reaction.author_name + '</span></cite>'
			+ '<span class="dsq-header-meta"><a class="dsq-header-time">' + reaction.date_created + '</a></span>'
			+ '</div><div class="dsq-reaction-body">'
			+ '<div class="dsq-reaction-message">' + reaction.body + '</div>'
			+ '<div class="dsq-reaction-footer">From <a class="dsq-service-name" target="_blank" href="' + reaction.url + '">' + reaction.get_service_name + '</a> '
			+ 'via <a href="' + reaction.source_url + '">' + (reaction.source == 'backtype' ? 'BackType' : 'UberVU') + '</a>'
			+ (Dsq.jsonData.request.is_moderator || Dsq.jsonData.request.is_global_moderator ? '&nbsp;&bull;&nbsp;<a class="dsq-hide-reaction" href="#" onclick="Dsq.Reaction.hide(' + reaction.id + '); return false;">Hide</a>' : '') + '</div></div>';

		if(reaction.retweets) {
			var num_retweets = reaction.retweets.length;
			if (num_retweets > 0) {
				item += '<div class="dsq-reaction-retweets">';
				if (num_retweets == 1) {
					item += 'One more retweet from <a href="' + reaction.retweets[0].url + '">'  + reaction.retweets[0].author_name + '</a>';
				} else {
					item += (num_retweets + ' more retweets from ');

					item += '<span id="dsq-reaction-retweets-' + reaction.id + '">';
					var n_tweets = (num_retweets > 15) ? 15 : num_retweets;
					item += Dsq.Templates.showRetweets(reaction.id, n_tweets);

					if (n_tweets != num_retweets) {
						item += '</span> <a onclick="Dsq.Templates.showRetweets(' + reaction.id + ', 0, \'dsq-reaction-retweets-' + reaction.id + '\');'
							+ 'this.parentNode.removeChild(this); return false;" href="#">Show all</a>';
					}
				}
				item += '</div>';
			}
		}

		item += '</li>'; /* Reaction HTML ends */
		return item;
	};

	this.reactions = function() {
		var html, reaction;

		if (Dsq.jsonData.reactions === undefined || Dsq.jsonData.reactions.length === 0) {
			return '';
		}

		html = '';
		for (var i = 0; reaction = Dsq.jsonData.reactions[i]; i++) {
			var item = Dsq.Templates.generateReactionHTML(reaction);
			if (item) {
				html += item;
			}
		}

		if (Dsq.jsonData.has_more_reactions) {
			var d = Dsq.jsonData.settings.disqus_url;
			var f = Dsq.jsonData.forum.url;
			var t = Dsq.jsonData.thread.id;
			var s = Dsq.jsonData.reactions_start;
			var l = Dsq.jsonData.reactions_limit;

			var handler = 'Dsq.Utils.execScript(\'' + d + '/forums/' + f + '/more_reactions.js?t=' + t + '&s=' + s + '&l=' + l + '\', true); return false;';
			html += '<li id="dsq-show-more-reactions"><a href="#" onclick="' + handler + '">Show more reactions</a></li>';
		}

		return '<h3 class="dsq-h3-reactions">Reactions</h3><ul id="dsq-reactions" class="dsq-reactions">' + html + '</ul>';
	};
	
	this.missingPermissions = function() {
		return '	<p>Comments for this page are closed.</p>\n';
	};

	//
	// Post
	//

	this.prependPost = function(post_id) {
		var html = '<div id="comment-' + post_id + '"></div>';
		return html;
	};

	this.appendPost = function(post_id) {
		var html = '<div id="dsq-comment-reply-' + post_id + '"></div>';
		return html;
	};

	this.postPrependHeader = function(post_id) {
		var _meta = Dsq.jsonData.posts[post_id];
		var userData = Dsq.jsonData['users'][_meta.user_key];

		var _includeServices = function() {
			var userServices = Dsq.Post.getUserServices(null, post_id);
			var html = '';
			var hiddenThreshold = 3; // Define # of services to show before stuffing them in hidden div

			for(var i = 0; i < userServices.length; i++) {
				html +=
				(i == hiddenThreshold
					? '<li id="dsq-drop-hidden-' + post_id +'" class="dsq-drop-hidden"><ul>'
					: '')
				+ '<li class="dsq-drop-services"> \
					<a class="dsq-service-' + userServices[i].name.toLowerCase() + '" href="' + userServices[i].url + '" target="_blank"> \
						<img src="' + Dsq.jsonData.media_url + '/images/embed/services/' + userServices[i].name.toLowerCase() + '.png" alt="' + userServices[i].name.toLowerCase() + '">'
					+ userServices[i].name
					+ '</a> \
				</li>';
			}

			if(i >= hiddenThreshold) {
				html += '</ul></li> \
				<li id="dsq-drop-more-' + post_id + '" class="dsq-drop-more"><a href="#" onclick="Dsq.Post.dropProfileMore(this, '+ post_id + '); return false"><small>&#9660;</small></a></li> \
				';
			}
			return html;
		};

		return ' \
			<div class="dsq-header-avatar" id="dsq-header-avatar-' + post_id + '" onmouseover="Dsq.Post.dropProfile(' + post_id + ')"> \
				<a id="dsq-avatar-' + post_id + '" class="dsq-avatar" href="' + userData.url + '" onclick="Dsq.Popup.popProfile(' + post_id + '); return false;">'
			+ (Dsq.jsonData.forum.show_avatar
				? '<img src="' + Dsq.jsonData.users[_meta.user_key].avatar + '" alt="" />'
				: '')
			+ '</a>'
			+ '</div> \
		';
	};

	this.postAppendHeader = function(post_id) {
		var _meta = Dsq.jsonData.posts[post_id];

		return ''
			+ (_meta.author_is_moderator
				? '<img class="dsq-mod-star" src="http://media.disqus.com/images/bullet-star.png" title="Moderator" alt="" />'
				: '')
			+ '<span class="dsq-header-meta"> \
				<a id="dsq-time-' + post_id + '" class="dsq-header-time" href="#comment-' + post_id + '" title="Permalink">' + _meta.date + '</a> \
			</span>';
	};

	this.preBody = function(post_id) {
		return '';
	}

	this.postBody = function(post_id) {
		// TODO: Deprecate flagging conditional
		var _meta = Dsq.jsonData.posts[post_id];
		return ''
			+ (_meta.edited
				? '<p class="dsq-editedtxt">(Edited by a moderator)</p>'
				: '')
			;
	};

	this.postFooter = function(post_id) {
		// TODO: Use media should be conditional
		var _meta = Dsq.jsonData.posts[post_id];
		if(_meta.killed) { return ''; }

		return ' \
			<div class="dsq-comment-footer" id="dsq-comment-footer-' + post_id + '"> \
				<div id="dsq-points-' + post_id + '" class="dsq-likedtxt">'
				+ (_meta.points
					? _meta.points + Dsq.Utils.pluralize(_meta.points, ' person', ' people') + ' liked this comment.'
					: '')
				+ '</div>'
				+ '<ul class="dsq-comment-options dsq-list-style">'
				+ (_meta.votable
					? '<li class="dsq-list-first dsq-rate" id="dsq-rate-cont-' + post_id + '">'
					+ (!_meta.up_voted
						? '<a href="#" onclick="Dsq.Post.rate(this, ' + post_id + ', 1); return false;">Like</a>'
						: 'You liked this.') + '</li>'
					: '')
				+ '<li class="dsq-report' + (!_meta.votable ? ' dsq-list-first' : '') + '" id="dsq-post-report-' + post_id + '"><a href="#" class="dsq-post-report" onclick="Dsq.Post.report(' + post_id + ', false); return false;">Report</a></li> \
				</ul> \
				<ul class="dsq-list-style">'
				+ (_meta.can_reply
					? '<li class="dsq-list-first"><a href="#" id="dsq-reply-link-' + post_id +'" onclick="Dsq.Post.toggleReply(this, ' + post_id +'); return false;">Reply</a></li>'
					: '')
				+ (_meta.can_reply && !_meta.has_replies && _meta.from_request_user
					? '<li id="dsq-edit-el-' + post_id + '"><a id="dsq-edit-link-' + post_id + '" href="#" onclick="Dsq.Post.edit(this, ' + post_id + '); return false;">Edit</a></li>'
					: '')
				+ '<li class="' + (!_meta.can_reply ? 'dsq-list-first' : '') + '" id="dsq-more-el-' + post_id + '"><a id="dsq-more-link-' + post_id + '" href="#" onclick="Dsq.Post.showMenu(this, ' + post_id + ', \'more\'); return false">More <small>&#9660;</small></a></li>'
				+ (Dsq.jsonData.forum.use_media
					? '<li id="dsq-media-el-' + post_id +'" style="display:none"><a id="dsq-media-link-' + post_id + '" href="#" onclick="Dsq.Post.showMenu(this, ' + post_id + ', \'media\'); return false">Use Media <small>&#9660;</small></a></li>'
					: '')
				+ '</ul>'
				+ '<div id="dsq-reply-bar-' + post_id + '" class="dsq-reply-bar" style="display:none"> \
						<div id="dsq-reply-bar-items-' + post_id + '" class="dsq-reply-bar-items"> \
						</div> \
						<div id="dsq-reply-bar-auth-' + post_id + '" class="dsq-reply-bar-auth"> \
							 \
								 \
								 	<a href="#" class="dsq-help dsq-reply-req-opt" title="You are commenting as a Guest. You may choose to log into an existing DISQUS Profile, your Facebook, Twitter or OpenID account to comment on Scobleizer" onclick="Dsq.Popup.helpBadges(); return false">Optional:</a> \
								 \
								<img class="dsq-login-icon" src="http://media.disqus.com/images/dsq-favicon-16x16.png" alt="" /> \
								<a id="dsq-reply-login-' + post_id + '" href="http://disqus.com/profile/login/?next=article:18447873" onclick="Dsq.Popup.login(); return false">Login</a> \
								 \
									&nbsp;or&nbsp; \
									<img class="fb_login_image" src="http://static.ak.fbcdn.net/images/fbconnect/login-buttons/connect_light_small_short.gif" alt="Facebook Connect"/> \
									<a href="#" onclick="FB.Connect.requireSession(DisqusFbcParentController.onLogin); return false;">Connect</a> \
								 \
								&nbsp;or&nbsp; \
									<img src="http://media.disqus.com/images/twitter-signin-icon.png" alt="" /> \
									<a href="#" onclick="Dsq.Twitter.startTwitterConnect(); return false">Sign-in</a> \
								 \
								 \
							 \
						</div> \
					</div> \
					<div id="dsq-reply-' + post_id + '"></div> \
			</div> \
		';
	};

	//
	// Iframes
	//

	this._makeAttributes = function(attributes) {
		// Makes a tag attributes string out of an object.
		// Caller is responsible for making sure nothing needs to be escaped.
		var result = [];
		for (key in attributes) {
			result.push(' ' + key + '="' + attributes[key] + '"');
		}
		result = result.join('');
		return result;
	};

	this._frameGeneric = function(base_url, params, attributes) {
		if(typeof(disqus_callback_params) == 'undefined') {
			disqus_callback_params = '';
		}

		var default_params = {
			// TODO: These should be moved to Dsq.jsonData.
			'f'				: 'scobleizer',
			't'				: 'looking_at_vista',
			// Do we need encodeURIComponent here?
			'ifrs'			: encodeURIComponent(disqus_iframe_css),
			'to_redirect'	: encodeURIComponent(window.location),
			'cbp'			: disqus_callback_params,
			'ff'			: Dsq.Thread.ff,
			'fc'			: Dsq.Thread.fc,
			'ac'			: Dsq.Thread.ac,
			'default_text'	: disqus_default_text
		};

		base_url += '?' + (new Date()).getTime();
		// Add params to default_params.
		if(params) {
			for(var key in params) {
				if(params.hasOwnProperty(key)) {
					default_params[key] = encodeURIComponent(params[key]);
				}
			}
		}
		// Build querystring.
		for(var key in default_params) {
			if(default_params[key] && default_params.hasOwnProperty(key)) {
				base_url += '&' + key + '=' + default_params[key];
			}
		}

		return [
			'<iframe marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0"',
			(' allowtransparency="true" src="' + base_url + '"'),
			this._makeAttributes(attributes),
			'</iframe>'].join('');
	};

	this.frameLogin = function(opt_attributes) {
		var params = {};
		var base_url = 'http://disqus.com/embed/login.html';
		var attributes = opt_attributes || {};
		attributes['class'] = 'dsq-post-login';

		if(typeof disqus_frame_theme != 'undefined') {
			params['theme'] = disqus_frame_theme;
		}
		return this._frameGeneric(base_url, params, attributes);
	};

	this.frameReply = function(post_id, extra_params, attributes) {
		// Returns the HTML for a reply iframe. Called by Dsq.Iframes.setReplyIframeToContainer
		var _meta = (typeof post_id != 'undefined') ? Dsq.jsonData.posts[post_id] : false;
		var base_url = Dsq.Urls.REPLY;
		var params = {
			'def_email'		: disqus_def_email,
			'def_name'		: disqus_def_name
		};
		if(extra_params) {
			for(var key in extra_params) {
				if(extra_params.hasOwnProperty(key)) {
					params[key] = extra_params[key];
				}
			}
		}
		if(_meta) {
			params['parent_post'] = post_id;
		}
		if(typeof disqus_per_page != 'undefined') {
			params['per_page'] = disqus_per_page;
		}
		if(typeof disqus_frame_theme != 'undefined') {
			params['theme'] = disqus_frame_theme;
		}
		if(Dsq.jsonData.request.is_authenticated) {
			attributes['class'] += '-authenticated';
		}
		return this._frameGeneric(base_url, params, attributes);
	};

	this.frameEdit = function(post_id) {
		var _meta = (typeof post_id != 'undefined') ? Dsq.jsonData.posts[post_id] : false;
		var base_url = 'http://disqus.com/embed/edit.html';
		var params = {
			'p' : post_id
		};
		return this._frameGeneric(base_url, params, {'class': 'dsq-post-edit', 'name': 'dsq-edit_' + post_id + '-frame'});
	};

	//
	// Menus
	//

	this.menuMore = function(post_id) {
		// TODO: "Remove post" button should hide menu.
		var _meta = Dsq.jsonData.posts[post_id];
		var userData = Dsq.jsonData['users'][_meta.user_key];
		return ' \
			<li><a href="#comment-' + post_id + '" onclick="Dsq.Popup.permalink(' + post_id + ')">Link</a></li> \
			<li><a href="#" onclick="Dsq.Popup.popProfile(' + post_id + '); return false;">Profile</a></li>'
	+ (Dsq.jsonData.request.is_moderator || Dsq.jsonData.request.is_global_moderator
		? '	<li class="dsq-menu-sep"></li>' + (_meta.email ? '<li class="dsq-admin-email">' + _meta.email + '</li>' : '')
		+ '	<li class="dsq-admin-ip">' + _meta.ip + '</li> \
			<li class="dsq-menu-sep"></li>'
		+ (Dsq.jsonData.request.moderator_can_edit
			? ' <li class="dsq-admin-edit"><a href="#" onclick="Dsq.Post.edit(this, ' + post_id + '); return false;">Edit Comment</a></li>'
			: '')
		+ ' <li class="dsq-remove"><a href="#" onclick="Dsq.Post.removePost(' + post_id + ', 1); return false;">Remove Comment</a></li> \
			<li class="dsq-report-spam"><a href="#" onclick="Dsq.Post.reportSpam(' + post_id + '); return false;">Mark Spam</a></li> \
			<li class="dsq-block-user"><a href="#" onclick="Dsq.Popup.blacklist(' + post_id + '); return false">Block User</a></li>'
		: '');
	};

	this.menuMedia = function(post_id) {
		return ' \
			<li><a href="#" onclick="Dsq.Post.toggleMediaReply(this, ' + post_id + ', \'seesmic\'); return false;">Record video</a></li> \
		';
	};

	this.dropProfile = function(post_id) {
		var _meta = Dsq.jsonData.posts[post_id];
		var userData = Dsq.jsonData['users'][_meta.user_key];

		var _includeServices = function() {
			var userServices = Dsq.Post.getUserServices(null, post_id);
			var html = '';
			var hiddenThreshold = 3; // Define # of services to show before stuffing them in hidden div

			for(var i = 0; i < userServices.length; i++) {
				html +=
				(i == hiddenThreshold
					? '<li id="dsq-drop-hidden-' + post_id +'" class="dsq-drop-hidden"><ul>'
					: '')
				+ '<li class="dsq-drop-services"> \
					<a class="dsq-service-' + userServices[i].name.toLowerCase() + '" href="' + userServices[i].url + '" target="_blank"> \
						<img src="' + Dsq.jsonData.media_url + '/images/embed/services/' + userServices[i].name.toLowerCase() + '.png" alt="' + userServices[i].name.toLowerCase() + '">'
					+ userServices[i].name
					+ '</a> \
				</li>';
			}

			if(i >= hiddenThreshold) {
				html += '</ul></li> \
				<li id="dsq-drop-more-' + post_id + '" class="dsq-drop-more"><a href="#" onclick="Dsq.Post.dropProfileMore(this, '+ post_id + '); return false"><small>&#9660;</small></a></li> \
				';
			}
			return html;
		};


		var menu = '<li class="dsq-drop-showlnk"><a href="#" onclick="Dsq.Popup.popProfile(' + post_id + '); return false;">Expand &#8663;</a></li>';
		var pointsMessage = '';
		if (userData['registered']) {
			pointsMessage = 'with ' + userData['points'] + ' points (more points are better).';
		}

		if (userData['is_remote']) {
			var domain = userData['remote_domain_name'];
			menu += '<li class="dsq-drop-badge" title="' + userData['display_name'] + ' is a ' + domain + ' user ' + pointsMessage + '" onclick="Dsq.Popup.helpBadges()">';
			menu += '<span class="dsq-badge-' + domain.toLowerCase() + '">' + domain + '</span></li>';
		} else if (userData['registered']) {
			if (userData['verified']) {
				menu += '<li class="dsq-drop-badge" title="' + userData['display_name'] + ' has a verified commenter profile ' + pointsMessage + '" onclick="Dsq.Popup.helpBadges()">';
				menu += '<span class="dsq-badge-verified">Verified</span></li>';
			} else {
				menu += '<li class="dsq-drop-badge" title="' + userData['display_name'] + ' has a registered, but unverified, commenter profile ' + pointsMessage + '" onclick="Dsq.Popup.helpBadges()">';
				menu += '<span class="dsq-badge-registered">Registered</span></li>';
			}
		} else {
			menu += '<li class="dsq-drop-badge" title="' + userData['display_name'] + ' has not claimed this commenter profile." onclick="Dsq.Popup.helpBadges()"><span class="dsq-badge-guest">Guest</span></li>';
		}

		menu += _includeServices();
		return menu;
	};

	//
	// Popups
	//

	this._popupGeneric = function(content) {
		return ' \
		<div class="dsq-popup-content"> \
			<div class="dsq-popup-top"></div> \
			<div class="dsq-popup-body" class="clearfix"> \
				<div class="dsq-popup-body-padding"> \
					<div class="dsq-popup-header"> \
						<a class="dsq-close-link" href="#" onclick="Dsq.Popup._closePopup(null, true); return false"><img src="http://media.disqus.com/images/modal-close.png" alt="" /></a>'
						+ content['header']
					+ '</div>'
					+ content['body']
					+ '<div class="powered-by"><a href="http://disqus.com/comments/">Powered by <img src="http://media.disqus.com/images/embed/disqus-logo.png" alt="Disqus Comments" style="margin-bottom:-5px" /></a></div> \
				</div> <!-- padding --> \
			</div> <!-- body --> \
			<div class="dsq-popup-bottom"></div> \
		</div> \
		';
	};

	this.popupProfile = function(user_key) {
		var userServices = Dsq.Post.getUserServices(user_key, null);
		var userData = Dsq.jsonData['users'][user_key];
		var headerHtml = '';
		var bodyHtml = '';
		var content = {};

		var _includeServices = function() {
			var html = '';
			for(var i = 0; i < userServices.length; i++) {
				html +=
				(i == 0
					? '<h4>Connections</h4><ul>'
					: '')
				+ '<li> \
					<img src="' + Dsq.jsonData.media_url + '/images/embed/services/' + userServices[i].name.toLowerCase() + '.png" alt="' + userServices[i].name.toLowerCase() + '" title="' + userServices[i].name.toLowerCase() + '" /> \
					<a class="dsq-service-' + userServices[i].name.toLowerCase() + '" href="' + userServices[i].url + '" target="_blank">'
					+ userServices[i].name
					+ '</a> \
				</li>'
				+ (i+1 == userServices.length ? '</ul>' : '');
			}
			return html;
		};

		headerHtml = ' \
			<table> \
				<tr> \
					<td> \
						<a class="dsq-profile-userurl" href="' + userData.url + '"><img class="dsq-popup-profile-avatar" src="' + userData['avatar'] + '" alt="" /></a> \
					</td> \
					<td> \
						<div class="dsq-popup-profile-user"> \
							<h3>' + userData['display_name'] + '</h3> \
							<div class="dsq-popup-profile-user-stats" id="dsq-popup-profile-user-stats-' + user_key + '">Loading...</div> \
						</div> \
					</td> \
				</tr> \
			</table> \
		';

		bodyHtml = ' \
			<div class="dsq-popup-profile-state"> \
				This is a&nbsp;<span class="'
					+ (userData['registered']
						? (userData['verified']
							? ' dsq-badge-verified'
							: (userData['is_remote']
								? ' dsq-badge-' + userData['remote_domain_name'].toLowerCase()
								: ' dsq-badge-registered')
							)
							: ' dsq-badge-guest') + '">'
			+ (userData['registered']
				? (userData['verified']
					? 'Verified'
					: (userData['is_remote']
						 ? userData['remote_domain_name']
						 : 'Registered')
					)
				: 'Guest')
			+ '</span>&nbsp;commenter profile.'
			+ '&nbsp;<a class="dsq-profile-userurl" href="' + userData.url + '"><strong>View more comments </strong></a>'
			+ (!userData['points']
				? '<p class="dsq-popup-notice">If this is you, <a href="http://disqus.com/profile" target="_blank">claim it now</a> to manage your comments.</p>'
				: '')
			+ ((userData['registered'] && !userData['verified'] && (Dsq.jsonData.request.username && (Dsq.jsonData.request.username == userData['username'])) && !userData['is_remote'])
				? '<p class="dsq-popup-notice"><strong>Alert</strong>: You have not verified this account. <a href="http://disqus.com/verify">Verify it now.</a></p>'
				: '')
			+ '</div> \
			<div id="dsq-profile-status-' + user_key + '" class="dsq-popup-profile-status" style="display:none"></div> \
			<div class="dsq-popup-profile-snapshot"> \
				<table> \
					<tr> \
						<td> \
							<div id="dsq-popup-profile-active-sites-wrapper-' + user_key + '"> \
								<h4>Most active sites</h4> \
								<ul id="dsq-popup-profile-active-sites-' + user_key + '"> \
									<li>Loading...</li> \
								</ul> \
							</div> \
						</td> \
						<td>'
							+ _includeServices()
							+ '<div id="dsq-popup-profile-moderated-wrapper-' + user_key + '"> \
								<h4>Moderator of</h4> \
								<ul id="dsq-popup-profile-moderated-' + user_key + '"> \
									<li>Loading...</li> \
								</ul> \
							</div> \
						</td> \
					</tr> \
				</table> \
			</div> \
			';

		content = {
			'header': headerHtml,
			'body': bodyHtml
		};

		return this._popupGeneric(content);
	};

	this.popupReblog = function() {
		var headerHtml = '';
		var bodyHtml = '';
		var content = {};

		headerHtml = ' \
			<cite><span>Reblog this comment</span></cite> \
		';

		bodyHtml = ' \
			<div id="dsq-reblog-form" class="dsq-reblog-form"> \
			</div> \
		';

		content = {
			'header': headerHtml,
			'body': bodyHtml
		};

		return this._popupGeneric(content);
	};

	this.popupModal = function(title, message) {
		var headerHtml = '';
		var bodyHtml = '';
		var content = {};

		headerHtml = ' \
			<h3>' + title + '</h3> \
		';

		bodyHtml = message;

		content = {
			'header': headerHtml,
			'body': bodyHtml
		};

		return this._popupGeneric(content);
	};

	this.alertContent = function(name, post_id) {
		var alert = {
			'post_not_approved': {
				'title': 'Comment awaiting approval by a moderator',
				'message': 'Thanks for posting. Your comment must be approved by a moderator before appearing here.'
			},
			'post_has_profile': {
				'title': 'Use your existing commenter profile',
				'message': 'You have just posted your commment as a <span class="dsq-badge dsq-badge-guest">Guest</span>, but you may already have a <span class="dsq-badge dsq-badge-registered">Registered</span> commenter profile.<br /><br /><a href="http://disqus.com/claim">Log in and claim this comment!</a>'
			}
		};
		return alert[name] || false;
	};

	//
	// Actions
	//

	this.voted = function(post_id, points, vote) {
		// Update number of points
		Dsq.$('dsq-points-' + post_id).innerHTML = points + Dsq.Utils.pluralize(points, ' person', ' people') + ' liked this comment.';

		// Update link text
		if(vote) {
			Dsq.$('dsq-rate-cont-' + post_id).innerHTML = 'You liked this.';
		}
	};

	this.subscribed = function(status) {
		var title, message;

		if(status) {
			title = 'Subscribed!';
			message = 'You have subscribed to this comment thread. New comments will be sent directly to your email inbox, where you may read and respond by email.';
			Dsq.$('dsq-subscribe').innerHTML = ' \
				<a href="#" onclick="Dsq.Thread.subscribe(0); return false">Unsubscribe</a> \
			';
		} else {
			title = 'Unsubscribed';
			message = 'You have unsubscribed to this comment thread. New comments will no longer be sent to your email inbox.';
			Dsq.$('dsq-subscribe').innerHTML = ' \
				<a href="#" onclick="Dsq.Thread.subscribe(1); return false">Subscribe by email</a> \
			';
		}

		Dsq.Popup.popModal(message, title);

	};
	
	this.highlighted = function() {
		Dsq.Popup.popModal('This comment has been highlighted.', 'Highlighted comment');
	};

	//
	// Media
	//

	this.mediaSeesmic = function(id, thumb) {
		return ' \
			<div id="dsq-seesmic-' + id + '_preview" class="dsq-seesmic-preview"><a href="http://www.seesmic.com/video/' + id + '" target="_blank" class="see_link">&nbsp;</a> \
				<div style="display:block;width:160px; height:120px; border:none; background-image:url(http://t.seesmic.com/thumbnail/' + thumb + ')"> \
					<div id="dsq-seesmic-' + id + '_hide" class="seePlayOverlay" style="display:none;"><img onclick="see_play_video(\'' + id + '\',false)" src="http://media.disqus.com/images/seesmic/stopOverlay.png" width="50" height="50" style="cursor:pointer; cursor:hand; padding-top: 30px; padding-left: 50px" alt="" /></div> \
					<div id="dsq-seesmic-' + id + '_show" class="seePlayOverlay"><img onclick="see_play_video(\'' + id + '\',true)" src="http://media.disqus.com/images/seesmic/playOverlay.png" width="50" height="50" style="cursor:pointer; cursor:hand; border:none; padding-top: 30px; padding-left: 50px" alt="" /></div> \
				</div> \
			</div> \
			<div id="' + id + '_content" style="display:block; width:100%; padding-top:5px"></div> \
		';
	};

	//
	// Callbacks
	//

	this.postComment_onSuccess = function(parent_post_id) {
		// Increment post count
		var num_posts = Dsq.$('dsq-num-posts');
		var total_posts = Dsq.$('dsq-total-posts');
		
		if (num_posts) { 
			num_posts.innerHTML = parseInt(num_posts.innerHTML) + 1;
		}
		if (total_posts) { 
			total_posts.innerHTML = parseInt(total_posts.innerHTML) + 1;
		}
	};
};
// Dsq.Templates


/**
 * Dsq.Post
 */
Dsq.Post = new function() {
	this.openedMenu = {};
	this.menuEventListener = null;
	this.stateReplyToggled = {};
	this.stateEditToggled = {};
	this.stateRecordLink = {};

	/**
	 * Inserts a new post into the document.
	 *
	 * @param after_id {Number}	Insert a post before specified id.  If after_id
	 *							evaluates to false, then post in the front.  If
	 *							after_id is -1, post at the end.
	 */
	this.insert = function(after_id, id, message, author) {
		// Skeleton template from thread_posts.html.
		var skeleton = ' \
			<li id="dsq-comment-%(id)s"> \
				<div id="dsq-comment-header-%(id)s" class="dsq-comment-header"> \
					<cite id="dsq-cite-%(id)s" class="dsq-comment-cite"> \
						<a id="dsq-author-user-%(id)s" href="%(author_url)s" target="_blank" rel="nofollow">%(author_name)s</a> \
					</cite> \
				</div> \
				<div id="dsq-comment-body-%(id)s" class="dsq-comment-body"> \
					<div id="dsq-comment-message-%(id)s" class="dsq-comment-message">%(message)s</div> \
				</div> \
			</li> \
		';
		var _meta = Dsq.jsonData.posts[id];
		var _user_meta = Dsq.jsonData.users[_meta.user_key];
		var markup = Dsq.Utils.interpolate(skeleton, {
			id: id,
			message: message,
			author_url: _user_meta.blog,
			author_name: _user_meta.display_name
		});
		var div = document.createElement('div');
		markup = markup.replace(Dsq.COMMENTS_RE, Dsq.CommentsHandler);
		div.innerHTML = markup;

		if (after_id === -1) {
			Dsq.$('dsq-comments').appendChild(div);
		} else if (!after_id) {
			Dsq.$('dsq-comments').insertBefore(div, Dsq.$('dsq-comments').firstChild);
		} else if (Dsq.$('dsq-comment-' + after_id)) {
			// Get next node after "after_id", so we can insert before it.
			// If "after_id" is the last comment, the target node is the
			// last node.
			
			// var append_post_id = Dsq.Templates.appendPost(after_id).replace('<div id="','').replace('"></div>', '');
			var append_post_id = 'dsq-append-post-' + after_id;
			var node = Dsq.$(append_post_id);
			while (node = node.nextSibling) {
				if (!node || node.nodeType == 1) { // 1 == Node.ELEMENT_NODE
					break;
				}
			}
			if (!node) {
				node = Dsq.$(append_post_id);
			}
			node.parentNode.insertBefore(div, node);
		}
	};

	this.incrementPostCount = function() {
		
		var num_posts = Dsq.$('dsq-num-posts');
		var total_posts = Dsq.$('dsq-total-posts');

		if (num_posts) {
			num_posts.innerHTML = parseInt(num_posts.innerHTML, 10) + 1;
		}
		if (total_posts) {
			total_posts.innerHTML = parseInt(total_posts.innerHTML, 10) + 1;
		}
	}
	
	this.outlineComment = function(post_id) {
		Dsq.$('dsq-comment-' + post_id).className += ' dsq-comment-outline';
		setTimeout("(function () { Dsq.Post.clearOutlineComment(" + post_id + ") })()", 3000);
	};
	
	this.clearOutlineComment = function(post_id) {
		Dsq.$('dsq-comment-' + post_id).className = Dsq.$('dsq-comment-' + post_id).className.replace('dsq-comment-outline', '');
	};

	this.showMenu = function(el, id, name) {
		var anchorPos = Dsq.Utils.findPos(el);
		var menu = document.createElement('ul');

		if(this.openedMenu) {
			if(this.openedMenu.linkClicked) {
				this.openedMenu.linkClicked = false;
				return;
			}
		}

		switch(name) {
			case 'more':
				menu.innerHTML = Dsq.Templates.menuMore(id);
				break;
			case 'media':
				menu.innerHTML = Dsq.Templates.menuMedia(id);
				break;
			default:
				break;
		}

		// Add menu to document body
		menu.id = 'dsq-menu-' + id;
		menu.className = 'dsq-menu';
		Dsq.$b.appendChild(menu);

		// Position and show
		anchorPos[1] += 15;
		menu.style.left = anchorPos[0] + 'px';
		menu.style.top = anchorPos[1] + 'px';
		menu.style.display = 'block';

		// Set global reference
		this.openedMenu = {
			'el' : menu,
			'id' : id,
			'name' : name,
			'linkClicked' : false
		};

		// Set listener
		this.menuEventListener = Dsq.Utils.addEventListener(document, 'mouseup', this._hideMenu);
	};

	this._hideMenu = function(e) {
		var el = e.target || e.srcElement;
		var openedMenu = Dsq.Post.openedMenu.el;
		var id = Dsq.Post.openedMenu.id;

		if(!id) {
			var link = 'dsq-' + Dsq.Post.openedMenu.name + '-link';
		} else {
			var link = 'dsq-' + Dsq.Post.openedMenu.name + '-link-' + id;
		}

		if(!openedMenu) {
			return;
		}

		if(!Dsq.Popup.isClicked(e, openedMenu.id)) {
			openedMenu.style.display = 'none';
			Dsq.Utils.removeEventListener(Dsq.Post.menuEventListener);
			Dsq.Utils.deleteNode(openedMenu);

		} else {
			// Hide the menu if a link was clicked inside the menu.  We can't
			// completely remove the menu until the onclick event on the link
			// fires, but the menuEventListener will prevent multiple menus
			// from polluting the DOM.
			if(el && typeof el.href != 'undefined') {
				openedMenu.style.display = 'none';
				Dsq.Post.openedMenu.el = null;
			}
		}

		if(Dsq.Popup.isClicked(e, link)) {
 			Dsq.Post.openedMenu.linkClicked = true;
		}
	};


	this.getUserServices = function(user_key, id) {
		if(!user_key && id) {
			var _meta = Dsq.jsonData.posts[id];
			user_key = _meta.user_key;
		}
		var userData = Dsq.jsonData['users'][user_key];
		var userServices = [];

		// Keep a full list of supported services. This is the order they will display in the drop-profile.
		// Each service must have a corresponding case in _buildServiceUrl()
		var supportedServices = ['blog', 'twitter', 'facebook', 'tumblr'];

		function _buildServiceUrl(serviceName) {
			var data = userData[serviceName];
			var services = {
				blog:		function(d) { return d; },
				twitter:	function(d) { return d; },
				facebook:	function(d) { return d; },
				tumblr:		function(d) { return 'http://' + d + '.tumblr.com'; }
			};
			return services[serviceName](data);
		}

		for(var i = 0; i < supportedServices.length; i++) {
			if(userData[supportedServices[i]]) {
				var serviceUrl = _buildServiceUrl(supportedServices[i]);
				userServices.push({'name' : supportedServices[i], 'url' : serviceUrl});
			}
		}
		return userServices;
	}

	this.dropProfile = function(id) {
		var dp = Dsq.$('dsq-drop-profile-' + id);

		// IE6 needs JS to display/hide. All other browsers use CSS.
		if(dp) {
			if(Dsq.Utils.ie6) dp.style.display = (dp.style.display == 'inline') ? 'none' : 'inline';
			return false;
		} else {
			dp = document.createElement('ul');
		}

		dp.id = 'dsq-drop-profile-' + id;
		dp.className = 'dsq-drop-profile';

		if(Dsq.Utils.ie6) { dp.style.display = 'inline'; }

		var container = Dsq.$('dsq-header-avatar-' + id);
		dp.innerHTML = Dsq.Templates.dropProfile(id);
		container.appendChild(dp);
	};

	this.dropProfileMore = function(el, id) {
		var hiddenItems = Dsq.$('dsq-drop-hidden-' + id);

		hiddenItems.style.display = 'inline';
		el.parentNode.style.display = 'none';
	};

	this._updateReplyLinks = function(el, id) {
		// Update "reply / cancel" links based on state.
		var displayDict = {};

		if(id) {
			if(this.stateReplyToggled[id]) {
				el.innerHTML = 'Cancel';
				displayDict['media'] = 'inline';
				displayDict['edit'] = 'none';
			} else {
				el.innerHTML = 'Reply';
				displayDict['media'] = 'none';
				displayDict['edit'] = 'inline';
			}
		}

		for(var key in displayDict) {
			if(displayDict.hasOwnProperty(key)) {
				var	linkEl = Dsq.$('dsq-' + key + '-el-' + id),
					spacer = Dsq.$('dsq-' + key + '-spacer-' + id);

				if(linkEl) {
					linkEl.style.display = displayDict[key];
					if(spacer) spacer.style.display = displayDict[key];
				}
			}
		}
	};

	this._updateMediaLinks = function(el, id) {
		// Update "use media / cancel" links based on state.
		var appendId = (id) ? ('-' + id) : '';
		var link = Dsq.$('dsq-media-link' + appendId);

		if(this.stateRecordLink[id]) {
			link.innerHTML = 'Cancel Media';
			link.onclick = function() { Dsq.Post.toggleMediaReply(link, id); return false; };
		} else {
			link.innerHTML = 'Use Media <small>&#9660;</small>';
			link.onclick = function() { Dsq.Post.showMenu(link, id, 'media'); return false; };
		}
	};

	this.toggleReply = function(el, id) {
		// Create reply IFrame
		if (window.disqus_use_postmessage) {
			if (!this.stateReplyToggled[id]) {
				Dsq.$('dsq-reply-' + id).style.display = 'block';
				Dsq.$('dsq-reply-bar-' + id).style.display = 'block';
				// Create IFrame if it doesn't exist.
				if (!Dsq.frames['reply_' + id]) {
					var _meta = Dsq.jsonData.posts[id];
					Dsq.frames['reply_' + id] = new Dsq.ReplyFrame(Dsq.$('dsq-reply-frame-' + id), id);
					Dsq.frames['reply_' + id].init();
					Dsq.frames['reply_' + id].setState(id, _meta.depth);
				}
			} else {
				Dsq.$('dsq-reply-' + id).style.display = 'none';
				Dsq.$('dsq-reply-bar-' + id).style.display = 'none';
			}
		} else {
			// DEPRECATED
			if(!this.stateReplyToggled[id]) {
				// Reply toolbar
				Dsq.$('dsq-reply-bar-' + id).style.display = 'block';
				Dsq.Iframes.showReplyIframeInContainerIfAllowed(Dsq.$('dsq-reply-' + id), id);
			} else {
				Dsq.$('dsq-reply-bar-' + id).style.display = 'none';
				Dsq.Iframes.hideAllInContainer(Dsq.$('dsq-reply-' + id));
				if(this.stateRecordLink[id]) {
					// HACK: Cancel media before canceling self.
					this.toggleMediaReply(Dsq.$('dsq-media-link-' + id), id);
				}
			}
		}

		this.stateReplyToggled[id] = !this.stateReplyToggled[id];
		this._updateReplyLinks(el, id);

		if(Dsq.Utils.ie) { Dsq.Utils.fixIframesIE('dsq-reply-' + id); }

		Dsq.Events.fire(Dsq.Events.REPLY_IFRAME_TOGGLED, {
			postId: id,
			opened: this.stateReplyToggled[id]
		});
	};

	this.toggleMediaReply = function(el, id, xtype) {
		id = id || 0;
		if(id) {
			var container = Dsq.$('dsq-reply-' + id);
		} else {
			var container = Dsq.$('dsq-post-add');
		}

		if(!this.stateRecordLink[id]) {
			Dsq.Iframes.showReplyIframeInContainer(container, id, {xtype:xtype}, 'dsq-post-video');
		} else {
			Dsq.Iframes.showReplyIframeInContainer(container, id);
		}
		this.stateRecordLink[id] = !this.stateRecordLink[id];
		this._updateMediaLinks(el, id);

		if(Dsq.Utils.ie) { Dsq.Utils.fixIframesIE(); }
	};

	this.edit = function(el, id) {
		Dsq.$('dsq-comment-message-' + id).innerHTML = Dsq.Templates.frameEdit(id);
		el.parentNode.style.display = 'none';
		if(Dsq.Utils.ie) { Dsq.Utils.fixIframesIE('dsq-comment-message-' + id); }
	};

    this.rate = function(el, id, vote) {
		if(Dsq.jsonData.request.is_authenticated || Dsq.jsonData.forum.allow_anon_votes) {
			if(vote == 1) {
                Dsq.$('dsq-rate-cont-' + id).innerHTML = '<img src="http://media.disqus.com/images/loading-small.gif">';
            }

            Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/vote.js'
                + '?post_id='    + id
                + '&vote='        + vote);

		} else {
			Dsq.Popup.login(Dsq.Strings.TO_RATE_PLEASE_LOG_IN);
		}
    };

	this.report = function(id, confirmed) {
		if(confirmed) {
			Dsq.Utils.postToUrl('http://disqus.com/forums/scobleizer/looking_at_vista/post_report/', {'post_id': id});
			Dsq.Popup.popModal('Thank you. This comment has been flagged for moderator attention.', 'Successfully flagged');
			Dsq.Utils.deleteNode(Dsq.$('dsq-post-report-' + id));
		} else {
			var title = Dsq.Strings.FLAG_INAPPROPRIATE_COMMENT;
			var message = Dsq.Strings.ARE_YOU_SURE_YOU_WOULD_LIKE_TO_REPORT_THIS_COMMENT_TO_A_MODERATOR + '? \
			<br /><br /> \
			<button type="button" onclick="Dsq.Popup._closePopup(null, true)"><strong>' + Dsq.Strings.NO + '</strong>, ' + Dsq.Strings.NEVER_MIND + '</button>&nbsp;&nbsp;&nbsp;<button type="button" onclick="Dsq.Post.report(' + id + ', true);"><strong>' + Dsq.Strings.YES + '</strong>, ' + Dsq.Strings.FLAG_INAPPROPRIATE_COMMENT + '</button><br /><br />'
			+ Dsq.Strings.THIS_WILL_FLAG_COMMENTS_FOR_MODERATORS_TO_TAKE_ACTION + '. \
			';

			Dsq.Popup.popModal(message, title, id);
		}
	};



	this.showAlert = function(id, msg) {
		var msgEl = Dsq.$('dsq-comment-message-' + id);
		var alert = '<div class="dsq-comment-alert">' + msg + '</div>';

		msgEl.innerHTML = alert + msgEl.innerHTML;
	};

};
// Dsq.Post


/**
 * Dsq.Thread
 */
Dsq.Thread = new function() {
	this.fc = null;
	this.ff = null;
	this.ac = null;

	
	this.adminIsOn = false;

	
	
	

	this.hlComment = null;
	this.hlCommentClass = null;

	this.getNextComment = function(el) {
		var start_id = el.id;
		while(el = el.nextSibling) {
			if(el.id && el.id.indexOf('dsq-comment-') != -1 && el.id != start_id) {
				return el;
			}
		}
		return null;
	};

	this.getActiveCommentId = function() {
		if (document.URL.indexOf('#comment-') >= 0) {
			var anchor = document.URL.slice(document.URL.indexOf('#') + 1);
			return anchor.replace('comment-', '');
		}
		return null;
	};

	this.highlightAnchor = function() {
		var i = this.getActiveCommentId();
		if (i == null) return false;
		var id = 'dsq-comment-' + i;
		var hash = window.location.hash;

		// Toggle the hash incase the comment isn't available when the page loads
		// for WebKit-based browsers.
		if (Dsq.Utils.webkit) {
			window.location.hash = '';
			window.location.hash = hash;
		}

		this.hlComment = Dsq.$(id);
		// Adding this conditional guard pending #289
		if (!this.hlComment) {
			return;
		}
		this.hlCommentClass = this.hlComment.className;
		this.hlComment.className += ' dsq-hl-anchor';

		setTimeout("Dsq.Thread.highlightClear()", 3000);
	};

	this.highlightClear = function() {
		if (!this.hlComment) {
			return;
		}
		this.hlComment.className = this.hlCommentClass;
	};

	this.login = function(toggle) {
		// toggle id is #dsq-reply-login-[id]
		var postId;
		if(toggle.id.indexOf('dsq-reply-login') != -1) {
			postId = toggle.id.slice(16);
			var container = Dsq.$('dsq-reply-' + postId);
		} else {
			var container = Dsq.$('dsq-post-add');
		}

		if(toggle) {
			if(toggle.className == 'dsq-login-active') {
				Dsq.Iframes.showReplyIframeInContainerIfAllowed(container, postId);
				toggle.className = '';
			} else {
				Dsq.Iframes.showLoginIframeInContainer(container, postId);
				toggle.className = 'dsq-login-active';
			}
		} else {
			Dsq.Iframes.showLoginIframeInContainer(container, postId);
		}

		if(Dsq.Utils.ie) { Dsq.Utils.fixIframesIE(); }
	};


	this.paginate = function(page, el_clicked, per_page) {
		// Use extra_params to pass any override parameters that we need to persist.
		var extra_params = '';

		// "Per page" can either be overriden by providing it as an argument
		// (per-call) or setting the disqus_per_page override variable (global).
		if(typeof per_page == 'undefined') {
			per_page = null;
		}
		if(typeof disqus_per_page != 'undefined' && per_page === null) {
			per_page = disqus_per_page;
		}

		if(typeof disqus_sort != 'undefined') {
			extra_params += '&sort=' + disqus_sort;
		}
		if(per_page !== null) {
			extra_params += '&per_page=' + per_page;
		}

		Dsq.$('dsq-pagination').innerHTML += '<img src="http://media.disqus.com/images/loading-small.gif">';
		
		if(el_clicked) {
			el_clicked.style.display = 'none';
		}
		
		Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/thread.js'
			+ '?slug='	+ 'looking_at_vista'
			+ '&p='		+ page
			+ extra_params);
	};

	this.sortBy = function(sort) {
		var disqus_script = document.createElement('script');
		var disqus_date = new Date();

		if (location.hash != '') {
			location.hash = '#disqus_thread';
		}

		if(typeof(disqus_url) == 'undefined') {
			disqus_url = disqus_href;
		}
		disqus_script.type = 'text/javascript';
		disqus_script.src = 'http://disqus.com/forums/scobleizer/thread.js'
			+ '?slug='	+ 'looking_at_vista'
			+ '&sort='	+ sort
			+ '&title='
			+ '&'		+ disqus_date.getTime();

		Dsq.$('dsq-comments').innerHTML = '<img src="http://media.disqus.com/images/loading.gif">';
		Dsq.container.appendChild(disqus_script);
	};

	this.subscribe = function(status, email) {
		// `status` is an int -- 1 to subscribe, 0 to unsubscribe
		if(Dsq.jsonData.request.is_authenticated || email) {
			// If authenticated user OR anonymous email provided

			if(email) {
				Dsq.Popup._closePopup(null, true);
			}

			Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/subscribe.js'
				+'?status=' 	+ status
				+ '&slug='		+ 'looking_at_vista'
				+ '&email=' 	+ encodeURIComponent(email));

		} else if(!email) {
			// If anonymous user and no email has been provided yet, prompt for email

			var title = 'Subscribe to this comment thread';
			var message = ' \
				New comments will be sent directly to your email inbox! \
				<div class="dsq-subscribe-submit"> \
					<p><strong>Enter your email address below.</strong></p> \
					<input type="text" id="dsq-subscribe-email"> \
					<button type="button" onclick="Dsq.Thread.subscribe(1, Dsq.$(\'dsq-subscribe-email\').value)">Subscribe</button> \
				</div> \
			';

			Dsq.Popup.popModal(message, title);
		}
	};

	this.showSettings = function() {
		if (!Dsq.jsonData.request.is_moderator) {
			return;
		}

		/* The form has to be re-designed when more options will come out. */
		var html = 'Automatically close comments after <input size="3" id="dsq-thread-days-alive" value="' + Dsq.jsonData.thread.days_alive + '" type="text" /> days. Existing comments will still be displayed.<br /><br />(Using 0 days will disable this feature)<br /><br />'
								 + '<button type="button" onclick="Dsq.Thread.updateDaysAlive();" class="dsq-button-small"><span>Save</span></button>'
								 + '<span id="dsq-thread-settings-status" class="dsq-options-status"></span>';

		Dsq.Popup.popModal(html, 'Settings');
	};

  this.showModeratorActions = function() {
      if (!Dsq.jsonData.request.is_moderator) {
          return;
      }

      var html = '<div class="dsq-moderate-options"><table><tr>' +
                 '<td>' + Dsq.Strings.ACTIONS + '</td><td><ul>';
      html += '<li><a href="#" onclick="Dsq.Thread.toggleClosed(); return false;">' +
              (Dsq.jsonData.thread.closed ? Dsq.Strings.OPEN_THREAD : Dsq.Strings.CLOSE_THREAD) +
              '</a></li>';
      html += '<li><a href="#" onclick="Dsq.Thread.toggleKilled(); return false;">' +
              (Dsq.jsonData.thread.killed ? Dsq.Strings.RESTORE_THREAD : Dsq.Strings.REMOVE_THREAD) +
              '</a></li>';
      html += '</ul></td></tr></table></div>' +
              '<p>Go to the full <a href="http://disqus.com/comments/moderate-threads/" target="_blank">moderate panel</a> for more options.</p>';
      Dsq.Popup.popModal(html, Dsq.Strings.MODERATE_OPTIONS);
  };

	this.updateDaysAlive = function() {
		  var days = Dsq.$('dsq-thread-days-alive').value;
		  var status = Dsq.$('dsq-thread-settings-status');
		  Dsq.Utils.postToUrl('http://disqus.com/forums/scobleizer/update_days_alive.js', {days:days,thread:Dsq.jsonData.thread.id});
		  status.innerHTML = 'Saved!';
		  window.setTimeout(function() { status.innerHTML = ''; }, 1000);
	};

  this.toggleClosed = function() {
      Dsq.Utils.postToUrl('http://disqus.com/forums/scobleizer/toggle_thread_closed.js', {thread:Dsq.jsonData.thread.id});
      window.setTimeout(function() { window.location.reload(); }, 500);
  };

  this.toggleKilled = function() {
      Dsq.Utils.postToUrl('http://disqus.com/forums/scobleizer/toggle_thread_killed.js', {thread:Dsq.jsonData.thread.id});
      window.setTimeout(function() { window.location.reload(); }, 500);
  };
};
// Dsq.Thread

Dsq.Events = function() {
	var obj = {};

	// Private
	var handlers = {};
	var getHandlers = function(event) {
		if (handlers[event] === undefined) {
			handlers[event] = [];
		}
		return handlers[event];
	};

	// Public
	// Value keys : postId, node, xtype
	obj.REPLY_IFRAME_CREATED = 1;
	// Value keys : postId, opened
	obj.REPLY_IFRAME_TOGGLED = 2;
	obj.fire = function(event, opt_value) {
		if (!event) {
			throw new Error('Unknown event');
		}
		var value = opt_value || {};
		for (var i=0; i<getHandlers(event).length; i++) {
			getHandlers(event)[i](value);
		}
	};
	obj.addHandler = function(event, callback) {
		getHandlers(event).push(callback);
	};

	return obj;
}();

/**
 * Dsq.Realtime
 */
Dsq.Realtime = new function() {
	var initialized = false;
	var interval = null;
	var last_checked = Dsq.jsonData.request.timestamp;
	var new_posts = [];
	var ongoing_request = false;
	var prev_script = null;

	function updateNewPostCount() {
		Dsq.$('dsq-realtime-alert').style.display = new_posts.length ? 'block' : 'none';

		Dsq.$('dsq-realtime-queued').innerHTML = new_posts.length
		+ ' new '
		+ Dsq.Utils.pluralize(new_posts.length, 'comment', 'comments')
		+ Dsq.Utils.pluralize(new_posts.length, ' was', ' were')
		+ ' just posted.';

		Dsq.$('dsq-realtime-show').innerHTML = '(' + Dsq.Strings.SHOW + ')';
	}

	function insertNewPosts() {
		var post_id = null;
		var after_id = Dsq.$('dsq-sort-select').value === 'oldest' ? -1 : null;

		for (var i=0; i<new_posts.length; i++) {
			post_id = new_posts[i];
			Dsq.Post.insert(after_id, post_id, Dsq.jsonData.posts[post_id].message);
			Dsq.Post.incrementPostCount();
			Dsq.Post.outlineComment(post_id);
		}
		new_posts = [];
	}

	this.enableInterval = function() {
		interval = setInterval(Dsq.Realtime.check, Dsq.jsonData.context.realtime_speed);
		Dsq.$('dsq-realtime-status').innerHTML = Dsq.Strings.ENABLED;
		Dsq.$('dsq-realtime-toggle').innerHTML = '(' + Dsq.Strings.PAUSE + ')';
	}

	this.disableInterval = function() {
		if (interval) {
			clearInterval(interval);
			interval = null;
		}
		Dsq.$('dsq-realtime-status').innerHTML = Dsq.Strings.PAUSED;
		Dsq.$('dsq-realtime-toggle').innerHTML = '(' + Dsq.Strings.RESUME + ')';
	}

	this.toggleInterval = function() {
		if (!interval) {
			Dsq.Realtime.enableInterval();
		} else {
			Dsq.Realtime.disableInterval();
		}
		return false;
	}

	this.initialize = function() {
		if (!initialized) {
			initialized = true;
			Dsq.$('dsq-realtime-toggle').onclick = this.toggleInterval;
			if (!Dsq.jsonData.forum.streaming_realtime) {
				Dsq.$('dsq-realtime-show').onclick = this.show;
				updateNewPostCount();
			}
			if (Dsq.jsonData.thread.realtime_paused) {
				Dsq.Realtime.disableInterval();
			} else {
				Dsq.Realtime.enableInterval();
			}
		}
	}

	this.show = function() {
		insertNewPosts();
		updateNewPostCount();
		return false;
	}

	this.check = function() {
		if (!ongoing_request && Dsq.jsonData.realtime_enabled) {
			if (prev_script) {
				prev_script.parentNode.removeChild(prev_script);
			}
			ongoing_request = true;
			prev_script = Dsq.Utils.execScript('http://disqus.com/forums/18447873/realtime.js?timestamp=' + last_checked);
		}
	};

	this.update = function(timestamp, posts, users) {
		ongoing_request = false;
		last_checked = timestamp;

		if (users) {
			for (var user_id in users) {
				if (users.hasOwnProperty(user_id)) {
					if (!Dsq.jsonData.users[user_id]) {
						Dsq.jsonData.users[user_id] = users[user_id];
					}
				}
			}
		}

		if (posts) {
			for (var post_id in posts) {
				if (posts.hasOwnProperty(post_id)) {
					if (!Dsq.jsonData.posts[post_id]) {
						Dsq.jsonData.posts[post_id] = posts[post_id];
						new_posts.push(post_id);
					}
				}
			}

			if (Dsq.jsonData.forum.streaming_realtime) {
				insertNewPosts();
			} else {
				updateNewPostCount();
			}
		}
	};

}();

// DEPRECATED
Dsq.Iframes = function() {
	// Different style of object from the above. Hoping to switch to this for some reason.
	var obj = {};

	// Private
	var showIframeInContainer = function(container, id, markup) {
		// Look through container for iframes, hiding them, except show one that matches id
		// If none of them matched id, create a new iframe using markup and insert it.
		// Returns the iframe node if and only if it was newly created.
		var found = false;
		for (var i=0; i<container.childNodes.length; i++) {
			var child = container.childNodes[i];
			if (child.nodeName == 'IFRAME') {
				if (child.id == id) {
					child.style.display = 'block';
					found = true;
				} else {
					child.style.display = 'none';
				}
			}
		}
		if (found) {
			return;
		}
		// The iframe wasn't found, so construct it and add it to the container.
		// Don't use innerHTML because it might reload iframes
		var div = document.createElement('div');
		div.innerHTML = markup;
		var iframe = div.childNodes[0];
		div.removeChild(iframe);
		container.appendChild(iframe);
		return iframe;
	};

	// Public
	obj.makeReplyIframeId = function(opt_postId, opt_xtype) {
		var id = 'dsq-post-add-iframe';
		if (opt_xtype) {
			id += '-' + opt_xtype;
		}
		if (opt_postId) {
			id += '-' + opt_postId;
		}
		return id;
	};
	obj.makeLoginIframeId = function(opt_postId) {
		if (!opt_postId) {
			return 'dsq-login-iframe';
		}
		return 'dsq-login-iframe-' + opt_postId;
	};
	obj.makeReplyIframeName = function(opt_postId, opt_xtype) {
		var name = 'dsq-reply-frame';
		if (opt_xtype) {
			name += '-' + opt_xtype;
		}
		if (opt_postId) {
			name += '-' + opt_postId;
		}
		return name;
	};
	obj.showReplyIframeInContainer = function(container, opt_postId, opt_extraParams, opt_className) {
		// Construct the id so we can check if it's already present.
		// Hide any other iframes we find, and show this one if it's found.
		var params = opt_extraParams || {};
		// use xtype in the id and name so we can distinguish media replies from text replies:
		var id = Dsq.Iframes.makeReplyIframeId(opt_postId, params.xtype);
		var name = Dsq.Iframes.makeReplyIframeName(opt_postId, params.xtype);
		var attributes = {
			'id': id,
			'name': name,
			'class': opt_className || 'dsq-post-reply'
			};
		var markup = Dsq.Templates.frameReply(opt_postId, opt_extraParams, attributes);
		var iframe = showIframeInContainer(container, id, markup);
		// It was newly created
		if (iframe) {
			Dsq.Events.fire(Dsq.Events.REPLY_IFRAME_CREATED, {
				postId: opt_postId,
				node: iframe,
				xtype: params.xtype
			});
		}
	};
	obj.showLoginIframeInContainer = function(container, opt_postId) {
		var id = Dsq.Iframes.makeLoginIframeId(opt_postId);
		var markup = Dsq.Templates.frameLogin({id: id});
		showIframeInContainer(container, id, markup);
	};
	obj.showReplyIframeInContainerIfAllowed = function(container, opt_postId) {
		if (Dsq.jsonData.context.show_reply) {
			obj.showReplyIframeInContainer(container, opt_postId);
		} else {
			obj.hideAllInContainer(container);
		}
	};
	obj.hideAllInContainer = function(container) {
		for (var i=0; i<container.childNodes.length; i++) {
			var child = container.childNodes[i];
			if (child.nodeName == 'IFRAME') {
				child.style.display = 'none';
			}
		}
	};

	return obj;
}();

Dsq.Twitter = new function() {
	var that = this;

	this.startTwitterConnect = function() {
		var popupParams = 'location=0,status=0,width=800,height=400';
		that._twitterWindow = window.open(Dsq.jsonData.settings.disqus_url + '/_ax/twitter/begin/', 'twitterWindow', popupParams);
		that._twitterInterval = window.setInterval(that.completeTwitterConnect, 1000);
	};

	this.completeTwitterConnect = function() {
		if (that._twitterWindow.closed) {
			window.clearInterval(that._twitterInterval);
			window.location.reload();
		}
	};
};

Dsq.Yahoo = new function() {
	var that = this;

	this.startYahooConnect = function() {
		var popupParams = 'location=0,status=0,width=800,height=400';
		that._yahooWindow = window.open(Dsq.jsonData.settings.disqus_url + '/_ax/yahoo/begin/', 'yahooWindow', popupParams);
		that._yahooInterval = window.setInterval(that.completeYahooConnect, 1000);
	};

	this.completeYahooConnect = function() {
		if (that._yahooWindow.closed) {
			window.clearInterval(that._yahooInterval);
			window.location.reload();
		}
	};
};

Dsq.OpenID = new function() {
	var that = this;

	this.requestURL = function() {
		var message = '<table class="dsq-openid-form"><tr><td style="vertical-align:top;" rowspan="2"><img src="' + Dsq.jsonData.settings.media_url + '/images/openid-icon-100x100.png" /></td>';
		message += '<td><label for="dsq-openid-url">OpenID URL:</label></td><td><input type="text" id="dsq-openid-url" /></td></tr>';
		message += '<tr><td><label for="dsq-openid-username">Display name:</label></td><td><input type="text" id="dsq-openid-username" /></td></tr>';
		message += '<tr><td class="dsq-openid-submit" colspan="3"><input type="button" value="Sign in" onclick="Dsq.OpenID.startConnect();" /></td></tr>';
		message += "</table>";

		Dsq.Popup.popModal(message, 'Sign in using OpenID');
	};

	this.startConnect = function() {
		var isblank = function(str) {
			return /^\s*$/.test(str);
		};

		var openid_url = Dsq.$('dsq-openid-url').value;
		var username = Dsq.$('dsq-openid-username').value;

		if (isblank(openid_url)) {
			return;
		}

		var popupParams = 'location=0,status=0,width=800,height=500';
		var url = Dsq.jsonData.settings.disqus_url + '/_ax/openid/begin/' + '?url=' + encodeURIComponent(openid_url) + '&username=' + encodeURIComponent(username);
		that._openidWindow = window.open(url, 'openidWindow', popupParams);
		that._openidInterval = window.setInterval(that.completeConnect, 1000);
	};

	this.completeConnect = function() {
		if (that._openidWindow.closed) {
			window.clearInterval(that._openidInterval);
			window.location.reload();
		}
	};
};

Dsq.Reaction = new function() {
	var that = this;

	this.hide = function(id) {
		Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/hidereaction.js?' + 'reaction_id=' + id);
	};

	this.reportMissingReactions = function() {
		if (!Dsq.jsonData.request.is_moderator || !Dsq.jsonData.forum.reactions_enabled) {
			return;
		}

		if (Dsq.jsonData.thread.queued) {
			Dsq.Popup.popModal('Your report has been received. The system will automatically search for new reactions; if any are found, they will be displayed on this comment thread.<br/><br/>Thank&nbsp;you.',
												 'Reported missing reactions');
			return;
		}

		Dsq.Utils.execScript(Dsq.jsonData.settings.disqus_url + '/forums/scobleizer/queueurl.js');
	};
};

Dsq.CNN = function() {
	var obj = {};

	obj.authenticate = function() {
		var url = Dsq.jsonData.settings.disqus_url + "/saml/cnn/try/";
		Dsq.Utils.postToUrl(url, {'target': document.location}, true);
	};

	return obj;
}();


if(Dsq.Utils.ie6) {
	(function() {
		DSQ_HEADER_AVATAR_RE = /<div class="dsq-header-avatar"(.*?)>/gim;
		Dsq.Templates.registerFilter('postPrependHeader', function(html, post_id) {
			// Add "onmouseout" for dsq-header-avatar for dropProfile
			// functionality since IE6 cannot use :hover.
			function _headerAvatarReplace(content, inner, _unused, html) {
				return '<div class="dsq-header-avatar" '
					+ inner
					+ ' onmouseout="Dsq.Post.dropProfile(' + post_id + ')">';
			}
			html = html.replace(DSQ_HEADER_AVATAR_RE, _headerAvatarReplace);
			return html;
		});
	})();
}





	// TODO: Move Seesmic code outside of the main script.  Don't let this script clobber the global namespace.
	if(typeof seesmic == 'undefined') { var seesmic = {}; }
	seesmic.widget = new function () {
		this.callback = function (data) {
			playerVersion = data.disqusplayer;
		};
	};

	
	var scriptEl = document.createElement('script');
	scriptEl.setAttribute('type', 'text/javascript');
	scriptEl.setAttribute('src', 'http://seesmic.com/version.js?callback=seesmic.widget.callback');
	document.getElementsByTagName('head')[0].appendChild(scriptEl);

	
	var scriptEl = document.createElement('script');
	scriptEl.setAttribute('type', 'text/javascript');
	scriptEl.setAttribute('src', 'http://media.disqus.com/javascript/library/swfobject.js');
	document.getElementsByTagName('head')[0].appendChild(scriptEl);

	function see_play_video(_videoUri, _add) {
		var swf = !!playerVersion ? playerVersion : 'http://seesmic.com/embeds/StandalonePlayer.swf';

		flashcontentDiv = Dsq.$(_videoUri + '_content');
		previewDiv = Dsq.$('dsq-seesmic-' + _videoUri + '_preview');
		hideDiv = Dsq.$('dsq-seesmic-' + _videoUri + '_hide');
		showDiv = Dsq.$('dsq-seesmic-' + _videoUri + '_show');
		if(_add) {
			// push flash widget
			var so = new SWFObject(swf, 'sotester', '300', '270', '9', '#000000');
			so.addVariable('video', _videoUri);
			so.addParam('allowFullScreen', 'true');
			so.addParam('allowScriptAccess','always');
			so.useExpressInstall('swfobject/expressinstall.swf');
			so.write(_videoUri + '_content');

			previewDiv.style.display = 'none';
			hideDiv.style.display = 'block';
			showDiv.style.display = 'none';
		}
		else {
			flashcontentDiv.innerHTML = '';
			previewDiv.style.display = 'block';
			hideDiv.style.display = 'none';
			showDiv.style.display = 'block';
		}
	};





(function() {
	//
	// Load theme.  This overrides the base templates with template functions
	// from the respective themes.
	//
	if (Dsq.jsonData.integration.theme == 4) {
		var theme = 'narcissus';
		// HACK: Set variable on window to use post message.
		window.disqus_use_postmessage = true;

		
		for(var prop in Dsq.Themes[theme]) {
			if(Dsq.Themes[theme] && Dsq.Themes[theme].hasOwnProperty(prop)) {
				Dsq.Templates[prop] = Dsq.Themes[theme][prop];
			}
		}
		
		for(var prop in Dsq.Post) {
			if(Dsq.Themes[theme] && Dsq.Themes[theme].hasOwnProperty(prop)) {
				Dsq.Post[prop] = Dsq.Themes[theme][prop];
			}
		}
	}

	//
	// Register templates.  This must be done after all themes are loaded.
	//
	Dsq.Templates.registerTemplate('authPost', Dsq.Templates.authPost);
	Dsq.Templates.registerTemplate('header', Dsq.Templates.header);
	Dsq.Templates.registerTemplate('footer', Dsq.Templates.footer);
	Dsq.Templates.registerTemplate('trackbacks', Dsq.Templates.trackbacks);
	Dsq.Templates.registerTemplate('reactions', Dsq.Templates.reactions);
	Dsq.Templates.registerTemplate('prependPost', Dsq.Templates.prependPost);
	Dsq.Templates.registerTemplate('appendPost', Dsq.Templates.appendPost);
	Dsq.Templates.registerTemplate('postPrependHeader', Dsq.Templates.postPrependHeader);
	Dsq.Templates.registerTemplate('postAppendHeader', Dsq.Templates.postAppendHeader);
	Dsq.Templates.registerTemplate('preBody', Dsq.Templates.preBody);
	Dsq.Templates.registerTemplate('postBody', Dsq.Templates.postBody);
	Dsq.Templates.registerTemplate('postFooter', Dsq.Templates.postFooter);
	Dsq.Templates.registerTemplate('_popupGeneric', Dsq.Templates._popupGeneric);
	Dsq.Templates.registerTemplate('voted', Dsq.Templates.voted);
	Dsq.Templates.registerTemplate('popupProfile', Dsq.Templates.popupProfile);
	Dsq.Templates.registerTemplate('postBox', Dsq.Templates.postBox);
	Dsq.Templates.registerTemplate('pagination', Dsq.Templates.pagination);
	Dsq.Templates.registerTemplate('postComment_onSuccess', Dsq.Templates.postComment_onSuccess);

})();

Dsq.container.className = "clearfix";
Dsq.container.innerHTML = ' \
<ul id="dsq-comments">\
	 <li id="dsq-comment-9647762">\
	 <div id="dsq-comment-header-9647762" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647762" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647762" href="http://dotnetjunkies.com/WebLog/paul/default.aspx" target="_blank" rel="nofollow">paul</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647762" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647762" class="dsq-comment-message">Like fine wine it takes time....I\'ve been a beta tester all along and there are hints of greatness but I still rely on XP....</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647761">\
	 <div id="dsq-comment-header-9647761" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647761" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647761" href="http://www.bazzler.blogspot.com/" target="_blank" rel="nofollow">Barrington</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647761" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647761" class="dsq-comment-message">Please , please , please stop dropping WWDC hints - its hard enough for a poor Macolyte (like myself) waiting for Mr Jobs keynote without a respected journalist implying all manner of  Leopard virtualisation and media centre goodness!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647757">\
	 <div id="dsq-comment-header-9647757" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647757" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647757" href="http://ordinaryworldz.com/" target="_blank" rel="nofollow">Jared Smith</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647757" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647757" class="dsq-comment-message">When a entire team fails on a NFL Team it\'s the coach that gets the blame. With Office and Vista the flagship products of Microsoft continually being pushed back there is no one else to blame but management, regardless of poor performance by the employees. - Too many sports analogy\'s</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647758">\
	 <div id="dsq-comment-header-9647758" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647758" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647758">blegh</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647758" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647758" class="dsq-comment-message">"Customers" don\'t want spyware or viruses but Microsoft doesn\'t care enough to actually usher in policies that make spyware impossible in the first place, eliminating the need for constant security updates.<br><br>I don\'t give a shit what "customers" want (they certainly don\'t care what I want); I care about what _I_ want, and I want a decent text editor (better than Notepad) that can handle Unix linebreaks and Unicode; I want development and scripting tools bundled in; I want a command line that doesn\'t suck; I want a web browser that\'s extensible and that has excellent support for standards; I want an operating system that does not assume I pirated it until I can prove, repeatedly, otherwise. I do not want my web browser to be neglected for years just because Microsoft incorrectly determines it doesn\'t need to be updated and I do not want to be placed in double jeopardy every time I reinstall or make a major upgrade to my computer.<br><br>And what the hell is so bad about thinking like an engineer? Great engineering is why people like BMW.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647756">\
	 <div id="dsq-comment-header-9647756" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647756" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647756" href="http://www.bynkii.com/" target="_blank" rel="nofollow">John C. Welch</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647756" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647756" class="dsq-comment-message"><i>John: “When things are working correctly, STFU already. If I have all the drivers to make my USB device work, I don’t need to know that.”<br><br>John, have you ever worked on the customer support lines for Windows? Sorry, many users are NOT like you. I agree with you, by the way, but if I designed an OS for myself it’d have 10% marketshare. Or worse.</i><br><br>Robert, I\'ve done user support for:<br><br>Windows from 3.1 to XP<br>OS/2 from 2.1 to 3.0<br>Every version of the Mac OS<br>AS/400 green screens<br>Solaris 7-9, just learning 10<br>Irix 5.x and 6.x<br>AIX 4.x<br>Too many Linux distros.<br><br>In:<br><br>Small companies, 26- 100 employees<br>medium companies, 100-600 employees<br>Large companies, thousands of employees<br><br>So I\'ll HAPPILY put MY direct user support experience up against YOURS any day you care to play.<br><br>The biggest complaint(s) I got about Windows, starting with 95 was: "Why the HELL does it need to continutally bother me? Aren\'t things SUPPOSED to work right? What is this, a dog wanting a treat for obeying a command? Why do I need to know that my network is up, I\'m sending email, DUH. Why do I need 234523523 popups a day. I get more popups from Windows than from Web sites. Why is Windows using a "porn storm" as a notification model?<br><br>Ran the gamut of users. Positive notification is dumb. Period. The sheer number of windows\' notification dialogs, bubbles, and wizards is stupid. Do I REALLY need to see a blow by blow of a successful driver install? No. Just fire up the damned driver and let me work.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647755">\
	 <div id="dsq-comment-header-9647755" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647755" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647755">Ahsan</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647755" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647755" class="dsq-comment-message">I guess a more incremental release towards Vista would have been much better. So XP++ including a better search experience for consumers as well as business. Next internet explorer 7. Then another release with better graphics engine. Parallel release of server with Indigo and all Enterprise stuff. An evolutionary approach would have given the customers much more confidence with different technologies instead of just blasting all these things in their faces and then telling them to wait until sp1 to upgrade.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647754">\
	 <div id="dsq-comment-header-9647754" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647754" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647754" href="http://www.bynkii.com/" target="_blank" rel="nofollow">John C. Welch</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647754" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647754" class="dsq-comment-message">Barrington, Robert habitually does this. It\'s his way of "keeping a secret". If you imagine a little kid running around going "I know something you don\'t know and I\'m not going to teeeeeeeeeel" while sticking his tongue out, that\'s Robert with a secret.<br><br>Robert, no one cares who or what you know that you can\'t tell. Stop letting your feelings of technical genital inadequacy get the better of you.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647751">\
	 <div id="dsq-comment-header-9647751" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647751" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647751" href="http://mndoci.com/blog" target="_blank" rel="nofollow">Deepak</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647751" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647751" class="dsq-comment-message">I am a marketer and to be honest I think "more features" is an engineering mindset (having been on that end as well).  Vista should focus on the correct features, not making it everything for everyone, cause that only fulfils the law of diminishing returns.<br><br>I am a Linux user, but the great thing about OSX was that Apple basically tossed out their existing OS model and built something completely new.  Vista should not be an upgrade on XP, but something completely and not just a clone of OSX either.  The OS world could have used a shot in the arm, which I don\'t think Vista is going to be.  I could be (hope to be) wrong, since I do use windows, but I signs suggest otherwise.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647748">\
	 <div id="dsq-comment-header-9647748" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647748" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647748" href="http://www.cypherxero.net/" target="_blank" rel="nofollow">Cody</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647748" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647748" class="dsq-comment-message">Getting rid of bloat in the OS does mean you have to get rid of all the features. Sure, you might have to cut a feature or two from it, but what I mean is to re-work the code and strip away everything that makes it bloated. Why should feature X use 75% CPU power and 40% of RAM when it can use much less?<br><br>And about system resources, my BSD machine is currenly using 8MB of the available 192MB of RAM. My BSD box can do anything and everything Windows can do. Now tell me again why I need 1GB of RAM to use Vista properly.<br><br>You know, you can keep this up all day, but the people that know their shit are going to keep blasting Vista for good reason. It sucks.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647743">\
	 <div id="dsq-comment-header-9647743" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647743" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647743" href="http://www.alijahgreen.spaces.msn.com/" target="_blank" rel="nofollow">Alijah Green</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647743" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647743" class="dsq-comment-message">THE AVERGE PERSON DOESN\'T EVEN KNOW ABOUT A NEW OPERATING SYSTEM FROM MICROSOFT THEIR HAS NOT BEEN ANY MARKETING YET,  SO IF YOU DON\'T KNOW ABOUT IT HOW WOULD THEY (AVERGE CONSUMER) REMEMBER A SLIP ANYWAY.  MORE SUPPORT FROM THE GEEKS OUT THERE.  YOU GUYS REMIND ME OF A BUNCH OF B____!!. THANK GOD SCOBLE STILL CARES.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647744">\
	 <div id="dsq-comment-header-9647744" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647744" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647744" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647744" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647744" class="dsq-comment-message">Barrington: &gt;Please , please , please stop dropping WWDC hints.<br><br>I\'d tell you more if Apple didn\'t demonstrate it is willing to sue bloggers to find out how they found out that secret information. Apple enjoys this anyway. It\'s hype. It\'ll get you to watch the news stream coming from the WWDC.<br><br>Jared: &gt;When a entire team fails on a NFL Team it’s the coach that gets the blame.<br><br>Yup, I understand that and there is lots of blame coming to the coaches too. But I\'d rather fight the mob tendencies. Even where the coach gets blamed, the team shares some of the blame too. And, what happens when the new coach comes in? A house cleaning, usually.<br><br>&gt;And what the hell is so bad about thinking like an engineer? Great engineering is why people like BMW.<br><br>Absolutely wrong. The fact that you think that way is because of the great marketing. But if you let a car engineer have his or her way without thinking about the customer every car would end up like a Ferrari or a Porsche. Funny joke: "what do you get when you ask Porsche customers what they want? Answer: a Volvo."<br><br>John: "Robert, I’ve done user support for:"<br><br>Really? You worked at Microsoft on the support lines? I was talking about that. Microsoft is a business. If someone calls the support line they lose money. So, they put lots of annoying things in their products to reduce the numbers of phone calls. Note: I hate them too. But each dialog was put there for a reason with lots of thought.<br><br>Ahsan: Bill Gates now agrees with you. The reason Longhorn was redone was he put too many features in that were built on too many undone technologies. Boiling the ocean as a software development approach doesn\'t work at the scale Microsoft was trying to do it.<br><br>Deepak: "I am a Linux user, but the great thing about OSX was that Apple basically tossed out their existing OS model and built something completely new. "<br><br>Yeah, and Apple really pissed off its existing customer base who had to wait years to get QuarkXpress done.<br><br>And what did it take to get Apple to that point? A falling marketshare that was headed into obscurity. You do remember the "Pray" headline on BusinessWeek\'s covers to Apple faithful, right? Microsoft isn\'t being pushed into such desperate measures. To do what Apple did would kill Microsoft. I\'d short it big time. Why? Cause Microsoft has a healthy customer base (its sales and profits are continuing to go up, even with the attack of Linux and Apple stuff).<br><br>Rewriting the OS would be a disaster. Why? Cause the C and Assembler bit heads who built Windows don\'t work at Microsoft anymore. What, you want your OS to be rewritten in .NET? Yeah, that\'ll really be performant.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647742">\
	 <div id="dsq-comment-header-9647742" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647742" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647742" href="http://andrewbfife.blogspot.com/" target="_blank" rel="nofollow">Andrew Fife</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647742" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647742" class="dsq-comment-message">Why do you have to "attack" anyone?  I believe that one can be critical without attacking.  Using the word "attack" to describe your criticism puts people on the defensive, which is counter productive if your goal is to engage them in debate.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647740">\
	 <div id="dsq-comment-header-9647740" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647740" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647740" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647740" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647740" class="dsq-comment-message">Andrew: when a journalist does shoddy journalism someone needs to point that out. I don\'t want to debate such a person. I want them to be professional.<br><br>Blegh: “Customers” don’t want spyware or viruses but Microsoft doesn’t care enough to actually usher in policies that make spyware impossible in the first place, eliminating the need for constant security updates.<br><br>That\'s the problem. Not a single customer was asking about those things in the 1980s. They didn\'t even know that spyware and viruses were possible. And the engineers didn\'t design their software for those uses.<br><br>By the way, Windows Vista makes spyware a lot lot lot harder. I won\'t say impossible, because there aren\'t absolutes in the security industry, but it\'s a HUGE step up and one that I can\'t wait for.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647741">\
	 <div id="dsq-comment-header-9647741" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647741" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647741">blegh</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647741" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647741" class="dsq-comment-message">haha, someone took a crap in scoble\'s cheerios today. good luck being an aggro pissant, dude. later.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647739">\
	 <div id="dsq-comment-header-9647739" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647739" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647739" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647739" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647739" class="dsq-comment-message">Blegh: thank you for agreeing that you weren\'t right. :-)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647764">\
	 <div id="dsq-comment-header-9647764" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647764" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647764" href="http://ordinaryworldz.com/" target="_blank" rel="nofollow">Jared Smith</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647764" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647764" class="dsq-comment-message">Scoble - Anyone who says they can accurately predict when software will be ready is a liar. If you expect accurate ship dates in the software industry you’ll constantly go unsatisfied.<br><br><br>Alijah - THE AVERGE PERSON DOESN’T EVEN KNOW ABOUT A NEW OPERATING SYSTEM FROM MICROSOFT THEIR HAS NOT BEEN ANY MARKETING YET, SO IF YOU DON’T KNOW ABOUT IT HOW WOULD THEY (AVERGE CONSUMER) REMEMBER A SLIP ANYWAY. MORE SUPPORT FROM THE GEEKS OUT THERE. YOU GUYS REMIND ME OF A BUNCH OF B____!!. THANK GOD SCOBLE STILL CARES.<br><br>These comments make me think you guys think Vista is 6 months late or even a year late. Vista is LATE!!! I can understand software can be late but this is getting ridiculous</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647765">\
	 <div id="dsq-comment-header-9647765" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647765" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647765" href="http://mndoci.com/blog" target="_blank" rel="nofollow">Deepak</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647765" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647765" class="dsq-comment-message">Robert, but the proof of the pudding lies in the eating, doesn\'t it.  One has to have confidence in the product.  If Apple had continued down the path with OS9 etc, then they really would be a purely iPod company.  Yes there were people who were mad (I know some of them).  The reason so many people are using powerbooks today (apart from the cool factor) is the OS.  With the switch to intel, they took another risk (I am not sure its going to pan out, but that\'s another thread).  Microsoft has to take calculated risks (I admit its too late for Vista at this point).  If it continues along its current path, as the OS becomes less of a focal point, the user experience will become critical. A few years ago, who would have thought that a number of people at leading biotech or software companies (just to use Google as an example) would be using a Mac at work.<br><br>The point is that by taking risks Apple has resurrected itself from the mess it was in around 10 years ago.  Microsoft should not rest on the safety net of its market share.  Consumers are hoping to see some risk taking and something fresh.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647759">\
	 <div id="dsq-comment-header-9647759" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647759" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647759" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647759" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647759" class="dsq-comment-message">Deepak: I agree with you, and so does Bill Gates and others. The problem is that they bit off too much at the beginning of Vista. Even today the app compat story is gonna be pretty bad because they turned off administrator as default (for security reasons, which is the right thing to do, but it\'ll break a lot of software out there that relied on having administrator permissions).</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647760">\
	 <div id="dsq-comment-header-9647760" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647760" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647760">sam</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647760" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647760" class="dsq-comment-message">Nerd patrol citation: The "Pray" cover was on Wired Magazine, not BusinessWeek.<br><br>You are seriously setting my expectations high for the WWDC with these hints. Most of the buzz I\'ve heard has been about the iPhone, and since the latest iPod/iTunes update makes reference to a phone in hidden preference strings, it\'s a credible rumor.<br><br>But the way I read your latest hints, I\'m anticipating something like a tablet.<br><br>Maybe they\'ll announce BOTH!<br><br>I wish I had a brother who worked at Apple.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647753">\
	 <div id="dsq-comment-header-9647753" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647753" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647753" href="http://www.cypherxero.net/" target="_blank" rel="nofollow">Cody</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647753" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647753" class="dsq-comment-message">There\'s nothing convincing about Windows Vista anyways. Ooohhh, so there\'s a Media Center, and *gasp* shitty Voice Recognition! Wow! Ugh.<br><br>It\'s always good to know your next OS is going to ship with shit you don\'t care about and use up all your resources for it. Thanks, Microsoft.<br><br>I love 100% CPU usage from my OS! *walks away in disgust*</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647746">\
	 <div id="dsq-comment-header-9647746" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647746" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647746">Simo</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647746" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647746" class="dsq-comment-message">Nothing like discussing a Windows ship date to get people\'s hackles up. Cody said, in the comments of a previous post, "Instead of putting in MORE bloat, they need to seriously re-work Windows." etc.I agree with Cody, but probably disagree with his definition of bloat. Bloat = "feature(s) you personaly don\'t use". I say, lose the backwards compatability for MSDOS6 applications, Win 1-3.11, Win9x, etc. I\'m not planning on needing them in 2010 when Blackcomb might ship.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647745">\
	 <div id="dsq-comment-header-9647745" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647745" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647745" href="http://bthomason.wordpress.com/" target="_blank" rel="nofollow">Brett Thomason</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647745" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647745" class="dsq-comment-message">Common SCOBY, tell me what WWDC is all about!!!!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647747">\
	 <div id="dsq-comment-header-9647747" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647747" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647747">Farhan</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647747" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647747" class="dsq-comment-message">Cody:<br><br>If your BSD box can do anything a Windows box can, then why don\'t you convince 90% of the market to convert? There are good reasons to use BSD and good reasons to use Windows.<br><br>Just because you consider yourself an elitist hacker, doesn\'t mean the world should go with your opinion.<br><br>Also, the reason why your BSD box is using such little memory is because it is not running a GUI shell. Try loading up Gnome 2.6.x and then look at the stats. Yes, Windows comes with Explorer pre-installed and tightly coupled, and then again, it is for good reason.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647750">\
	 <div id="dsq-comment-header-9647750" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647750" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647750" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647750" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647750" class="dsq-comment-message">Cody: stop playing Halo 2. Oh, wait, you\'re on BSD and can\'t play.<br><br>And, as for Media Center? You know I\'m gonna use your words against you when Apple announces such, right?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647738">\
	 <div id="dsq-comment-header-9647738" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647738" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647738" href="http://www.cypherxero.net/" target="_blank" rel="nofollow">Cody</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647738" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647738" class="dsq-comment-message">I don\'t play Halo anymore, and I\'ve never played Halo 2. You just don\'t know what OpenBSD can do, and you mock it like all it can do is add numbers together. Which is sad.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647737">\
	 <div id="dsq-comment-header-9647737" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647737" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647737">Karim</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647737" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647737" class="dsq-comment-message">BSD can subtract numbers too!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647732">\
	 <div id="dsq-comment-header-9647732" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647732" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647732" href="http://blog.stealthmode.com/" target="_blank" rel="nofollow">Francine Hardaway</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647732" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647732" class="dsq-comment-message">Is this a blog or a high school class? I always read for the information, and when I have to sort through all the invective, it slows me down.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647729">\
	 <div id="dsq-comment-header-9647729" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647729" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647729" href="http://blog.macb.net" target="_blank" rel="nofollow">macbeach</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647729" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647729" class="dsq-comment-message">"Rewriting the OS would be a disaster. Why? Cause the C and Assembler bit heads who built Windows don’t work at Microsoft anymore. What, you want your OS to be rewritten in .NET? Yeah, that’ll really be performant."<br><br>Huh?  I thought the original plan was to write much of Vista in .net no? (yes, I know they blame some of the delay on failure to get this to work).  But if they are not writing it in .net, and not writing it in C or assembler, then what?  Perl? PHP?  This is really news.  You should make a headline out of it.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647730">\
	 <div id="dsq-comment-header-9647730" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647730" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647730" href="http://www.blackbagops.net/" target="_blank" rel="nofollow">Todd Blanchard</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647730" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647730" class="dsq-comment-message">TomB: “MSFT had a chance to re-work the OS and put it on top of a BSD or a LINUX kernel....”<br><br>Scoble: Sorry, throwing application compatibility out the window would be monumentally STUPID. Stop thinking like an engineer. Start thinking like a customer.<br><br>Actually, they could have tossed the proprietary underpinnings and KEPT application compatibility.  Apple did it with Carbon.  They open sourced the plumbing (darwin) and focused on the application api layer up, adding compatibility apis where necessary.<br><br>Maintaining the core OS can\'t be cheap, adds no end user value, and gratuitous incompatibility with Unix apis locks out lots of good open source stuff that Mac users are getting for free now.  Better to leverage the open source goodness at the bottom and focus on the visible bits and app level apis.<br><br>It could have been done without loss of app compatibility for existing apps - but it requires the will to do it.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647731">\
	 <div id="dsq-comment-header-9647731" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647731" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647731" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647731" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647731" class="dsq-comment-message">Todd: really? I heard howls from Apple users who had software that didn\'t work on OSX, and there is relatively little software that runs on OSX.<br><br>Changing the underpinings of Windows isn\'t something done lightly and probably won\'t happen unless Microsoft goes into deep financial pain which certainly isn\'t happening this year.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647736">\
	 <div id="dsq-comment-header-9647736" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647736" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647736" href="http://ichbineinberliner.wordpress.com/" target="_blank" rel="nofollow">tom</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647736" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647736" class="dsq-comment-message">I have a couple of addons to my xp like a burning program for .iso, \'launchy\' as my application opener and document retrieval-er, filezilla for ftp and µtorrent for torrents. But if these applications were built in into windows, I\'d use the windows applications.<br><br>So, stuff vista with all these things, add some better security, and it is sold to me. I do not care if it uses all my ram, as long as it works without problems. (i agree that the nagging should be less)<br><br>besides, if you are checking your ram usage, i do not think you are the average user...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647733">\
	 <div id="dsq-comment-header-9647733" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647733" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647733" href="http://www.guyswithtowels.com/" target="_blank" rel="nofollow">Tim</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647733" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647733" class="dsq-comment-message">"Actually, they could have tossed the proprietary underpinnings and KEPT application compatibility. Apple did it with Carbon."<br><br>And Microsoft did it with NT.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647734">\
	 <div id="dsq-comment-header-9647734" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647734" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647734" href="http://in-cider.spaces.msn.com/" target="_blank" rel="nofollow">Cider</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647734" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647734" class="dsq-comment-message">Vista is now what it always should have been - an evolutionary step up from XP, as opposed to a revolutionary one.  Much of the best stuff in Vista are things that are steps up from XP - some small such as the new audio stack and tablet functionality baked in, some massive, such as the security and IE 7.  Indeed, virtually no one mentions and no one sees some of the best steps forwards such as WIM and the new network stack.<br><br>Overall, I\'m starting to really like it, but think it is still 3-4 months from Gold.  Scoble is right on one thing:  most don\'t care about the lateness - if it releases relatively bug-free, the response from the everyday folk (ie.  not by sociopaths like Cody) will be very favourable.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647763">\
	 <div id="dsq-comment-header-9647763" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647763" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647763" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647763" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647763" class="dsq-comment-message">MacBeach: the core of Longhorn was never going to be totally rewritten, even before the redesign.<br><br>Certainly not in .NET. The fact that you think you can write the kernel in ANY high-level language demonstrates you have never been close to an OS development team.<br><br>The parts that were up for rewriting were much higher up the stack like pieces of the UI stack and the search engines and such.<br><br>.NET was scrapped for those because .NET wasn\'t ready and they wanted to remove intra-team dependencies to help it ship.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647752">\
	 <div id="dsq-comment-header-9647752" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647752" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647752" href="http://www.cypherxero.net/" target="_blank" rel="nofollow">Cody</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647752" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647752" class="dsq-comment-message">&gt;not by sociopaths like Cody<br><br>Yes, because I\'m the only one that\'s giving real criticism for Windows Vista.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647728">\
	 <div id="dsq-comment-header-9647728" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647728" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647728" href="http://sparkplug9.com/bizhack/" target="_blank" rel="nofollow">John Koetsier</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647728" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647728" class="dsq-comment-message">Nothing like a real opinion to bring out the sharp knives and hateful comments.<br><br>Scoble, I know that getting a lot of comments that are negative, nasty, and just plain stupid can start to weigh on you sometimes - don\'t let it.<br><br>Thanks for your blog and for calling \'em as you see \'em.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647735">\
	 <div id="dsq-comment-header-9647735" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647735" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647735" href="http://acidzebra.blogspot.com/" target="_blank" rel="nofollow">Michiel</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647735" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647735" class="dsq-comment-message">"I want an OS that’ll protect me against phishing attacks"<br><br>OK, yes on the features, as long as I can either turn them off or they are off by default. But Robert, if we are going to have to rely on a machine to protect us against low-level social engineering then all hope is lost. No OS will ever protect against human stupidity.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647724">\
	 <div id="dsq-comment-header-9647724" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647724" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647724">LayZ</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647724" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647724" class="dsq-comment-message">I\'m confused. First you lambast people for "thinking like engineers and not like customers" then you praise the engineers for giving customers something they would never think to ask for,,because, well...they thought like an engineer?  Boy, you are a master at covering your ass.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647726">\
	 <div id="dsq-comment-header-9647726" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647726" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647726">LayZ</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647726" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647726" class="dsq-comment-message">Hey, Robert, this wouldn\'t happen to be your brother, would it? :-)<br><br><a href="http://secretdiaryofstevejobs.blogspot.com/" rel="nofollow">http://secretdiaryofstevejobs.blogspot.com/</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647725">\
	 <div id="dsq-comment-header-9647725" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647725" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647725" href="http://markr.wordpress.com/" target="_blank" rel="nofollow">Mark Reinhold</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647725" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647725" class="dsq-comment-message">this is FUN. I was going to tell Robert to tell us what he really thinks; then I read the replies.<br><br>I like BSD too. I have a BSD machine and XP 64 bit machine and I like them both for different reasons.<br><br>And I like my HD TV. but am waiting for HD DVD machines to come down. I am in the bay area but moving to Costa Rica where they have no army. the wars between OSs is enough now for me.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647718">\
	 <div id="dsq-comment-header-9647718" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647718" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647718" href="http://www.bynkii.com/" target="_blank" rel="nofollow">John C. Welch</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647718" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647718" class="dsq-comment-message"><i>I’d tell you more if Apple didn’t demonstrate it is willing to sue bloggers to find out how they found out that secret information. Apple enjoys this anyway. It’s hype. It’ll get you to watch the news stream coming from the WWDC.</i><br><br>What news stream? Apple doesn\'t do live streams of keynotes anymore, and the rest of the conference is NDA\'d. Like I said last year, telling you a secret is riskier than telling a parrot. The parrot MIGHT shut up about it.<br><br><i>John: “Robert, I’ve done user support for:”<br><br>Really? You worked at Microsoft on the support lines? I was talking about that. Microsoft is a business. If someone calls the support line they lose money. So, they put lots of annoying things in their products to reduce the numbers of phone calls. Note: I hate them too. But each dialog was put there for a reason with lots of thought.</i><br><br>No robert, I\'ve not worked for Microsoft, nor have I ever had any real interest in it. I\'ve dealt with enough tottering beauracracy and unfocused mindsets to last me a lifetime. However, what I AM saying is that I\'ve done a crapload more user support over the last 20 years than YOU have, and I can tell you that the "Why won\'t windows STFU" was one of the top 5 complaints I heard. They never bothered calling Microsoft on it, as a) it was annoying, not broken, and b) Microsoft was never going to change this anyway. But if you ever get out of your tech bubble, you\'d find that people are FAR more annoyed with Windows than you think.<br><br><i>Yeah, and Apple really pissed off its existing customer base who had to wait years to get QuarkXpress done.</i><br><br>Well, no, actually, they were far more pissed off at Quark. But Classic did work really well, and had Quark not tried to foist Xpress 5.x off on people, their dropping customer share might have not hemmorhaged so badly.<br><br>Adobe however was DELIGHTED with Quark, hence InDesign stomping Quark continuously now. If you think anyone using Xpress was ever happy with that company, you\'re real confused.<br><br><i>That’s the problem. Not a single customer was asking about those things in the 1980s. They didn’t even know that spyware and viruses were possible. And the engineers didn’t design their software for those uses.</i><br><br>No, but Microsoft also let the marketing dipwads decide that security and reliablity were second to everything else. Hence the lower reliability in NT 4 compared to NT 3.5.1, and the utter, unjustifiable stupidity of not only making the default user *root*, but not even REQUIRING a password. Microsoft built insecurity into NT/2000/XP, and they reaped the rewards of their work.<br><br><i>Todd: really? I heard howls from Apple users who had software that didn’t work on OSX, and there is relatively little software that runs on OSX.</i><br><br>Really? I bet if we both go to SourceForge with stock installs of Mac OS X and Windows, I\'ll win. Yeah, you keep forgetting all the stuff that\'s NOT windows that runs on Stock OS X. No Cygwin needed. But nice try.<br><br>It\'s so nice to see you\'re still keeping that inner 12 year old handy.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647719">\
	 <div id="dsq-comment-header-9647719" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647719" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647719" href="http://blog.macb.net" target="_blank" rel="nofollow">macbeach</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647719" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647719" class="dsq-comment-message">"Certainly not in .NET. The fact that you think you can write the kernel in ANY high-level language demonstrates you have never been close to an OS development team."<br><br>You know what they say about people who ASSUME.<br><br>You need to distinguish between "high level" code and interpreted code.  Some might consider C high level.  But high level code, no matter what the original language can be optimized.<br><br>Who said anything about kernel code?  Not I.  Is most of Windows implemented in the kernel?   Again, this is news.<br><br>You can mix and match low/high compiled/interpreted code (note: talking two different issues there) all you want as long as code that gets executed a LOT is non-interpreted and has been optimized (by writing it in assembler or using a very good optimizing compiler).<br><br>But even interpreted code isn\'t necessarily slow.  APL is an interpreted language, but I\'d put it\'s ability to do matrix manipulation up against any average C programmer, because the matrix operation are all "primitives" in APL and the matrix work is highly optimized (at least for any commercial version).<br><br>And while we\'re at it, your comment much earlier about implementing Windows on top of BSD is at best misleading.  The WINE project is an attempt to implement as much of the Widows API as possible on top of another base OS.  This is a reverse-engineering effort, and is far from perfect.  But is was a good enough base to allow Google to port Picassa to Linux relatively quickly.<br><br>Given the actual Windows code (and the rights to use it of course) Microsoft could do a near perfect re-implementation of the Windows user and driver interface just about anywhere they wanted to.<br><br>I don\'t happen to think that the VMS underpinnings (to the extent that the VMSness hasn\'t been tweaked out of existence) are the source of Windows flaws (WINE has proven that the flaws port quite well).   On the other hand, there is nothing inherently spectacular about that VMS history.  In fact there is something quite spectacular about your original comment, which I\'ll re-quote:<br><br>"Cause the C and Assembler bit heads who built Windows don’t work at Microsoft anymore. "<br><br>All the more reason to build Windows on top of a base that is still openly maintained by exactly that sort of "bit-head".  It is exactly at that level that there is no longer any significant competitive advantage in maintaining proprietary code.  When is that last time you heard a Windows user complain about inadequacies in the Windows HAL (Hardware Abstraction Layer)?  Same issue.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647720">\
	 <div id="dsq-comment-header-9647720" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647720" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647720">solomonrex</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647720" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647720" class="dsq-comment-message">Let\'s look at Windows\' Vista for a second.<br>Major new features:<br>1. Desktop search is added, like Apple has had, even though there are several completely free 3rd party apps from Google, Yahoo and... MSN.<br>2. A new security model, different from anything the most respected secure OSs use.  It\'s reported to be extremely annoying and difficult to use with legacy apps.<br>3. A new graphics system is added into Windows, that will sit beside Windows Themes that most people disable that was tacked onto XP as a skin to impress the dimwitted.  Hey, I thought it was pretty neat, too...<br>4. widgets system also offered by Apple for a long time, and offered for free by 3rd parties, AND a drain on resources.  A semi-useful system for little apps, until it becomes a security issue.<br><br>Problems?<br>1. Current issues not fixed by Vista: system tray, notifications in general, focus issues, IE integration, zillion online apps that run in background that won\'t move to widgetland.<br>2. Simple innovations that MS could corner the market on are being ignored.  Groove, Steam-like games store, online-integration with Calendar/email/etc., Xbox Live community/marketplace equivalent.<br>3. The security in XP is fine, especially since most of us now use a wireless router (most of us do now).  And corporate computers are always locked down.  I\'m not sure you can ever stop spyware and phishing on the consumer end, since you have to allow people to download and install apps off the internet.<br><br>MS is treading water.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647721">\
	 <div id="dsq-comment-header-9647721" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647721" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647721">solomonrex</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647721" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647721" class="dsq-comment-message">Why doesn\'t Vista chuck compatibility at least for the consumer version?  It seems like the idea is to sell faster hardware, and the virtual software that would run legacy apps (like the original Civ or Starcraft) would certainly need it.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647714">\
	 <div id="dsq-comment-header-9647714" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647714" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647714">Chris</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647714" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647714" class="dsq-comment-message">Microsoft\'s biggest problem? It can\'t say no. The requirements for Vista are horrid. We all know that Vista could run on a 700Mhz machine. But that wouldn\'t sell new computers would it? Some things are slowly getting better over at MSFT; and I guess some things never change. The reason you have WGA built into Vista is because you have a salesman as your CEO. Plain and simple.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647715">\
	 <div id="dsq-comment-header-9647715" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647715" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647715">James Halpern</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647715" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647715" class="dsq-comment-message">MS can most certainly meet their ship date. If bugs aren\'t resolved by October then they\'ll be available through Microsoft Update once Vista is installed on individual machines.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647713">\
	 <div id="dsq-comment-header-9647713" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647713" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647713">Reality Lives Here</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647713" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647713" class="dsq-comment-message">"And what the hell is so bad about thinking like an engineer? Great engineering is why people like BMW. "<br><br>Which is also why BMWs are a niche market.  If BMW was gunning for 95% or the market, it\'d be hello Honda and Toyota clone.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647722">\
	 <div id="dsq-comment-header-9647722" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647722" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647722">Goebbels</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647722" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647722" class="dsq-comment-message">"I heard howls from Apple users who had software that didn’t work on OSX, and there is relatively little software that runs on OSX."<br><br>There is more software on OSX than on OS9.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647723">\
	 <div id="dsq-comment-header-9647723" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647723" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647723" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647723" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647723" class="dsq-comment-message">Goebbels: I meant to write that there was very little software on OS9 compared to the amount that runs on Windows. Sorry and thanks for correcting me.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647727">\
	 <div id="dsq-comment-header-9647727" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647727" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647727" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647727" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647727" class="dsq-comment-message">Reality: I think a Toyota or a Ford that costs less than $20,000 is better engineering than a BMW, by the way. It\'s easier to build a great $40,000 car cause you can use the best components. It\'s a lot harder to engineer a low-cost one that still is great.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647717">\
	 <div id="dsq-comment-header-9647717" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647717" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647717">Jamie</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647717" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647717" class="dsq-comment-message">The most interesting thing about this article are the Apple hints.<br><br>And im a Microsoft employee!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647716">\
	 <div id="dsq-comment-header-9647716" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647716" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647716">Christopher Coulter</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647716" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647716" class="dsq-comment-message"><i>it&#8217;ll be far worse to be remembered for shipping an OS that isn&#8217;t finished</i><br><br>True. But it\'s already unfinished, no matter what happens, WinFS gone, P2P tech gone, this that, everything halfway cool, that was promised, gone, gone. So even the good (delayed) finished is yet unfinished.<br><br>But not your fight anymore, let it be. ;) It\'s all just wacking the hornets nest now.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647711">\
	 <div id="dsq-comment-header-9647711" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647711" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647711" href="http://www.cypherxero.net/" target="_blank" rel="nofollow">Cody</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647711" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647711" class="dsq-comment-message">Scoble, what the hell? In this post, you wrote:<br><br>"I don’t want to see blogs that, when it finally ships, says \'wait for the service pack.\'"<br><br>And a few posts below this one, you wrote:<br><br>"I will recommend not installing it and waiting for the first service pack."<br><br>You should be hating your blog right about now then...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647712">\
	 <div id="dsq-comment-header-9647712" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647712" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647712" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647712" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647712" class="dsq-comment-message">Cody: it\'s clear to me.<br><br>If it ships in October, wait for the service pack.<br><br>I hope not to have to tell you that. I hope it slips and they put out an awesome product that you WON\'T need to wait for the service pack for.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647710">\
	 <div id="dsq-comment-header-9647710" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647710" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647710">Cybereer</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647710" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647710" class="dsq-comment-message">&gt;&gt; And the Tablet PC, Speech Recognition, and Media Center stuff that’s in there is WORLDS ahead of Apple.<br><br>What the heck are you talking about?  Every single Mac can understand voice commands since" 15 years ago, and Apple even shipped a Chinese language kit with impressive voice and handwriting recognition functions in early 1990s, long before Bill Gates started hyping it and the recent Vista "Dear Aunt" fiasco.<br><br>I thought you used to be a Mac geek, but obviously that\'s not the case.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647709">\
	 <div id="dsq-comment-header-9647709" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647709" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647709">Ken</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647709" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647709" class="dsq-comment-message">Am I the only one who wants this to be an absolute failure, one that brings the company to its knees?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647708">\
	 <div id="dsq-comment-header-9647708" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647708" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647708" href="http://www.bynkii.com/" target="_blank" rel="nofollow">John C. Welch</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647708" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647708" class="dsq-comment-message"><i>Reality: I think a Toyota or a Ford that costs less than $20,000 is better engineering than a BMW, by the way. It’s easier to build a great $40,000 car cause you can use the best components. It’s a lot harder to engineer a low-cost one that still is great.</i><br><br>Robert, you keep saying that like it\'s true. You\'re confusing good engineering with being able to build a decent cheap car. There\'s a difference. There\'s a lot of stuff you get standard for that $40K that you pay extra for on the 20K cars. ABS is STILL an extra cost feature, in spite of the clear evidence that it has no drawbacks and is a fantastic way to reduce injuries and death by reducing accidents.<br><br>Note also that BMW does make $20K cars. The Mini for one.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647707">\
	 <div id="dsq-comment-header-9647707" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647707" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647707" href="http://yata.wordpress.com/" target="_blank" rel="nofollow">Pradeep</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647707" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647707" class="dsq-comment-message">hi,<br>    I know you can\'t time a software, coz I have friends who work in a software company and they tell me what it\'s like. This is their suggestion to let them take it easier.<br>   A simultaneous team develops the next generation software while you release. So, when MS is releasing its Vista, another team can be working on the next version of Vista.A team of, say, maybe 10 members working out what the next package should have and put in the basic codes that\'s the basis of all Windows systems. Then you get the other coders (or atleast most of them) to work on it while you\'re shipping Vista. After you\'ve finished say 90% of the job. You put a shipping date 6 months away.You meet the targets.<br><br> I know it\'ll not be so easy in implementation. Coz my friends are just talking from the employee point of view and not the overall development. But, can the software industry work like that??</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647704">\
	 <div id="dsq-comment-header-9647704" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647704" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647704">Booger</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647704" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647704" class="dsq-comment-message">Robert<br><br>Wowsa - you say, "I went back to XP on my Lenovo Tablet PC because Vista was sluggish and the drivers weren’t reliable). Application compatibility (I’m hearing that many apps are having problems). Driver compat (my Dell computer at Microsoft never worked completely, and a coworker called me a few days ago to ask \'did you ever get the soundcard working?\')"<br><br><br>what\'s happened? We\'ve had months of the following:<br><br>March 16 2006 – why vista is better than XP: “My test? Use Vista for a month then see if you can move back to XP. I am finding it frequently frustrating to move back as I get used to new things in Vista.”<br><br>February 20 2006 – Penny Arcade wonders why Halo is on Vista: “On Windows Vista the audio and video continue playing just fine with the same level of stress (on the same hardware). It’s a dramatic example of how much better multimedia will be on Windows Vista.”<br><br>January 22, 2006 – Why do I need Windows Vista: “So, today we were arguing out just how good Windows Vista is on an internal mailing list. Someone said “XP is good enough for me.” And I answered back with 15 videos about why I’m moving my life over to Windows Vista.”<br><br>January 2 2006 – Hell’s weather Report: “we should get you Windows Vista. I’m running it on a Tablet PC and it’s getting to be pretty interesting. Everyone I’ve shown it to says they are gonna get it.”<br><br>December 26 2005 – Hope Your Christmas Went Well: “Me too, after switching half of my life over to Windows Vista and Office 12 it’s really hard to go back to XP and Office 2003.”<br><br>If you were concerned about driver support and these other things, why didnt you say it? This is a significant error in omission if you had lingering concerns about something that others had noted about the subject. Should we read comments such as "switching half my life over to Vista" differently than we have in the past?  Like you said yourself, "who will listen to an evangelist who tells you something that you already know isn’t true..."<br><br>Booger</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647703">\
	 <div id="dsq-comment-header-9647703" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647703" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647703">Diego Barros</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647703" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647703" class="dsq-comment-message">What\'s all this about Vista\'s lack of performance. The team has taken care of it! :)<br><br><a href="http://channel9.msdn.com/ShowPost.aspx?PostID=221908#221908" rel="nofollow">http://channel9.msdn.com/ShowPost.aspx?PostID=2...</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647700">\
	 <div id="dsq-comment-header-9647700" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647700" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647700">ChrisMc</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647700" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647700" class="dsq-comment-message">Dude these people who are bashing Vista are just afraid of "CHANGE"...reminds me of my 69 year old mom who can\'t get over using a "credit card" to pay for gas!<br><br>Like any software, its new, there will be some kinks to work out, but the progress is something to look forward to. I love the new WMP11, and Vista has lots of promise, so I\'m excited for all the changes!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647699">\
	 <div id="dsq-comment-header-9647699" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647699" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647699">LayZ</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647699" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647699" class="dsq-comment-message">Booger, why to take Scoble\'s challenge and go back and look at what Scoble said about Vista. Brilliant!<br><br>How do you plan to cover your ass now, Robert?  About the only way to get out of it is to either say you were a complete and utter MS shill when you worked for them, or to say later builds of Vista are worse than the older builds you were running.  In which case, that says things are getting worse, not better.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647698">\
	 <div id="dsq-comment-header-9647698" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647698" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647698" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647698" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647698" class="dsq-comment-message">Booger: because it takes a while for problems to show up. Modern OS\'s are so stable now that they don\'t crash in the first few minutes like Windows 95 betas did.<br><br>I\'m going to go back to Vista as soon as my new computer arrives. Right now I need to do work and not play with beta OS\'s that work mostly.<br><br>I desperately miss Vista, though, and Office 2007. Can\'t wait to use them again.<br><br>And all those posts I\'ll stand behind. They are all accurate. But playing with betas isn\'t for everyone and shouldn\'t be done on a production machine that you need to rely on. I also said that.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647697">\
	 <div id="dsq-comment-header-9647697" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647697" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647697">Neal</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647697" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647697" class="dsq-comment-message">The biggest and best thing Microsoft can do to make Vista better is make it refuse to run AT ALL on underpowered, underRAMed machines.  No more PC makers selling PCs running Windows on 1/4 to 1/8 the amount of memory that\'s needed for it to be usable.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647696">\
	 <div id="dsq-comment-header-9647696" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647696" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647696">LayZ</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647696" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647696" class="dsq-comment-message">70, Robert, so let me see if I have this straight. Are you saying it took 6 months for the issue you are seeing to surface?  Are you running the same builds of Vista that you ran when you left MS?  Are you running a later build than the one you were speaking so highly of in March?  If so, then it seems the builds are getting worse, not better.<br><br>I find it a bit incredible to believe you\'ve changed your usage patterns such that these issues would start to surface now and not in April, May, June, or July.  Why are they suddenly seeming to surface AFTER you left MS?  Inquiring minds want to know.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647693">\
	 <div id="dsq-comment-header-9647693" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647693" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647693" href="http://www.blackbagops.net/" target="_blank" rel="nofollow">Todd Blanchard</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647693" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647693" class="dsq-comment-message">"I heard howls from Apple users who had software that didn’t work on OSX, and there is relatively little software that runs on OSX."<br><br>Carbon is the old Mac Classic api with a few dangerous calls removed.  It takes a minor update to move a Classic app to Carbon.  Quicken is an example of an app that did this.  Appleworks.  Photoshop.  All written to old apis supported through the Carbon compatibility layer.<br><br>New apps are on Cocoa.  Many are ports of Next apps.<br><br>Plus, we now have the entire unix library available thanks to the X11 layer.  Macs run more software than pretty much everything through being API inclusive.<br><br>Windows is API exclusive.  Surely you get that?<br><br>Also, Ballmer admits his error today.<br><a href="http://www.crn.com/sections/breakingnews/dailyarchives.jhtml;jsessionid=ZEQ0I0LMYJC1MQSNDLPCKHSCJUNN2JVN?articleId=191600739" rel="nofollow">http://www.crn.com/sections/breakingnews/dailya...</a><br><br>Nothing new.  Most experienced developers know that Big Bang development doesn\'t work well.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647694">\
	 <div id="dsq-comment-header-9647694" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647694" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647694">Diegoz</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647694" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647694" class="dsq-comment-message">Sorry people.... Vista is a pathetic imitation (several years in delay) of the best OS around... Mac OS X ... my brother is testing a b. version of vista... all new (and very beta) features are old for mac user... advanced and lightfast search engine, advanced gui, widget etc... look at this video (<a href="http://video.google.it/videoplay?docid=7919991136779006253&amp;q=vista" rel="nofollow">http://video.google.it/videoplay?docid=79199911...</a>) or this one (<a href="http://video.google.it/videoplay?docid=2674791799339834706&amp;q=vista" rel="nofollow">http://video.google.it/videoplay?docid=26747917...</a>) .... poor people with a very poor os system.....</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647706">\
	 <div id="dsq-comment-header-9647706" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647706" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647706" href="http://acidzebra.blogspot.com/" target="_blank" rel="nofollow">Michiel</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647706" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647706" class="dsq-comment-message">no.76: Even though I think Vista will tank I will use it because the alternative is to associate with sad sacks like you. No, wait, I\'m using linux at home. Nevermind. Sap.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647705">\
	 <div id="dsq-comment-header-9647705" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647705" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647705">LayZ</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647705" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647705" class="dsq-comment-message">@74. And apparently Sr. V.P. Brian Valentine gets to take the fall for it by getting put on what appears to be the death sentence of "special projects" (if one reads between the lines)<br><br><a href="http://www.windowsitpro.com/windowspaulthurrott/Article/ArticleID/93002/windowspaulthurrott_93002.html" rel="nofollow">http://www.windowsitpro.com/windowspaulthurrott...</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647695">\
	 <div id="dsq-comment-header-9647695" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647695" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9647695" href="http://www.bynkii.com/" target="_blank" rel="nofollow">John C. Welch</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647695" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647695" class="dsq-comment-message"><i>Carbon is the old Mac Classic api with a few dangerous calls removed. It takes a minor update to move a Classic app to Carbon. Quicken is an example of an app that did this. Appleworks. Photoshop. All written to old apis supported through the Carbon compatibility layer.</i><br><br>If you believe that, i have oceanfront property in Missouri for you. Nice view of the Eiffel Tower. Getting it to initially compile and build may be *relatively*  simple. Getting an OS 9 codebase moved over, built correctly, the UI redesigned correctly, etc., yadda was NOT simple. At all.<br><br><i>New apps are on Cocoa. Many are ports of Next apps.</i><br><br>No, the Next ports are rather small in number. Most new applications are just that, new applications.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647702">\
	 <div id="dsq-comment-header-9647702" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647702" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647702">OS11</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647702" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647702" class="dsq-comment-message">“I heard howls from Apple users who had software that didn’t work on OSX, and there is relatively little software that runs on OSX.”<br><br>A purely laughable comment, there are about 11,000 OS9 or (Classic Apps) and 15,560 OSX Apps, and since OSX runs most every Classic App there are about 26,560 current Apps for Macs today. The software library on OSX is the best in the industry, the quality is stunning!<br><br>And no, Quark Inc. messed up with Xpress, not Apple... but it ran fine in Classic so it was never really an issue.<br><br>Lastly, Mac OS9 was just a stopgap version to bridge over the user from the failed Copland Project. Vista is "MS\'s" Copland Project, so they will end up releasing a major XP Update before Vista appears.<br><br>MS\'s tried to do too much, provide too much legacy support in Vista, when they should have copied what Apple / Steve did and "bury" the old DOS/XP code and start over. OSX is now the leanest, meanest OS there is on the planet, and will overwhelm Vista going forward.<br><br>OSX Leopard on Intel is the next iPod... just watch!<br><br>Monday is going to ROCK the Computing World...<br><br>100\'s of news stories will be here:<br><br><a href="http://www.macsurfer.com/" rel="nofollow">http://www.macsurfer.com/</a><br><br>The tape/digital delay will be here:<br><br><a href="http://www.apple.com/quicktime/qtv/wwdc06/" rel="nofollow">http://www.apple.com/quicktime/qtv/wwdc06/</a><br><br>Last year\'s big announcement is here: fun to watch!<br><br><a href="http://www.apple.com/quicktime/qtv/wwdc05/" rel="nofollow">http://www.apple.com/quicktime/qtv/wwdc05/</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647701">\
	 <div id="dsq-comment-header-9647701" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647701" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647701">Brian Shapiro</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647701" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647701" class="dsq-comment-message">Robert,<br><br>even though I\'ve programmed I wasn\'t too deep into it, to be able to answer this question well---<br><br>do you think if Microsoft was able to migrate everyone to managed code, that it would be much easier to introduce radical changes to the foundations of the Windows code, because old applications would function based on an object model, which could be maintained, or compensated for ?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647766">\
	 <div id="dsq-comment-header-9647766" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647766" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647766">Wesley Parish</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647766" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647766" class="dsq-comment-message">One thing I fail to understand about this whole MS Windows Vista/LongHorn saga, and of course the whole MS Windows Legacy albatross-around-the-neck-thereof, is why Microsoft, being world-famous in Redmond for "innovation" (RT[F]M), hasn\'t done anything with virtual machines and emulation to solve its "can only run as administrator" albatross.<br><br>(Of course, that leads on to the deep and meaningful question of why Microsoft\'s application certification is so stuffed-up that as long as a program runs on MS Windows, it gets the certification, even if it poses a major security risk?  But let\'s leave that to another day, shall we?)<br><br>In Linux I can run anything that demands super-administrator rights in a UML - User-Mode Linux.  To suggest that Microsoft can do the same with its Windows Vista is to suggest that Microsoft is incompetent.<br><br>That could well be the truth.  Who knows?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9647767">\
	 <div id="dsq-comment-header-9647767" class="dsq-comment-header">\
	 <cite id="dsq-cite-9647767" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9647767">Wesley Parish</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9647767" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9647767" class="dsq-comment-message">Oops - "To suggest that Microsoft can do the same with its Windows Vista is to suggest that Microsoft is incompetent."<br><br>should read "To suggest that Microsoft can\'t do the same with its Windows Vista is to suggest that Microsoft is incompetent."<br><br>My bad.</div>\
	 </div>\
	 </li>\
	 </ul>\
';

(function() {
	
	





Dsq.Debug.profile(function() {
	if(Dsq.jsonData.request.page == 1 && Dsq.jsonData.request.is_initial_load) {
		Dsq.container.innerHTML = Dsq.Templates.header() + Dsq.container.innerHTML + Dsq.Templates.footer();
	}
	Dsq.$(Dsq.curPageId).innerHTML = Dsq.$(Dsq.curPageId).innerHTML.replace(Dsq.COMMENTS_RE, Dsq.CommentsHandler);
}); // Dsq.Debug.Profile

// HACK: Resetting cache because we're done with.
Dsq.Utils.gebiFromElementCollectionCache = null;


	
	
	var dsq_styleEl = document.getElementById(disqus_container_id);
	var dsq_anchorEl = document.getElementsByTagName('a')[0];
	
	Dsq.Thread.fc = Dsq.Utils.getStyle(dsq_styleEl, 'color');
	if(dsq_anchorEl) { Dsq.Thread.ac = Dsq.Utils.getStyle(dsq_anchorEl, 'color'); }
	Dsq.Thread.ff = Dsq.Utils.getStyle(dsq_styleEl, (Dsq.Utils.ie || window.opera ? 'fontFamily' : 'font-family'));
	// For Safari / Opera: strip quotes.
	Dsq.Thread.ff = Dsq.Thread.ff.replace(/['"]/g, '');
	Dsq.Thread.fc = encodeURIComponent(Dsq.Thread.fc);
	Dsq.Thread.ac = encodeURIComponent(Dsq.Thread.ac);
	Dsq.Thread.ff = encodeURIComponent(Dsq.Thread.ff);

	
	
	
	if(Dsq.$(Dsq.Templates.addPostContainer)) {
		// TODO: Check to see if theme uses postmessage.
		if (window.disqus_use_postmessage) {
			Dsq.frames['reply_0'] = new Dsq.ReplyFrame(Dsq.$(Dsq.Templates.textareaContainer));
			Dsq.frames['reply_0'].init(function() {
				// Use fallback iframe
				Dsq.$(Dsq.Templates.addPostContainer).innerHTML = '';
				var theme = (typeof disqus_frame_theme == 'undefined') ? 'default' : disqus_frame_theme;
				Dsq.Iframes.showReplyIframeInContainer(Dsq.$(Dsq.Templates.addPostContainer), null, {theme: theme});
				// if(Dsq.Utils.ie) { Dsq.Utils.fixIframesIE(); }
			});
		} else {
			// DEPRECATED
			Dsq.Iframes.showReplyIframeInContainer(Dsq.$('dsq-post-add'));
		}
	}

	
	

	
	if(document.location.hash != '') {
		document.location.hash = document.location.hash.substring(1);
	}

	Dsq.Popup.showCookieMsgs();

	
	if(document.location.search != '' && location.hash != '#disqus_thread') {
		var reply_id = Dsq.Utils.getRequestParams().dsq;
		if(reply_id) { document.location.hash = 'comment-' + reply_id; }
	}

	
	if((typeof OB_Script != 'undefined') && (typeof OB_versionNum != 'undefined')) {
		if(navigator.userAgent.indexOf("Firefox") != -1) {
			if(window.frames['dsq-reply-frame']) {
				window.frames['dsq-reply-frame'].location = Dsq.Urls.REPLY + (new Date()).getTime() + '&f=scobleizer&t=looking_at_vista&to_redirect=' + encodeURIComponent(window.location) + '&ifrs=' + encodeURIComponent(disqus_iframe_css);
			}
		}
	}

	if (Dsq.jsonData.integration.theme == 4) {
		if (Dsq.jsonData.realtime_enabled) {
			Dsq.Realtime.initialize();
		}
	}

	



	window.ExecuteWhen = (function () {
	var obj = {}
	
	// Private
	var running = false;
	var timer = null;
	var pending = [];
	var startTimer = function() {
		running = true;
		timer = setInterval(obj.heartBeat, 100);
	};
	var stopTimer = function() {
		running = false;
		clearInterval(timer);
	};
	
	// Public
	obj.add = function (condition, code) {
		pending.push([condition,code]);
		this.heartBeat(); //!
		if (!running) {
			startTimer();
		}
	};
	obj.heartBeat = function() {
		if (!pending.length) {
			stopTimer();
		}
		var newPending = [];
		for (var i=0; i<pending.length; i++) {
			var cond = pending[i][0];
			var code = pending[i][1];
			// FIXME: if cond or code throw an error, they never get removed from pending
			if (cond()){
				code();
			}
			else {
				newPending.push([cond, code]);
			}
		}
		pending = newPending;
	};
	return obj;
})();

// also used in embed_thread.js:
window.fbIsReady = function () {return window.FB && FB.init;};
// NOTE: This script gets executed again without threadEl
//       set when we are loaded again as the fbc_receiver.
//       In this case, we don't need the hidden container.

if(!window.FB || !FB.init) {
	if(window.Dsq && Dsq.container) {
		// container is not present when init.js is loaded from an xd-receiver iframe; in this case,
		// we don't need the FB_HiddenContainer anyway.
		var fbDiv = document.createElement('div');
		fbDiv.id = "FB_HiddenContainer";	// Required or else FeatureLoader will execute a document.write.
		fbDiv.style.position = 'absolute';	// This is intentionally not setting display to none as this breaks
		fbDiv.style.top = '-10000px';		// Flash in Safari.
		fbDiv.style.left = '-10000px';
		fbDiv.style.width = '0px';
		fbDiv.style.height = '0px';
		Dsq.container.appendChild(fbDiv);
	}
	var fbJS = document.createElement('script');
	fbJS.type = "text/javascript";
	fbJS.src = "http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php";
	document.getElementsByTagName('head')[0].appendChild(fbJS);

	ExecuteWhen.add(window.fbIsReady,
		function () {
			// HACK: This is a workaround FBC's single domain limitation by
			//		 allowing sites to create multiple forums with different
			//		 Facebook API keys.  This must be used in conjunction with
			//		 disqus_facebook_forum (see authenticateFacebook).
			var facebook_api_key = 'faaf467d0f47abde553c3b8e0e1b3570';
			if (typeof disqus_facebook_api_key != 'undefined') {
				facebook_api_key = disqus_facebook_api_key;
			}

			FB.init(facebook_api_key, window.facebookXdReceiverPath || null,
				{fetchSignedPublicSessionData: true});
		});
}


	


if(typeof(disqus_callback) == 'function') {
	var callback_params = Dsq.Utils.getRequestParams()['dsq_cbp'] || null;

	// We don't care about any errors in third-party code
	try {
		disqus_callback(callback_params);
	} catch (x) {
		if (typeof(console) != 'undefined' && typeof(console.log) == 'function') {
			// But it would be nice to let developers know about them
			console.log(x);
		}
		// pass
	}

	// HACK: We don't know if the callback wraps our container, which may
	// possibly result in a new DOM element.
	Dsq.container = document.getElementById('dsq-content');
}

// Global event handler for narcissus.
if (Dsq.jsonData.integration.theme == 4) {
	var g = Dsq.Utils.ie ? document : window;
	Dsq.Utils.addEventListener(g, 'keydown', function(event) {
		// Handle "enter" key on input for post box.
		if ((event.keyCode || event.which) == 13) {
			var target = Dsq.Utils.ie ? event.srcElement : event.target;
			// For Safari bug, detect text node.
			if (target.nodeType == 3) {
				target = target.parentNode;
			}

			if (target.nodeName == 'INPUT' &&
				target.parentNode.className == 'dsq-input-wrapper') {
				var postId = Dsq.Utils.extractId(target);
				Dsq.Templates.postComment(postId, this, false);
			}
		}
	});
}

})();




