loofah 2.3.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of loofah might be problematic. Click here for more details.

Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.gemtest +0 -0
  3. data/CHANGELOG.md +336 -0
  4. data/Gemfile +22 -0
  5. data/MIT-LICENSE.txt +23 -0
  6. data/Manifest.txt +41 -0
  7. data/README.md +363 -0
  8. data/Rakefile +81 -0
  9. data/SECURITY.md +18 -0
  10. data/benchmark/benchmark.rb +149 -0
  11. data/benchmark/fragment.html +96 -0
  12. data/benchmark/helper.rb +73 -0
  13. data/benchmark/www.slashdot.com.html +2560 -0
  14. data/lib/loofah.rb +83 -0
  15. data/lib/loofah/elements.rb +92 -0
  16. data/lib/loofah/helpers.rb +103 -0
  17. data/lib/loofah/html/document.rb +18 -0
  18. data/lib/loofah/html/document_fragment.rb +40 -0
  19. data/lib/loofah/html5/libxml2_workarounds.rb +26 -0
  20. data/lib/loofah/html5/safelist.rb +796 -0
  21. data/lib/loofah/html5/scrub.rb +133 -0
  22. data/lib/loofah/instance_methods.rb +127 -0
  23. data/lib/loofah/metahelpers.rb +13 -0
  24. data/lib/loofah/scrubber.rb +133 -0
  25. data/lib/loofah/scrubbers.rb +297 -0
  26. data/lib/loofah/xml/document.rb +13 -0
  27. data/lib/loofah/xml/document_fragment.rb +23 -0
  28. data/test/assets/msword.html +63 -0
  29. data/test/assets/testdata_sanitizer_tests1.dat +502 -0
  30. data/test/helper.rb +18 -0
  31. data/test/html5/test_sanitizer.rb +401 -0
  32. data/test/html5/test_scrub.rb +10 -0
  33. data/test/integration/test_ad_hoc.rb +220 -0
  34. data/test/integration/test_helpers.rb +43 -0
  35. data/test/integration/test_html.rb +72 -0
  36. data/test/integration/test_scrubbers.rb +400 -0
  37. data/test/integration/test_xml.rb +55 -0
  38. data/test/unit/test_api.rb +142 -0
  39. data/test/unit/test_encoding.rb +20 -0
  40. data/test/unit/test_helpers.rb +62 -0
  41. data/test/unit/test_scrubber.rb +229 -0
  42. data/test/unit/test_scrubbers.rb +14 -0
  43. metadata +287 -0
@@ -0,0 +1,81 @@
1
+ require "rubygems"
2
+ require "hoe"
3
+ require "concourse"
4
+
5
+ Hoe.plugin :git
6
+ Hoe.plugin :gemspec
7
+ Hoe.plugin :bundler
8
+ Hoe.plugin :debugging
9
+
10
+ Hoe.spec "loofah" do
11
+ developer "Mike Dalessio", "mike.dalessio@gmail.com"
12
+ developer "Bryan Helmkamp", "bryan@brynary.com"
13
+
14
+ self.extra_rdoc_files = FileList["*.md"]
15
+ self.history_file = "CHANGELOG.md"
16
+ self.readme_file = "README.md"
17
+ self.license "MIT"
18
+
19
+ extra_deps << ["nokogiri", ">=1.5.9"]
20
+ extra_deps << ["crass", "~> 1.0.2"]
21
+
22
+ extra_dev_deps << ["rake", "~> 12.3"]
23
+ extra_dev_deps << ["minitest", "~>2.2"]
24
+ extra_dev_deps << ["rr", "~>1.2.0"]
25
+ extra_dev_deps << ["json", "~> 2.2.0"]
26
+ extra_dev_deps << ["hoe-gemspec", "~> 1.0"]
27
+ extra_dev_deps << ["hoe-debugging", "~> 2.0"]
28
+ extra_dev_deps << ["hoe-bundler", "~> 1.5"]
29
+ extra_dev_deps << ["hoe-git", "~> 1.6"]
30
+ extra_dev_deps << ["concourse", ">=0.26.0"]
31
+ end
32
+
33
+ task :gemspec do
34
+ system %q(rake debug_gem | grep -v "^\(in " > loofah.gemspec)
35
+ end
36
+
37
+ task :redocs => :fix_css
38
+ task :docs => :fix_css
39
+ task :fix_css do
40
+ better_css = <<-EOT
41
+ .method-description pre {
42
+ margin : 1em 0 ;
43
+ }
44
+
45
+ .method-description ul {
46
+ padding : .5em 0 .5em 2em ;
47
+ }
48
+
49
+ .method-description p {
50
+ margin-top : .5em ;
51
+ }
52
+
53
+ #main ul, div#documentation ul {
54
+ list-style-type : disc ! IMPORTANT ;
55
+ list-style-position : inside ! IMPORTANT ;
56
+ }
57
+
58
+ h2 + ul {
59
+ margin-top : 1em;
60
+ }
61
+ EOT
62
+ puts "* fixing css"
63
+ File.open("doc/rdoc.css", "a") { |f| f.write better_css }
64
+ end
65
+
66
+ desc "generate and upload docs to rubyforge"
67
+ task :doc_upload_to_rubyforge => :docs do
68
+ Dir.chdir "doc" do
69
+ system "rsync -avz --delete * rubyforge.org:/var/www/gforge-projects/loofah/loofah"
70
+ end
71
+ end
72
+
73
+ desc "generate safelists from W3C specifications"
74
+ task :generate_safelists do
75
+ load "tasks/generate-safelists"
76
+ end
77
+
78
+ Concourse.new("loofah", fly_target: "ci") do |c|
79
+ c.add_pipeline "loofah", "loofah.yml"
80
+ c.add_pipeline "loofah-pr", "loofah-pr.yml"
81
+ end
@@ -0,0 +1,18 @@
1
+ # Security and Vulnerability Reporting
2
+
3
+ The Loofah core contributors take security very seriously and investigate all reported vulnerabilities.
4
+
5
+ If you would like to report a vulnerablity or have a security concern regarding Loofah, please [report it via HackerOne](https://hackerone.com/loofah/reports/new).
6
+
7
+ Your report will be acknowledged within 24 hours, and you'll receive a more detailed response within 72 hours indicating next steps in handling your report.
8
+
9
+ If you have not received a reply to your submission within 48 hours, there are a few steps you can take:
10
+
11
+ * Contact the current security coordinator (Mike Dalessio <mike.dalessio@gmail.com>)
12
+ * Email the Loofah user group at loofah-talk@googlegroups.com (archive at https://groups.google.com/forum/#!forum/loofah-talk)
13
+
14
+ Please note, the user group list is a public area. When escalating in that venue, please do not discuss your issue. Simply say that you're trying to get a hold of someone from the core team.
15
+
16
+ The information you share with the Loofah core contributors as part of this process will be kept confidential within the team, unless or until we need to share information upstream with our dependent libraries' core teams, at which point we will notify you.
17
+
18
+ If a vulnerability is first reported by you, we will credit you with the discovery in the public disclosure.
@@ -0,0 +1,149 @@
1
+ #!/usr/bin/env ruby
2
+ require "#{File.dirname(__FILE__)}/helper.rb"
3
+
4
+ def compare_scrub_methods
5
+ snip = "<div>foo</div><foo>fuxx <b>quux</b></foo><script>i have a chair</script>"
6
+ puts "starting with:\n#{snip}"
7
+ puts
8
+ puts RailsSanitize.new.sanitize(snip) # => Rails.sanitize / scrub!(:prune).to_s
9
+ puts Loofah::Helpers.sanitize(snip)
10
+ puts "--"
11
+ puts RailsSanitize.new.strip_tags(snip) # => Rails.strip_tags / parse().text
12
+ puts Loofah::Helpers.strip_tags(snip)
13
+ puts "--"
14
+ puts Sanitize.clean(snip, Sanitize::Config::RELAXED) # => scrub!(:strip).to_s
15
+ puts Loofah.scrub_fragment(snip, :strip).to_s
16
+ puts "--"
17
+ puts HTML5libSanitize.new.sanitize(snip) # => scrub!(:escape).to_s
18
+ puts Loofah.scrub_fragment(snip, :escape).to_s
19
+ puts "--"
20
+ puts HTMLFilter.new.filter(snip)
21
+ puts Loofah.scrub_fragment(snip, :strip).to_s
22
+ puts
23
+ end
24
+
25
+ module TestSet
26
+ def test_set options={}
27
+ scale = options[:rehearse] ? 10 : 1
28
+ puts self.class.name
29
+
30
+ n = 100 / scale
31
+ puts " Large document, #{BIG_FILE.length} bytes (x#{n})"
32
+ bench BIG_FILE, n, false
33
+ puts
34
+
35
+ n = 1000 / scale
36
+ puts " Small fragment, #{FRAGMENT.length} bytes (x#{n})"
37
+ bench FRAGMENT, n, true
38
+ puts
39
+
40
+ n = 10_000 / scale
41
+ puts " Text snippet, #{SNIPPET.length} bytes (x#{n})"
42
+ bench SNIPPET, n, true
43
+ puts
44
+ end
45
+ end
46
+
47
+ class HeadToHead < Measure
48
+ end
49
+
50
+ class HeadToHeadRailsSanitize < Measure
51
+ include TestSet
52
+ def bench(content, ntimes, fragment_p)
53
+ clear_measure
54
+
55
+ measure "Loofah::Helpers.sanitize", ntimes do
56
+ Loofah::Helpers.sanitize content
57
+ end
58
+
59
+ sanitizer = RailsSanitize.new
60
+ measure "ActionView sanitize", ntimes do
61
+ sanitizer.sanitize(content)
62
+ end
63
+ end
64
+ end
65
+
66
+ class HeadToHeadRailsStripTags < Measure
67
+ include TestSet
68
+ def bench(content, ntimes, fragment_p)
69
+ clear_measure
70
+
71
+ measure "Loofah::Helpers.strip_tags", ntimes do
72
+ Loofah::Helpers.strip_tags content
73
+ end
74
+
75
+ sanitizer = RailsSanitize.new
76
+ measure "ActionView strip_tags", ntimes do
77
+ sanitizer.strip_tags(content)
78
+ end
79
+ end
80
+ end
81
+
82
+ class HeadToHeadSanitizerSanitize < Measure
83
+ include TestSet
84
+ def bench(content, ntimes, fragment_p)
85
+ clear_measure
86
+
87
+ measure "Loofah :strip", ntimes do
88
+ if fragment_p
89
+ Loofah.scrub_fragment(content, :strip).to_s
90
+ else
91
+ Loofah.scrub_document(content, :strip).to_s
92
+ end
93
+ end
94
+
95
+ measure "Sanitize.clean", ntimes do
96
+ Sanitize.clean(content, Sanitize::Config::RELAXED)
97
+ end
98
+ end
99
+ end
100
+
101
+ class HeadToHeadHtml5LibSanitize < Measure
102
+ include TestSet
103
+ def bench(content, ntimes, fragment_p)
104
+ clear_measure
105
+
106
+ measure "Loofah :escape", ntimes do
107
+ if fragment_p
108
+ Loofah.scrub_fragment(content, :escape).to_s
109
+ else
110
+ Loofah.scrub_document(content, :escape).to_s
111
+ end
112
+ end
113
+
114
+ html5_sanitizer = HTML5libSanitize.new
115
+ measure "HTML5lib.sanitize", ntimes do
116
+ html5_sanitizer.sanitize(content)
117
+ end
118
+ end
119
+ end
120
+
121
+ class HeadToHeadHTMLFilter < Measure
122
+ include TestSet
123
+ def bench(content, ntimes, fragment_p)
124
+ clear_measure
125
+
126
+ measure "Loofah::Helpers.sanitize", ntimes do
127
+ Loofah::Helpers.sanitize content
128
+ end
129
+
130
+ sanitizer = HTMLFilter.new
131
+ measure "HTMLFilter.filter", ntimes do
132
+ sanitizer.filter(content)
133
+ end
134
+ end
135
+ end
136
+
137
+ puts "Nokogiri version: #{Nokogiri::VERSION_INFO.inspect}"
138
+ puts "Loofah version: #{Loofah::VERSION.inspect}"
139
+
140
+ benches = []
141
+ benches << HeadToHeadRailsSanitize.new
142
+ benches << HeadToHeadRailsStripTags.new
143
+ benches << HeadToHeadSanitizerSanitize.new
144
+ benches << HeadToHeadHtml5LibSanitize.new
145
+ benches << HeadToHeadHTMLFilter.new
146
+ puts "---------- rehearsal ----------"
147
+ benches.each { |bench| bench.test_set :rehearse => true }
148
+ puts "---------- realsies ----------"
149
+ benches.each { |bench| bench.test_set }
@@ -0,0 +1,96 @@
1
+ <div id="top_parent"></div>
2
+
3
+ <div id="jump">
4
+ <a href="#main-articles">Stories</a>
5
+ <br>
6
+ <a href="#blocks">Slash Boxes</a>
7
+ <br>
8
+ <a href="#comments">Comments</a>
9
+ </div>
10
+ <a name="topothepage"></a>
11
+ <div id="doc3" class="yui-t6 index2 mainpage ac ">
12
+ <div id="hd" >
13
+ <div id="logo" >
14
+
15
+
16
+
17
+ <h1><a href="//slashdot.org"><span>Slashdot</span></a></h1>
18
+ <div id="slogan"><h2>News for nerds, stuff that matters</h2></div>
19
+ </div>
20
+ <a href="#articles" class="hidden">Jump to articles</a>
21
+ <div class="nav">
22
+ <ul>
23
+
24
+
25
+
26
+ <li><a href="//slashdot.org/submit.pl" title="Submit a story to Slashdot">Submit Story</a></li>
27
+ <li><a href="//slashdot.org/help" title="Frequently asked questions on Slashdot">Help</a></li>
28
+ <li><a href="//slashdot.org/login.pl" onclick="show_login_box(); return false;">Log In</a></li>
29
+
30
+ </ul>
31
+ </div>
32
+
33
+
34
+
35
+
36
+
37
+ <div id="fh_picker_search" style="display: block;">
38
+ <form method="get" action="//slashdot.org/index2.pl">
39
+ <fieldset class="mode-filter mode-anon">
40
+ <legend>Search</legend>
41
+
42
+
43
+ <input class="query" type="text" name="fhfilter" value="" id="searchquery"> <input type="button" class="setfhfilter" value="Filter" id="viewsearch" style="display:none"> <input type="submit" class="setsearchfilter" value="Search" id="fhsearch" style="display:none">
44
+ <noscript><input type="submit" class="setsearchfilter" value="Search"></noscript>
45
+
46
+ <script type="text/javascript">
47
+ var slash_search;
48
+ $(function(){
49
+ if (has_hose()) {
50
+ var $search_text = $any('searchquery'),
51
+ $panel = $search_text.closest('fieldset');
52
+ $search_buttons = $('#viewsearch,#fhsearch'),
53
+ ws = /\s+/;
54
+
55
+
56
+
57
+ // The search buttons set the firehose option named by their class.
58
+ $search_buttons.
59
+ click(function(){
60
+ var which=this.className;
61
+ $search_text.each(function(){
62
+ firehose_set_options(which, this.value);
63
+ });
64
+ return false;
65
+ });
66
+
67
+ // Provide a globally available function that does whatever clicking the search button would do.
68
+ slash_search = function( query ){
69
+ query!==undefined && $search_text.val(query);
70
+ $search_buttons.filter(':visible:first').click();
71
+ };
72
+
73
+ $search_text.
74
+ keydown(function( e ){ // ESCAPE restores the filter in-effect.
75
+ if ( e.which == $.ui.keyCode.ESCAPE ) {
76
+ $search_text.val(firehose_settings.fhfilter||'');
77
+ return true;
78
+ }
79
+ if ( e.which == $.ui.keyCode.ENTER ) {
80
+ slash_search();
81
+ return false;
82
+ }
83
+ });
84
+
85
+ $(document).
86
+ bind('firehose-setting-setfhfilter firehose-setting-setsearchfilter', function( e, new_query ){
87
+ $('fieldset input[type=text]').each(function(){
88
+ $(this).blur().val(new_query);
89
+ });
90
+ }).
91
+ bind('set-options.firehose', function( e, data ){
92
+ data.select_section && $panel.toggleClass('mode-filter', data.id!=='unsaved');
93
+ });
94
+ }
95
+ });
96
+ </script>
@@ -0,0 +1,73 @@
1
+ require 'rubygems'
2
+ require 'open-uri'
3
+ require 'hpricot'
4
+ require File.expand_path(File.dirname(__FILE__) + "/../lib/loofah")
5
+ require 'benchmark'
6
+ require "action_view"
7
+ require "action_controller/vendor/html-scanner"
8
+ require "sanitize"
9
+ require 'hitimes'
10
+ require 'htmlfilter'
11
+
12
+ unless defined?(HTMLFilter)
13
+ HTMLFilter = HtmlFilter
14
+ end
15
+
16
+ class RailsSanitize
17
+ include ActionView::Helpers::SanitizeHelper
18
+ extend ActionView::Helpers::SanitizeHelper::ClassMethods
19
+ end
20
+
21
+ class HTML5libSanitize
22
+ require 'html5/html5parser'
23
+ require 'html5/liberalxmlparser'
24
+ require 'html5/treewalkers'
25
+ require 'html5/treebuilders'
26
+ require 'html5/serializer'
27
+ require 'html5/sanitizer'
28
+
29
+ include HTML5
30
+
31
+ def sanitize(html)
32
+ HTMLParser.parse_fragment(html, {
33
+ :tokenizer => HTMLSanitizer,
34
+ :encoding => 'utf-8',
35
+ :tree => TreeBuilders::REXML::TreeBuilder
36
+ }).to_s
37
+ end
38
+ end
39
+
40
+ BIG_FILE = File.read(File.join(File.dirname(__FILE__), "www.slashdot.com.html"))
41
+ FRAGMENT = File.read(File.join(File.dirname(__FILE__), "fragment.html"))
42
+ SNIPPET = "This is typical form field input in <b>length and content."
43
+
44
+ class Measure
45
+ def initialize
46
+ clear_measure
47
+ end
48
+
49
+ def clear_measure
50
+ @first_time = true
51
+ @baseline = nil
52
+ end
53
+
54
+ def measure(name, ntimes)
55
+ if @first_time
56
+ printf " %-30s %7s %8s %5s\n", "", "total", "single", "rel"
57
+ @first_time = false
58
+ end
59
+ timer = Hitimes::TimedMetric.new(name)
60
+ timer.start
61
+ ntimes.times do |j|
62
+ yield
63
+ end
64
+ timer.stop
65
+ if @baseline
66
+ printf " %30s %7.3f (%8.6f) %5.2fx\n", timer.name, timer.sum, timer.sum / ntimes, timer.sum / @baseline
67
+ else
68
+ @baseline = timer.sum
69
+ printf " %30s %7.3f (%8.6f) %5s\n", timer.name, timer.sum, timer.sum / ntimes, "-"
70
+ end
71
+ timer.sum
72
+ end
73
+ end
@@ -0,0 +1,2560 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2
+ "http://www.w3.org/TR/html4/strict.dtd">
3
+ <html>
4
+ <head>
5
+ <script id="before-content" type="text/javascript">
6
+ var pageload = {
7
+ pagemark: '202832641597314907',
8
+ before_content: (new Date).getTime()
9
+ };
10
+ function pageload_done( $, console, maybe ){
11
+ pageload.after_readycode = (new Date).getTime();
12
+ pageload.content_ready_time = pageload.content_ready - pageload.before_content;
13
+ pageload.script_ready_time = pageload.after_readycode - pageload.content_ready;
14
+ pageload.ready_time = pageload.after_readycode - pageload.before_content;
15
+ // Only report 1% of cases.
16
+ maybe || (Math.random()>0.01) || $.ajax({ data: {
17
+ op: 'page_profile',
18
+ pagemark: pageload.pagemark,
19
+ dom: pageload.content_ready_time,
20
+ js: pageload.script_ready_time
21
+ } });
22
+ }
23
+ </script>
24
+
25
+ <title>Slashdot - News for nerds, stuff that matters</title>
26
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
27
+
28
+
29
+
30
+
31
+
32
+
33
+ <link rel="stylesheet" rev="stylesheet" href="//c.fsdn.com/sd/idlecore-tidied.css?T_2_5_0_262b" media="screen">
34
+
35
+
36
+
37
+ <!-- -->
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+ <!--[if IE 7]><link rel="stylesheet" type="text/css" media="screen" href="//c.fsdn.com/sd/ie7-idle.css?T_2_5_0_262b" /><![endif]-->
46
+ <!--[if lt IE 7]><link rel="stylesheet" type="text/css" media="screen" href="//c.fsdn.com/sd/ie6-idle.css?T_2_5_0_262b" /><![endif]-->
47
+ <!--[if gte IE 8]><link rel="stylesheet" type="text/css" media="screen" href="//c.fsdn.com/sd/ie8-idle.css?T_2_5_0_262b" /><![endif]-->
48
+
49
+
50
+
51
+ <script src="//c.fsdn.com/sd/all-minified.js?T_2_5_0_262b" type="text/javascript"></script>
52
+ <script id="after-jquery" type="text/javascript">
53
+ (function( $, pageload, pageload_done, console ){
54
+ $ && pageload && $(function(){
55
+ pageload.content_ready = (new Date).getTime();
56
+ pageload_done && $(function(){ pageload_done($, console, 'maybe'); });
57
+ });
58
+ })(window.jQuery, window.pageload, window.pageload_done, window.console);
59
+ </script>
60
+ <script type="text/javascript">
61
+ (function(){
62
+ var regexp=/^\s*(?:\d+|many)\s+more\s*$/i;
63
+
64
+
65
+ var auto_more_count = 2;
66
+
67
+ function auto_more(){
68
+ var $more_link = $('#more-experiment a');
69
+ $more_link.each(function(){
70
+ if ( Bounds.intersect(window, $('#firehoselist>div.fhitem:visible:last')) ) {
71
+ setFirehoseAction();
72
+ $more_link.click();
73
+ !--auto_more_count && (auto_more=undefined);
74
+ // don't allow a call till the next paginate gets built and |more_possible|
75
+ $(document).unbind('scroll', call_auto_more);
76
+ }
77
+ });
78
+ };
79
+
80
+ function call_auto_more(){ auto_more && auto_more(); }
81
+
82
+
83
+
84
+
85
+
86
+
87
+ $('#more-experiment a').
88
+ live('more-possible', function( event ){
89
+ var $more_link=$(this);
90
+ if ( regexp.test($more_link.text()) ) {
91
+
92
+
93
+ $(document).bind('scroll', call_auto_more);
94
+ } else {
95
+ $(document).unbind('scroll', call_auto_more);
96
+
97
+ }
98
+ });
99
+ })();
100
+ </script>
101
+
102
+
103
+ <script type="text/javascript">
104
+ var suggestions_for_context = {
105
+ nod: 'fresh funny insightful interesting maybe ',
106
+ nix: 'binspam dupe notthebest offtopic slownewsday stale stupid ',
107
+
108
+ feedback: 'typo dupe error',
109
+ metanod: 'insightful interesting informative funny underrated',
110
+ metanix: 'offtopic flamebait troll redundant overrated'
111
+ };
112
+
113
+ </script>
114
+
115
+
116
+ <script id="lazyload-script" type="text/javascript">
117
+ $(function() {
118
+ // $("img[src*='images.slashdot.org']").lazyload({ threshold : 150 });
119
+ });
120
+ </script>
121
+ <meta http-equiv="X-XRDS-Location" content="http://slashdot.org/slashdot.xrds"><link rel="top" title="News for nerds, stuff that matters" href="//slashdot.org/" >
122
+ <link rel="search" title="Search Slashdot" href="//slashdot.org/search.pl">
123
+ <link rel="alternate" title="Slashdot RSS" href="http://rss.slashdot.org/Slashdot/slashdot" type="application/rss+xml">
124
+ <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
125
+ <!-- DoubleClick Random Number -->
126
+ <script type="text/javascript">
127
+ dfp_ord=Math.random()*10000000000000000;
128
+ dfp_tile = 1;
129
+ </script>
130
+ <!-- End DoubleClick Random Number -->
131
+
132
+
133
+ <script type="text/javascript">
134
+ var pageTracker = _gat._getTracker("UA-32013-5");
135
+ pageTracker._setDomainName("slashdot.org");
136
+ pageTracker._initData();
137
+ </script>
138
+
139
+ </head>
140
+ <body>
141
+ <div id="top_parent"></div>
142
+
143
+ <div id="jump">
144
+ <a href="#main-articles">Stories</a>
145
+ <br>
146
+ <a href="#blocks">Slash Boxes</a>
147
+ <br>
148
+ <a href="#comments">Comments</a>
149
+ </div>
150
+ <a name="topothepage"></a>
151
+ <div id="doc3" class="yui-t6 index2 mainpage ac ">
152
+ <div id="hd" >
153
+ <div id="logo" >
154
+
155
+
156
+
157
+ <h1><a href="//slashdot.org"><span>Slashdot</span></a></h1>
158
+ <div id="slogan"><h2>News for nerds, stuff that matters</h2></div>
159
+ </div>
160
+ <a href="#articles" class="hidden">Jump to articles</a>
161
+ <div class="nav">
162
+ <ul>
163
+
164
+
165
+
166
+ <li><a href="//slashdot.org/submit.pl" title="Submit a story to Slashdot">Submit Story</a></li>
167
+ <li><a href="//slashdot.org/help" title="Frequently asked questions on Slashdot">Help</a></li>
168
+ <li><a href="//slashdot.org/login.pl" onclick="show_login_box(); return false;">Log In</a></li>
169
+
170
+ </ul>
171
+ </div>
172
+
173
+
174
+
175
+
176
+
177
+ <div id="fh_picker_search" style="display: block;">
178
+ <form method="get" action="//slashdot.org/index2.pl">
179
+ <fieldset class="mode-filter mode-anon">
180
+ <legend>Search</legend>
181
+
182
+
183
+ <input class="query" type="text" name="fhfilter" value="" id="searchquery"> <input type="button" class="setfhfilter" value="Filter" id="viewsearch" style="display:none"> <input type="submit" class="setsearchfilter" value="Search" id="fhsearch" style="display:none">
184
+ <noscript><input type="submit" class="setsearchfilter" value="Search"></noscript>
185
+
186
+ <script type="text/javascript">
187
+ var slash_search;
188
+ $(function(){
189
+ if (has_hose()) {
190
+ var $search_text = $any('searchquery'),
191
+ $panel = $search_text.closest('fieldset');
192
+ $search_buttons = $('#viewsearch,#fhsearch'),
193
+ ws = /\s+/;
194
+
195
+
196
+
197
+ // The search buttons set the firehose option named by their class.
198
+ $search_buttons.
199
+ click(function(){
200
+ var which=this.className;
201
+ $search_text.each(function(){
202
+ firehose_set_options(which, this.value);
203
+ });
204
+ return false;
205
+ });
206
+
207
+ // Provide a globally available function that does whatever clicking the search button would do.
208
+ slash_search = function( query ){
209
+ query!==undefined && $search_text.val(query);
210
+ $search_buttons.filter(':visible:first').click();
211
+ };
212
+
213
+ $search_text.
214
+ keydown(function( e ){ // ESCAPE restores the filter in-effect.
215
+ if ( e.which == $.ui.keyCode.ESCAPE ) {
216
+ $search_text.val(firehose_settings.fhfilter||'');
217
+ return true;
218
+ }
219
+ if ( e.which == $.ui.keyCode.ENTER ) {
220
+ slash_search();
221
+ return false;
222
+ }
223
+ });
224
+
225
+ $(document).
226
+ bind('firehose-setting-setfhfilter firehose-setting-setsearchfilter', function( e, new_query ){
227
+ $('fieldset input[type=text]').each(function(){
228
+ $(this).blur().val(new_query);
229
+ });
230
+ }).
231
+ bind('set-options.firehose', function( e, data ){
232
+ data.select_section && $panel.toggleClass('mode-filter', data.id!=='unsaved');
233
+ });
234
+ }
235
+ });
236
+ </script>
237
+
238
+ </fieldset>
239
+
240
+ <script type="text/javascript">
241
+ $(document).
242
+ one('unsaved.firehose', function(){
243
+ $any('searchquery').closest('fieldset').removeClass('mode-anon');
244
+ });
245
+ </script>
246
+
247
+ </form>
248
+ </div>
249
+
250
+ </div>
251
+ <div id="bd" ><!-- body begin -->
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+ <div class="nav">
265
+ <ul class="menu" id="fhtablist">
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+
274
+
275
+ <li class="active Stories"><a href="//slashdot.org/stories" >Stories</a><span class="tab_rss"><a href="http://rss.slashdot.org/Slashdot/slashdot" title="RSS for stories">RSS</a></span></li>
276
+
277
+
278
+
279
+
280
+
281
+ <li ><a href="//slashdot.org/recent" >Recent</a></li>
282
+
283
+
284
+
285
+
286
+
287
+ <li ><a href="//slashdot.org/popular" >Popular</a></li>
288
+
289
+
290
+
291
+
292
+
293
+ <li ><a href="//slashdot.org/search" >Search</a></li>
294
+
295
+
296
+ </ul>
297
+
298
+ <script type="text/javascript">
299
+ $(function(){ // on document ready
300
+
301
+ $('input[id^=tab-input-]').
302
+ each(function(){
303
+ var tab_id = this.id.substr('tab-input-'.length);
304
+ $(this).
305
+ blur(function(){
306
+ firehose_save_tab(tab_id);
307
+ }).
308
+ keypress(function(event){
309
+ var RETURN=13, SPACE=32;
310
+
311
+ var $this = $(this);
312
+ switch ( event.which || event.keyCode ) {
313
+ case RETURN:
314
+ case SPACE:
315
+ firehose_save_tab(tab_id);
316
+ return false;
317
+ default:
318
+ return true;
319
+ }
320
+ });
321
+ })
322
+
323
+ });
324
+ </script>
325
+ <div id="fhupdatestatus">
326
+ <a href="//slashdot.org/login.pl?op=newuserform" title="">Create Account</a>
327
+
328
+ <span class="busy"><img src="//c.fsdn.com/sd/spinner_tr.gif" alt="*"></span>
329
+ <a id="local_last_update_time" href="//slashdot.org/faq/UI.shtml#ui700" onclick="firehose_more(1); return false;">21:58</a>
330
+ <a id="gmt_update_time" href="//slashdot.org/faq/UI.shtml#ui700" onclick="firehose_more(1); return false;"></a>
331
+
332
+ </div>
333
+
334
+ <div id="fhoptions" class="options">
335
+
336
+
337
+
338
+
339
+ <ul>
340
+
341
+
342
+
343
+
344
+
345
+ <li id="pref"><a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false" title="Toggle preferences">Preferences</a></li>
346
+
347
+
348
+
349
+ <li id="slashboxen">
350
+
351
+ <script type="text/javascript">
352
+ $(function(){
353
+ $("#slashboxen a").click(function(){
354
+ var hide = $(this).setClass(applyMap('expanded', 'collapsed')).is('.collapsed');
355
+
356
+ $('div#yui-main div.yui-b, div#slashboxes, div#topfoot div.rightcontent, div#doc3 div.railad').toggleClass('hideslashboxes', hide);
357
+ firehose_set_options('noslashboxes', hide, 'global');
358
+ return false;
359
+ });
360
+ });
361
+ </script>
362
+ </li>
363
+
364
+ </ul>
365
+
366
+ </div>
367
+ </div>
368
+
369
+
370
+ <div class="ad1 advertisement"><!-- placeholder for ad position 1 --></div><div class="railad"><div class="ad6 advertisement"><!-- placeholder for ad position 6 --></div><div class="ad2 advertisement"><!-- ad position 2 -->
371
+ <!-- DoubleClick Ad Tag -->
372
+
373
+ <script type="text/javascript">
374
+ var ad6 = 'inactive';
375
+ </script>
376
+
377
+ <div id="fad2">
378
+
379
+
380
+ <script type="text/javascript">
381
+ //<![CDATA[
382
+
383
+ var hint = 'mainpage';
384
+
385
+ document.write('<script type="text/javascript" src="http://ad.doubleclick.net/adj/ostg.slashdot/mainpage_p2_sky;pg=index;logged_in=0;tile='+dfp_tile+';ord='+dfp_ord+'?"><\/script>');
386
+ dfp_tile++;
387
+ //]]>
388
+ </script>
389
+
390
+ </div>
391
+ <!-- End DoubleClick Ad Tag --></div></div>
392
+
393
+ <div id="yui-main">
394
+
395
+ <div class="yui-b">
396
+
397
+
398
+
399
+ <div class="yui-gf" style="position: relative">
400
+ <div class="yui-u first" id="links">
401
+ <div class="block" id="links-sections">
402
+ <div class="title" id="links-sections-title">
403
+
404
+ <h4 class='active'>
405
+
406
+ <a class="data-title" href="//slashdot.org" >Slashdot</a>
407
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
408
+
409
+ <script type="data">{ color: "", viewname: "stories", filter: "", name: "Main", id: 13 }</script>
410
+
411
+
412
+ </h4>
413
+ </div>
414
+ <div class="content" id="links-sections-content">
415
+
416
+ <ul id="firehose-sections">
417
+ <script type="data">{ active_id:13, default_id:1 }</script>
418
+
419
+
420
+
421
+
422
+ <li class="hide" id="fhsection-45">
423
+ <a id="fhsectiontitle-45" class="data-title" href="//amd.vendors.slashdot.org">AMD</a>
424
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
425
+ <script type="data">{ color: "", viewname: "stories", filter: "vendor_amd", name: "AMD", id: 45 }</script>
426
+ </li>
427
+
428
+
429
+
430
+
431
+ <li class="hide" id="fhsection-11">
432
+ <a id="fhsectiontitle-11" class="data-title" href="//apache.slashdot.org">Apache</a>
433
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
434
+ <script type="data">{ color: "", viewname: "stories", filter: "apache", name: "Apache", id: 11 }</script>
435
+ </li>
436
+
437
+
438
+
439
+
440
+ <li class="" id="fhsection-53">
441
+ <a id="fhsectiontitle-53" class="data-title" href="//apple.slashdot.org">Apple</a>
442
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
443
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_apple.css?T_2_5_0_262b\" title=\"apple\">", color: "", viewname: "stories", filter: "apple", name: "Apple", id: 53 }</script>
444
+ </li>
445
+
446
+
447
+
448
+
449
+ <li class="" id="fhsection-63">
450
+ <a id="fhsectiontitle-63" class="data-title" href="//ask.slashdot.org">Ask Slashdot</a>
451
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
452
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_askslashdot.css?T_2_5_0_262b\" title=\"askslashdot\">", color: "", viewname: "stories", filter: "askslashdot", name: "Ask Slashdot", id: 63 }</script>
453
+ </li>
454
+
455
+
456
+
457
+
458
+ <li class="hide" id="fhsection-31">
459
+ <a id="fhsectiontitle-31" class="data-title" href="//backslash.slashdot.org">Backslash</a>
460
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
461
+ <script type="data">{ color: "", viewname: "stories", filter: "backslash", name: "Backslash", id: 31 }</script>
462
+ </li>
463
+
464
+
465
+
466
+
467
+ <li class="" id="fhsection-49">
468
+ <a id="fhsectiontitle-49" class="data-title" href="//books.slashdot.org">Book Reviews</a>
469
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
470
+ <script type="data">{ color: "", viewname: "stories", filter: "books", name: "Book Reviews", id: 49 }</script>
471
+ </li>
472
+
473
+
474
+
475
+
476
+ <li class="hide" id="fhsection-5">
477
+ <a id="fhsectiontitle-5" class="data-title" href="//bsd.slashdot.org">BSD</a>
478
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
479
+ <script type="data">{ color: "", viewname: "stories", filter: "bsd", name: "BSD", id: 5 }</script>
480
+ </li>
481
+
482
+
483
+
484
+
485
+ <li class="hide" id="fhsection-61">
486
+ <a id="fhsectiontitle-61" class="data-title" href="//developers.slashdot.org">Developers</a>
487
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
488
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_developers.css?T_2_5_0_262b\" title=\"developers\">", color: "", viewname: "stories", filter: "developers", name: "Developers", id: 61 }</script>
489
+ </li>
490
+
491
+
492
+
493
+
494
+ <li class="hide" id="fhsection-1">
495
+ <a id="fhsectiontitle-1" class="data-title" href="//entertainment.slashdot.org">Entertainment</a>
496
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
497
+ <script type="data">{ color: "", viewname: "stories", filter: "entertainment", name: "Entertainment", id: 1 }</script>
498
+ </li>
499
+
500
+
501
+
502
+
503
+ <li class="hide" id="fhsection-55">
504
+ <a id="fhsectiontitle-55" class="data-title" href="//features.slashdot.org">Features</a>
505
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
506
+ <script type="data">{ color: "", viewname: "stories", filter: "features", name: "Features", id: 55 }</script>
507
+ </li>
508
+
509
+
510
+
511
+
512
+ <li class="" id="fhsection-33">
513
+ <a id="fhsectiontitle-33" class="data-title" href="//games.slashdot.org">Games</a>
514
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
515
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_games.css?T_2_5_0_262b\" title=\"games\">", color: "", viewname: "stories", filter: "games", name: "Games", id: 33 }</script>
516
+ </li>
517
+
518
+
519
+
520
+
521
+ <li class="hide" id="fhsection-43">
522
+ <a id="fhsectiontitle-43" class="data-title" href="//radio.slashdot.org">Geeks in Space</a>
523
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
524
+ <script type="data">{ color: "", viewname: "stories", filter: "radio", name: "Geeks in Space", id: 43 }</script>
525
+ </li>
526
+
527
+
528
+
529
+
530
+ <li class="" id="fhsection-3">
531
+ <a id="fhsectiontitle-3" class="data-title" href="//hardware.slashdot.org">Hardware</a>
532
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
533
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_hardware.css?T_2_5_0_262b\" title=\"hardware\">", color: "", viewname: "stories", filter: "hardware", name: "Hardware", id: 3 }</script>
534
+ </li>
535
+
536
+
537
+
538
+
539
+ <li class="" id="fhsection-25">
540
+ <a id="fhsectiontitle-25" class="data-title" href="//idle.slashdot.org">Idle</a>
541
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
542
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_idle.css?T_2_5_0_262b\" title=\"idle\">", color: "", viewname: "stories", filter: "idle", name: "Idle", id: 25 }</script>
543
+ </li>
544
+
545
+
546
+
547
+
548
+ <li class="hide" id="fhsection-7">
549
+ <a id="fhsectiontitle-7" class="data-title" href="//intel.vendors.slashdot.org">Intel</a>
550
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
551
+ <script type="data">{ color: "", viewname: "stories", filter: "vendor_intel", name: "Intel", id: 7 }</script>
552
+ </li>
553
+
554
+
555
+
556
+
557
+ <li class="" id="fhsection-39">
558
+ <a id="fhsectiontitle-39" class="data-title" href="//interviews.slashdot.org">Interviews</a>
559
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
560
+ <script type="data">{ color: "", viewname: "stories", filter: "interviews", name: "Interviews", id: 39 }</script>
561
+ </li>
562
+
563
+
564
+
565
+
566
+ <li class="hide" id="fhsection-15">
567
+ <a id="fhsectiontitle-15" class="data-title" href="//it.slashdot.org">IT</a>
568
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
569
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_it.css?T_2_5_0_262b\" title=\"it\">", color: "", viewname: "stories", filter: "it", name: "IT", id: 15 }</script>
570
+ </li>
571
+
572
+
573
+
574
+
575
+ <li class="" id="fhsection-65">
576
+ <a id="fhsectiontitle-65" class="data-title" href="//linux.slashdot.org">Linux</a>
577
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
578
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_linux.css?T_2_5_0_262b\" title=\"linux\">", color: "", viewname: "stories", filter: "linux", name: "Linux", id: 65 }</script>
579
+ </li>
580
+
581
+
582
+
583
+
584
+ <li class="hide" id="fhsection-21">
585
+ <a id="fhsectiontitle-21" class="data-title" href="//meta.slashdot.org">Meta</a>
586
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
587
+ <script type="data">{ color: "", viewname: "stories", filter: "meta", name: "Meta", id: 21 }</script>
588
+ </li>
589
+
590
+
591
+
592
+
593
+ <li class="" id="fhsection-47">
594
+ <a id="fhsectiontitle-47" class="data-title" href="//mobile.slashdot.org">Mobile</a>
595
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
596
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_mobile.css?T_2_5_0_262b\" title=\"mobile\">", color: "", viewname: "stories", filter: "mobile", name: "Mobile", id: 47 }</script>
597
+ </li>
598
+
599
+
600
+
601
+
602
+ <li class="hide" id="fhsection-35">
603
+ <a id="fhsectiontitle-35" class="data-title" href="//news.slashdot.org">News</a>
604
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
605
+ <script type="data">{ color: "", viewname: "stories", filter: "news", name: "News", id: 35 }</script>
606
+ </li>
607
+
608
+
609
+
610
+
611
+ <li class="hide" id="fhsection-23">
612
+ <a id="fhsectiontitle-23" class="data-title" href="//oracle.vendors.slashdot.org">Oracle</a>
613
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
614
+ <script type="data">{ color: "", viewname: "stories", filter: "vendor_oracle", name: "Oracle", id: 23 }</script>
615
+ </li>
616
+
617
+
618
+
619
+
620
+ <li class="hide" id="fhsection-27">
621
+ <a id="fhsectiontitle-27" class="data-title" href="//politics.slashdot.org">Politics</a>
622
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
623
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_politics.css?T_2_5_0_262b\" title=\"politics\">", color: "", viewname: "stories", filter: "politics", name: "Politics", id: 27 }</script>
624
+ </li>
625
+
626
+
627
+
628
+
629
+ <li class="hide" id="fhsection-57">
630
+ <a id="fhsectiontitle-57" class="data-title" href="//polls.slashdot.org">Polls</a>
631
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
632
+ <script type="data">{ color: "", viewname: "stories", filter: "polls", name: "Polls", id: 57 }</script>
633
+ </li>
634
+
635
+
636
+
637
+
638
+ <li class="" id="fhsection-29">
639
+ <a id="fhsectiontitle-29" class="data-title" href="//science.slashdot.org">Science</a>
640
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
641
+ <script type="data">{ color: "", viewname: "stories", filter: "science", name: "Science", id: 29 }</script>
642
+ </li>
643
+
644
+
645
+
646
+
647
+ <li class="hide" id="fhsection-59">
648
+ <a id="fhsectiontitle-59" class="data-title" href="//search.slashdot.org">Search</a>
649
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
650
+ <script type="data">{ color: "", viewname: "stories", filter: "search", name: "Search", id: 59 }</script>
651
+ </li>
652
+
653
+
654
+
655
+
656
+ <li class="hide" id="fhsection-37">
657
+ <a id="fhsectiontitle-37" class="data-title" href="slashdot.sourceforge.net">SF.net Auth</a>
658
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
659
+ <script type="data">{ color: "", viewname: "stories", filter: "sfauth", name: "SF.net Auth", id: 37 }</script>
660
+ </li>
661
+
662
+
663
+
664
+
665
+ <li class="hide" id="fhsection-19">
666
+ <a id="fhsectiontitle-19" class="data-title" href="//slashdot.org">Taco Hell</a>
667
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
668
+ <script type="data">{ color: "", viewname: "stories", filter: "tacohell", name: "Taco Hell", id: 19 }</script>
669
+ </li>
670
+
671
+
672
+
673
+
674
+ <li class="hide" id="fhsection-17">
675
+ <a id="fhsectiontitle-17" class="data-title" href="//tech.slashdot.org">Technology</a>
676
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
677
+ <script type="data">{ color: "", viewname: "stories", filter: "tech", name: "Technology", id: 17 }</script>
678
+ </li>
679
+
680
+
681
+
682
+
683
+ <li class="hide" id="fhsection-67">
684
+ <a id="fhsectiontitle-67" class="data-title" href="//slashdot.org">The 2000 Beanies</a>
685
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
686
+ <script type="data">{ color: "", viewname: "stories", filter: "awards", name: "The 2000 Beanies", id: 67 }</script>
687
+ </li>
688
+
689
+
690
+
691
+
692
+ <li class="hide" id="fhsection-51">
693
+ <a id="fhsectiontitle-51" class="data-title" href="//thinkgeek.shill.slashdot.org">ThinkGeek</a>
694
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
695
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_thinkgeek.css?T_2_5_0_262b\" title=\"thinkgeek\">", color: "", viewname: "stories", filter: "thinkgeek", name: "ThinkGeek", id: 51 }</script>
696
+ </li>
697
+
698
+
699
+
700
+
701
+ <li class="hide" id="fhsection-41">
702
+ <a id="fhsectiontitle-41" class="data-title" href="//vendors.slashdot.org">Vendors</a>
703
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
704
+ <script type="data">{ color: "", viewname: "stories", filter: "vendors", name: "Vendors", id: 41 }</script>
705
+ </li>
706
+
707
+
708
+
709
+
710
+ <li class="" id="fhsection-9">
711
+ <a id="fhsectiontitle-9" class="data-title" href="//yro.slashdot.org">YRO</a>
712
+ <a href="//slashdot.org/faq/UI.shtml#ui700" onclick="show_login_box(); return false;" class="links-sections-edit">[e]</a>
713
+ <script type="data">{ skin: "<link rel=\"alternate stylesheet\" type=\"text/css\" media=\"screen, projection\" href=\"//c.fsdn.com/sd/yui_yro.css?T_2_5_0_262b\" title=\"yro\">", color: "", viewname: "stories", filter: "yro", name: "YRO", id: 9 }</script>
714
+ </li>
715
+
716
+ </ul>
717
+ <script type="text/javascript">
718
+
719
+ var firehose_delete_section, update_section;
720
+
721
+ (function(){
722
+ var $section_menu = $any('firehose-sections');
723
+
724
+
725
+
726
+ function save_menu(){
727
+ if ( !check_logged_in() ) { return false; }
728
+
729
+ // tell the server our current (ordered) list of sections
730
+ ajax_update({
731
+ op: 'firehose_save_section_menu',
732
+ reskey: reskey_static,
733
+ fsids: $section_menu.
734
+ children('li:not(#fhsection-unsaved)').
735
+ map(function(){ return this.id.slice(10); }).get().join(',')
736
+ });
737
+ }
738
+
739
+
740
+ function unsaved(){
741
+ var $unsaved = $any('fhsection-unsaved');
742
+ if ( !$unsaved.length ) {
743
+ ($unsaved = $(unsaved.template).prependTo($section_menu)).metadata().id = 'unsaved';
744
+ }
745
+ return $unsaved;
746
+ }
747
+
748
+ var section_matching;
749
+ (function(){
750
+ var signatures={}, ids={}, ws=/\s+/, id_prefix=/^fhsection-/, default_color = {
751
+ stories: 'green',
752
+ recent: 'blue',
753
+ popular: 'green',
754
+ daddypants: 'indigo'
755
+ };
756
+
757
+ function init_metadata( el ){
758
+ var $el=$(el), result=$el.metadata({ type:'elem', name:'script' });
759
+ $el.find('script[type=data]').remove();
760
+ return result;
761
+ }
762
+
763
+ function signature( section ){
764
+ return section.viewname + ';'
765
+ + (section.color||default_color[section.viewname]) + ';'
766
+ + $.trim(section.filter).toLowerCase().split(ws).sort().join(' ');
767
+ }
768
+
769
+ section_matching = function( data ){
770
+ var have_id = $section_menu.metadata().active_id,
771
+ have = signatures[have_id],
772
+ want = signature(data),
773
+ want_id = (have_id==='unsaved'||want!==have) ? ids[want] : have_id,
774
+ $want = want_id && firehose_section_menu_item(want_id),
775
+ want_section = want_id && $want.length && $want.metadata();
776
+
777
+
778
+
779
+
780
+ return want_section;
781
+ };
782
+
783
+ update_section = function( el, update, opts ){
784
+ var section = init_metadata(el),
785
+ id = section.id, // assert(id);
786
+ oldsig = signatures[id],
787
+ newsig = signature($.extend(section,
788
+ // Make the color explicit.
789
+ !section.color && { color:default_color[section.viewname] },
790
+ // Roll-in the updated data, if any; but protect the id.
791
+ update, { id:id }
792
+ ));
793
+
794
+ // Update the signatures that let us match properties to existing sections.
795
+ if ( id!=='unsaved' && newsig!==oldsig ) {
796
+ ids[ signatures[id]=newsig ] = id;
797
+ if ( oldsig ) {
798
+ delete ids[ oldsig ];
799
+ // Discard cached skin if the search has changed.
800
+ section.skin && oldsig.split(';')[2]!==newsig.split(';')[2] && delete section.skin;
801
+
802
+ // This must be a change to an existing menu item, so let's save the menu as a whole.
803
+ save_menu();
804
+ }
805
+ }
806
+
807
+ if ( opts ) {
808
+ opts.highlight && highlight_menu_item(id);
809
+ opts.make_default && ($section_menu.metadata().default_id=id);
810
+ }
811
+ };
812
+
813
+ // Force-initialize the metadata and build the section_matching map.
814
+ var $sections=$any('links-sections').find('div.title,li');
815
+ $sections.add($section_menu).each(function(){ init_metadata(this); });
816
+ $('#links-sections-title').metadata().name = "Slashdot";
817
+ $sections.each(function(){ update_section(this); });
818
+ })();
819
+
820
+
821
+ function highlight_menu_item( section_id ){
822
+ return firehose_section_menu_item(section_id).each(function(){
823
+ $('#links-sections .active').not(this).removeClass('active');
824
+ $( $('h4', this)[0] || this ).addClass('active');
825
+ $section_menu.metadata().active_id = section_id;
826
+ firehose_style_switch(section_id);
827
+ });
828
+ }
829
+
830
+
831
+ $any('links-sections').
832
+ mousedown(function( event ){ // "activate" a section (immediately) on mousedown in the section menu
833
+ $(event.originalTarget||event.target). // mouseDown was on this element...
834
+ closest('li,div.title').not('.active,:has(.active)').
835
+ each(function(){
836
+ var section = $(this).metadata();
837
+ if ( section.id !== 'unsaved' ) {
838
+
839
+ } else {
840
+
841
+ }
842
+ });
843
+ // allow other handlers to run (by not returning false)
844
+ }).
845
+ click(function( event ){ // edit only for a click in the edit button
846
+ var handled;
847
+ $(event.originalTarget||event.target). // mouseDown was on this element...
848
+ closest('a.links-sections-edit'). // ...in this edit icon (if any)
849
+ each(function(){
850
+ var id = $(this).closest('li,div.title').metadata().id;
851
+ id==='unsaved' && (id=void(0));
852
+ getModalPrefs('firehoseview', 'Save Custom Section', 0, { id: id });
853
+ handled = true;
854
+ });
855
+ return !handled;
856
+ });
857
+
858
+
859
+ // Drag items in the section-menu to reorder it permanently.
860
+ $section_menu.
861
+ sortable({
862
+ axis: 'y',
863
+ containment: '#links-sections',
864
+ opacity: 0.8,
865
+ update: save_menu
866
+ });
867
+
868
+
869
+ $(document).
870
+ bind('firehose-setting-section', function( e, section_id ){
871
+ // Request to change sections is on its way to the server; update the UI now (don't wait for response)
872
+ var section = highlight_menu_item(section_id).metadata();
873
+ $(document).
874
+ trigger('firehose-setting-setfhfilter', section.filter).
875
+ trigger('firehose-setting-view', section.viewname).
876
+ trigger('firehose-setting-color', section.color);
877
+ }).
878
+ bind('set-options.firehose', function( e, data ){
879
+ // Changing some option (possibly even the 'section' option)
880
+ if ( !data.select_section ) {
881
+ // OK, _not_ the 'section' option. Activate a section that matches the new options, or else "unsaved"
882
+ delete data.id;
883
+
884
+ data = section_matching(data)||data;
885
+ if ( !data.id ) {
886
+ var $unsaved = unsaved();
887
+ data = $.extend($unsaved.metadata(), data);
888
+ $(document).
889
+ one('update.firehose', function( e, updated ){
890
+ $unsaved.find('a span').text(updated.local_time);
891
+ if ( updated.skin ) {
892
+ data.skin = updated.skin;
893
+ firehose_style_switch('unsaved');
894
+ }
895
+ }).
896
+ trigger('unsaved.firehose', data);
897
+ }
898
+ }
899
+ highlight_menu_item(data.id);
900
+ });
901
+
902
+ unsaved.template = (
903
+ '<li id="fhsection-unsaved">'
904
+ + '<a><i class="data-title">unsaved</i> <span></span></a>'
905
+ + '<a href="//slashdot.org/faq/UI.shtml#ui700"'
906
+ + ' onclick="show_login_box(); return false;"'
907
+ + ' class="links-sections-edit">'
908
+ + '[e]'
909
+ + '</a>'
910
+ + '</li>'
911
+ );
912
+
913
+ })();
914
+ </script>
915
+
916
+ </div>
917
+
918
+ </div>
919
+ <div class="block" id="links-help">
920
+ <div class="title" id="links-help-title">
921
+ <h4><a href="//slashdot.org/help">Site Info</a></h4>
922
+ </div>
923
+ <div class="content" id="links-help-content">
924
+ <ul>
925
+ <li><a href="//slashdot.org/faq/">FAQ</a></li>
926
+ <li><a href="http://sourceforge.net/tracker/?func=add&amp;group_id=4421&amp;atid=104421">Bugs</a></li>
927
+ <li><a href="//slashdot.org/code.shtml">Code</a></li>
928
+ </ul>
929
+ </div>
930
+ </div>
931
+ <div class="block" id="links-stories">
932
+ <div class="title" id="links-stories-title">
933
+ <h4>Stories</h4>
934
+ </div>
935
+ <div class="content" id="links-stories-content">
936
+ <ul>
937
+ <li><a href="//slashdot.org/search.pl">Old Stories</a></li>
938
+ <li><a href="//polls.slashdot.org/">Old Polls</a></li>
939
+ <li><a href="//slashdot.org/hof.shtml">Hall of Fame</a></li>
940
+ <li><a href="//slashdot.org/submit.pl">Submit Story</a></li>
941
+ </ul>
942
+ </div>
943
+ </div>
944
+ </div>
945
+ </div>
946
+
947
+
948
+ <div class="yui-u maincol first">
949
+
950
+
951
+ <div class="message">
952
+
953
+ <p>Slashdot is powered by <strong><a href="//slashdot.org/submit.pl">your submissions</a></strong>, so send in your scoop</p>
954
+
955
+ </div>
956
+
957
+
958
+
959
+
960
+
961
+
962
+
963
+ <div id="firehose" class="nothumbs">
964
+ <div id="firehoselist" class="fhroot ">
965
+ <div id="firehose-5047353" class="fhitem fhitem-story article usermode thumbs">
966
+ <span class="sd-info-block" style="display: none">
967
+ <span class="sd-key-firehose-id">5047353</span>
968
+ <span class="type">story</span>
969
+
970
+ </span>
971
+
972
+
973
+
974
+ <span id="updown-5047353" class="vote">
975
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="up" title="Vote this item up">+</a>
976
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="down" title="Vote this item down">-</a>
977
+ </span>
978
+
979
+
980
+
981
+
982
+ <h3 class="story" id="title-5047353">
983
+
984
+ <span class="sodify" onclick="firehose_set_options('color', 'red')" title="Filter Firehose to entries rated red or better" ></span><span class="soda pop1" title="Filter Firehose to entries rated red or better" onclick="firehose_set_options('color', 'red')"><span>&nbsp;</span></span> <a href="//it.slashdot.org" title="Filter to IT" class="skin" onclick='return addfhfilter("it"); return false;'>IT:</a> <a onclick="return toggle_fh_body_wrap_return(this);" href="//it.slashdot.org/story/09/06/30/2237256/New-Click-Fraud-Attack-Is-Stealthiest-Yet" class="datitle">New Click-Fraud Attack Is Stealthiest Yet</a> <span class="date">on Tuesday June 30, @09:35PM</span> <span class="nickname"></span>
985
+
986
+ </h3>
987
+ <div class="details" id="details-5047353">
988
+
989
+ <strong>
990
+ Posted
991
+ by
992
+
993
+
994
+
995
+ kdawson
996
+
997
+
998
+
999
+
1000
+
1001
+
1002
+ <span id="fhtime-5047353">on Tuesday June 30, @09:35PM</span></strong>
1003
+
1004
+ <br>
1005
+
1006
+ <strong>from the <strong>penny-here-penny-there</strong> dept.</strong>
1007
+
1008
+
1009
+ </div>
1010
+ <div class="body" id="fhbody-5047353">
1011
+
1012
+ <div class="media">
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+ <div class="maybe-sprite tid-172">
1025
+ <span class="no-sprite" style="display: none">background: url(//c.fsdn.com/sd/topics/topicsecurity.gif); width:59px; height:78px;</span>
1026
+ <a style="width:59px; height:78px; display: block; text-indent:-99999px;" href="//slashdot.org/index2.pl?fhfilter=security" onclick="return addfhfilter('security');">security</a>
1027
+ </div>
1028
+
1029
+
1030
+
1031
+
1032
+ </div>
1033
+
1034
+
1035
+
1036
+ <div id="text-5047353">
1037
+ An anonymous reader sends news from The Washington Post's Security Fix blog of a new Trojan horse program that takes click fraud to the next level. The Trojan, dubbed <a href="http://secureworks.com/research/threats/ffsearcher/">FFsearcher</a> by SecureWorks, was among the pieces of malware installed by sites hacked with the <a href="http://securitylabs.websense.com/content/Alerts/3421.aspx">Nine-Ball mass compromise</a>, which attacked some 40,000 Web sites this month. The Trojan takes advantage of Google's "AdSense for Search" API, which allows Web sites to embed Google search results alongside the usual Google AdSense ads. (SecureWorks' writeup indicates that Yahoo search is targeted too, but the researchers saw no evidence if the malware redirecting Yahoo searches.) While most search hijackers give themselves away on the victim's machine by redirecting the browser through some no-name search engine, FFsearcher <i>"...converts every search a victim makes through Google.com, so that each query is invisibly redirected through the attackers' own Web sites, via Google's Custom Search API. Meanwhile, the Trojan manipulates the victim's PC and browser so that the victim never actually sees the attacker-controlled Web site that is hijacking the search, but instead sees the search results as though they were returned directly from Google.com (and with Google.com in the victim browser's address bar, not the address of the attacker controlled site). Adding to the stealth is the fact that search results themselves aren't altered by the attackers, who are merely going after the referral payments should victims click on any of the displayed ads. What's more, the attackers aren't diverting clicks or ad revenue away from advertisers or publishers, as in traditional click fraud: They are simply forcing Google to pay commissions that it wouldn't otherwise have to pay."</i> If FFSearcher were the only piece of malware on the machine, it would have a better chance of staying under the radar.</div>
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+ <div class="article-foot a">
1044
+
1045
+ <span class="reader">
1046
+
1047
+ <a href="//it.slashdot.org/story/09/06/30/2237256/New-Click-Fraud-Attack-Is-Stealthiest-Yet" class="more">Read More...</a>
1048
+
1049
+ <span class="commentcnt"> <a href="/comments.pl?sid=1287781" id="commentcnt-5047353">10</a> comments</span>
1050
+ </span>
1051
+
1052
+ <div id="tag-widget-5047353" class="tag-widget-stub body-widget">
1053
+
1054
+ <a class="edit-toggle" href="//slashdot.org/faq/UI.shtml#ui700" onclick="this.blur(); show_login_box(); return false"><span class="button collapse"></span></a>
1055
+
1056
+ <span class="tag-display-stub" context="top" init="legend:'top&nbsp;tags'">google security firefox</span>
1057
+ <span class="tag-display-stub" context="system">it security</span>
1058
+ <span class="tag-display-stub" context="datatype" init="menu:false">story</span>
1059
+ </div>
1060
+ </div>
1061
+
1062
+ </div>
1063
+
1064
+ <span class="vballoon-firehoselist rd_5">
1065
+ <span>Comments:</span>
1066
+ <a href="//it.slashdot.org/comments.pl?sid=1287781" id="commentcnt-5047353">10</a>
1067
+ </span>
1068
+
1069
+
1070
+
1071
+ <hr>
1072
+
1073
+
1074
+ </div><div id="firehose-5046963" class="fhitem fhitem-story article usermode thumbs">
1075
+ <span class="sd-info-block" style="display: none">
1076
+ <span class="sd-key-firehose-id">5046963</span>
1077
+ <span class="type">story</span>
1078
+
1079
+ </span>
1080
+
1081
+
1082
+
1083
+ <span id="updown-5046963" class="vote">
1084
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="up" title="Vote this item up">+</a>
1085
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="down" title="Vote this item down">-</a>
1086
+ </span>
1087
+
1088
+
1089
+
1090
+
1091
+ <h3 class="story" id="title-5046963">
1092
+
1093
+ <span class="sodify" onclick="firehose_set_options('color', 'red')" title="Filter Firehose to entries rated red or better" ></span><span class="soda pop1" title="Filter Firehose to entries rated red or better" onclick="firehose_set_options('color', 'red')"><span>&nbsp;</span></span> <a href="//slashdot.org/index2.pl?fhfilter=tech" title="Filter to Technology" class="skin" onclick='return addfhfilter("tech"); return false;'>Technology:</a> <a onclick="return toggle_fh_body_wrap_return(this);" href="//tech.slashdot.org/story/09/06/30/224233/One-Year-Later-Dead-XP-Still-Going-Strong" class="datitle">One Year Later, "Dead" XP Still Going Strong</a> <span class="date">on Tuesday June 30, @07:32PM</span> <span class="nickname"></span>
1094
+
1095
+ </h3>
1096
+ <div class="details" id="details-5046963">
1097
+
1098
+ <strong>
1099
+ Posted
1100
+ by
1101
+
1102
+
1103
+
1104
+ kdawson
1105
+
1106
+
1107
+
1108
+
1109
+
1110
+
1111
+ <span id="fhtime-5046963">on Tuesday June 30, @07:32PM</span></strong>
1112
+
1113
+ <br>
1114
+
1115
+ <strong>from the <strong>killed-the-wrong-one</strong> dept.</strong>
1116
+
1117
+
1118
+ </div>
1119
+ <div class="body" id="fhbody-5046963">
1120
+
1121
+ <div class="media">
1122
+
1123
+
1124
+
1125
+
1126
+
1127
+
1128
+
1129
+
1130
+
1131
+
1132
+
1133
+ <div class="maybe-sprite tid-201">
1134
+ <span class="no-sprite" style="display: none">background: url(//c.fsdn.com/sd/topics/topicwindows.gif); width:49px; height:65px;</span>
1135
+ <a style="width:49px; height:65px; display: block; text-indent:-99999px;" href="//slashdot.org/index2.pl?fhfilter=windows" onclick="return addfhfilter('windows');">windows</a>
1136
+ </div>
1137
+
1138
+
1139
+
1140
+
1141
+ </div>
1142
+
1143
+
1144
+
1145
+ <div id="text-5046963">
1146
+ <a href="http://www.infoworld.com/" rel="nofollow">snydeq</a> writes <i>"Microsoft pulled the plug on Windows XP a year ago today, no longer selling new copies in most venues. Yet according to a report from InfoWorld, various <a href="http://infoworld.com/d/windows/year-after-windows-xps-death-users-keep-it-alive-and-kicking-247">downgrade paths to XP are keeping the operating system very much alive</a>, particularly among businesses. In fact, despite Microsoft trumpeting Vista as the most successful version of Windows ever sold, more than half of business PCs have subsequently downgraded Vista-based machines to XP, according to data provided by <a href="http://www.xpnet.com/">community-based performance-monitoring network of PCs</a>. Microsoft recently planned to <a href="http://tech.slashdot.org/story/09/06/16/1756229/Windows-7-Licensing-a-Disaster-For-XP-Shops?art_pos=1">further limit the ability to downgrade to XP</a> now that Windows 7 is in the pipeline, but backlash against the licensing scheme prompted the company to change course, <a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9134528">extending downgrade rights on new PCs from April 2010 to April 2011</a>."</i></div>
1147
+
1148
+
1149
+
1150
+
1151
+
1152
+ <div class="article-foot a">
1153
+
1154
+ <span class="reader">
1155
+
1156
+ <a href="//tech.slashdot.org/story/09/06/30/224233/One-Year-Later-Dead-XP-Still-Going-Strong" class="more">Read More...</a>
1157
+
1158
+ <span class="commentcnt"> <a href="/comments.pl?sid=1287729" id="commentcnt-5046963">137</a> comments</span>
1159
+ </span>
1160
+
1161
+ <div id="tag-widget-5046963" class="tag-widget-stub body-widget">
1162
+
1163
+ <a class="edit-toggle" href="//slashdot.org/faq/UI.shtml#ui700" onclick="this.blur(); show_login_box(); return false"><span class="button collapse"></span></a>
1164
+
1165
+ <span class="tag-display-stub" context="top" init="legend:'top&nbsp;tags'">os windows microsoft !deadyet itsgoodenough</span>
1166
+ <span class="tag-display-stub" context="system">tech windows</span>
1167
+ <span class="tag-display-stub" context="datatype" init="menu:false">story</span>
1168
+ </div>
1169
+ </div>
1170
+
1171
+ </div>
1172
+
1173
+ <span class="vballoon-firehoselist rd_5">
1174
+ <span>Comments:</span>
1175
+ <a href="//tech.slashdot.org/comments.pl?sid=1287729" id="commentcnt-5046963">137</a>
1176
+ </span>
1177
+
1178
+
1179
+
1180
+ <hr>
1181
+
1182
+
1183
+ </div><div id="firehose-5046127" class="fhitem fhitem-story article usermode thumbs">
1184
+ <span class="sd-info-block" style="display: none">
1185
+ <span class="sd-key-firehose-id">5046127</span>
1186
+ <span class="type">story</span>
1187
+
1188
+ </span>
1189
+
1190
+
1191
+
1192
+ <span id="updown-5046127" class="vote">
1193
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="up" title="Vote this item up">+</a>
1194
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="down" title="Vote this item down">-</a>
1195
+ </span>
1196
+
1197
+
1198
+
1199
+
1200
+ <h3 class="story" id="title-5046127">
1201
+
1202
+ <span class="sodify" onclick="firehose_set_options('color', 'red')" title="Filter Firehose to entries rated red or better" ></span><span class="soda pop1" title="Filter Firehose to entries rated red or better" onclick="firehose_set_options('color', 'red')"><span>&nbsp;</span></span> <a href="//slashdot.org/index2.pl?fhfilter=tech" title="Filter to Technology" class="skin" onclick='return addfhfilter("tech"); return false;'>Technology:</a> <a onclick="return toggle_fh_body_wrap_return(this);" href="//tech.slashdot.org/story/09/06/30/2044224/Malcolm-Gladwell-Challenges-the-Idea-of-Free" class="datitle">Malcolm Gladwell Challenges the Idea of "Free"</a> <span class="date">on Tuesday June 30, @06:46PM</span> <span class="nickname"></span>
1203
+
1204
+ </h3>
1205
+ <div class="details" id="details-5046127">
1206
+
1207
+ <strong>
1208
+ Posted
1209
+ by
1210
+
1211
+
1212
+
1213
+ kdawson
1214
+
1215
+
1216
+
1217
+
1218
+
1219
+
1220
+ <span id="fhtime-5046127">on Tuesday June 30, @06:46PM</span></strong>
1221
+
1222
+ <br>
1223
+
1224
+ <strong>from the <strong>crying-out-from-a-world-of-hurt</strong> dept.</strong>
1225
+
1226
+
1227
+ </div>
1228
+ <div class="body" id="fhbody-5046127">
1229
+
1230
+ <div class="media">
1231
+
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1238
+
1239
+
1240
+
1241
+
1242
+ <div class="maybe-sprite tid-95">
1243
+ <span class="no-sprite" style="display: none">background: url(//c.fsdn.com/sd/topics/topicinternet.gif); width:70px; height:73px;</span>
1244
+ <a style="width:70px; height:73px; display: block; text-indent:-99999px;" href="//slashdot.org/index2.pl?fhfilter=internet" onclick="return addfhfilter('internet');">internet</a>
1245
+ </div>
1246
+
1247
+
1248
+
1249
+
1250
+ </div>
1251
+
1252
+
1253
+
1254
+ <div id="text-5046127">
1255
+ An anonymous reader brings us another bump on the <a href="//tech.slashdot.org/story/09/06/24/1528204">bumpy road</a> of Chris Anderson's new book, <em>Free: The Future of a Radical Price</em>, which we discussed a week ago. Now the Times (UK) is <a href="http://timesonline.typepad.com/technology/2009/06/malcolm-gladwell-vs-chris-anderson-a-very-intellectual-bust-up.html">reporting on a dustup</a> between Anderson and <a href="http://en.wikipedia.org/wiki/Gladwell">Malcolm Gladwell</a>, author of <em>The Tipping Point</em>, <em>Blink</em>, and <a href="//books.slashdot.org/article.pl?sid=09/03/04/1426234&amp;tid=146">Outliers</a>. Recently <a href="http://www.newyorker.com/arts/critics/books/2009/07/06/090706crbo_books_gladwell?printable=true">Gladwell reviewed, or rather deconstructed, Anderson's book</a> in the New Yorker. <a href="http://www.wired.com/epicenter/2009/06/dear-malcolm-why-so-threatened/">Anderson has responded</a> with a blog post that addresses some, but by no means all, of Gladwell's criticisms, and The Times is inclined to award the match to Gladwell on points. Although their reviewer didn't notice that Gladwell, in setting up the idea of "Free" as a straw man, omitted a critical half of <a href="http://en.wikipedia.org/wiki/Information_wants_to_be_free">Stewart Brand's seminal quote</a>.</div>
1256
+
1257
+
1258
+
1259
+
1260
+
1261
+ <div class="article-foot a">
1262
+
1263
+ <span class="reader">
1264
+
1265
+ <a href="//tech.slashdot.org/story/09/06/30/2044224/Malcolm-Gladwell-Challenges-the-Idea-of-Free" class="more">Read More...</a>
1266
+
1267
+ <span class="commentcnt"> <a href="/comments.pl?sid=1287667" id="commentcnt-5046127">86</a> comments</span>
1268
+ </span>
1269
+
1270
+ <div id="tag-widget-5046127" class="tag-widget-stub body-widget">
1271
+
1272
+ <a class="edit-toggle" href="//slashdot.org/faq/UI.shtml#ui700" onclick="this.blur(); show_login_box(); return false"><span class="button collapse"></span></a>
1273
+
1274
+ <span class="tag-display-stub" context="top" init="legend:'top&nbsp;tags'">books media internet omgwtfsummary egoclash</span>
1275
+ <span class="tag-display-stub" context="system">tech internet</span>
1276
+ <span class="tag-display-stub" context="datatype" init="menu:false">story</span>
1277
+ </div>
1278
+ </div>
1279
+
1280
+ </div>
1281
+
1282
+ <span class="vballoon-firehoselist rd_5">
1283
+ <span>Comments:</span>
1284
+ <a href="//tech.slashdot.org/comments.pl?sid=1287667" id="commentcnt-5046127">86</a>
1285
+ </span>
1286
+
1287
+
1288
+
1289
+ <hr>
1290
+
1291
+
1292
+ </div><div id="firehose-5045029" class="fhitem fhitem-story article usermode thumbs">
1293
+ <span class="sd-info-block" style="display: none">
1294
+ <span class="sd-key-firehose-id">5045029</span>
1295
+ <span class="type">story</span>
1296
+
1297
+ </span>
1298
+
1299
+
1300
+
1301
+ <span id="updown-5045029" class="vote">
1302
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="up" title="Vote this item up">+</a>
1303
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="down" title="Vote this item down">-</a>
1304
+ </span>
1305
+
1306
+
1307
+
1308
+
1309
+ <h3 class="story" id="title-5045029">
1310
+
1311
+ <span class="sodify" onclick="firehose_set_options('color', 'red')" title="Filter Firehose to entries rated red or better" ></span><span class="soda pop1" title="Filter Firehose to entries rated red or better" onclick="firehose_set_options('color', 'red')"><span>&nbsp;</span></span> <a href="//yro.slashdot.org" title="Filter to Your Rights Online" class="skin" onclick='return addfhfilter("yro"); return false;'>Your Rights Online:</a> <a onclick="return toggle_fh_body_wrap_return(this);" href="//yro.slashdot.org/story/09/06/30/1917212/Ranchers-Have-Beef-With-USDA-Program-To-ID-Cattle" class="datitle">Ranchers Have Beef With USDA Program To ID Cattle</a> <span class="date">on Tuesday June 30, @05:57PM</span> <span class="nickname"></span>
1312
+
1313
+ </h3>
1314
+ <div class="details" id="details-5045029">
1315
+
1316
+ <strong>
1317
+ Posted
1318
+ by
1319
+
1320
+
1321
+
1322
+ kdawson
1323
+
1324
+
1325
+
1326
+
1327
+
1328
+
1329
+ <span id="fhtime-5045029">on Tuesday June 30, @05:57PM</span></strong>
1330
+
1331
+ <br>
1332
+
1333
+ <strong>from the <strong>chipping-in</strong> dept.</strong>
1334
+
1335
+
1336
+ </div>
1337
+ <div class="body" id="fhbody-5045029">
1338
+
1339
+ <div class="media">
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+
1346
+
1347
+
1348
+
1349
+
1350
+
1351
+ <div class="maybe-sprite tid-158">
1352
+ <span class="no-sprite" style="display: none">background: url(//c.fsdn.com/sd/topics/topicprivacy.gif); width:71px; height:53px;</span>
1353
+ <a style="width:71px; height:53px; display: block; text-indent:-99999px;" href="//slashdot.org/index2.pl?fhfilter=privacy" onclick="return addfhfilter('privacy');">privacy</a>
1354
+ </div>
1355
+
1356
+
1357
+
1358
+
1359
+ </div>
1360
+
1361
+
1362
+
1363
+ <div id="text-5045029">
1364
+ <a href="http://poncacityweloveyou.com/" rel="nofollow">Ponca City, We Love You</a> writes <i>"The NY Times reports that farmers and ranchers oppose a <a href="http://www.nytimes.com/2009/06/28/us/28livestock.html">government program to identify livestock with microchip tags</a> that would allow the computerized recording of livestock movements from birth to the slaughterhouse. Proponents of the <a href="http://animalid.aphis.usda.gov/nais/">USDA's National Animal Identification System</a> say that computer records of cattle movements mean that when a cow is discovered with bovine tuberculosis or mad cow disease, its prior contacts can be swiftly traced. Ranchers say the extra cost of the electronic tags places an onerous burden on a teetering industry. Small groups of cattle are often rounded up in distant spots and herded into a truck by a single person who could not simultaneously wield the hand-held scanner needed to record individual animal identities. The ranchers also note that there is no Internet connection on many ranches for filing to a regional database. 'Lobbyists from corporate mega-agribusiness designed this program to destroy traditional small sustainable agriculture,' says Genell Pridgen, an owner of Rainbow Meadow Farms. The notion of centralized data banks, even for animals, has also <a href="http://www.lpmo.org/media/releases/2009/PR-20090606-01.shtml">set off alarms among libertarians who oppose NAIS</a>. One group has issued a bumper sticker that reads, 'Tracking cattle now, tracking you soon.' 'They can't comprehend the vastness of a ranch like this,' says Jay Platt, the third-generation owner of a 22,000 acre New Mexico ranch. 'This plan is expensive, it's intrusive, and there's no need for it.'"</i></div>
1365
+
1366
+
1367
+
1368
+
1369
+
1370
+ <div class="article-foot a">
1371
+
1372
+ <span class="reader">
1373
+
1374
+ <a href="//yro.slashdot.org/story/09/06/30/1917212/Ranchers-Have-Beef-With-USDA-Program-To-ID-Cattle" class="more">Read More...</a>
1375
+
1376
+ <span class="commentcnt"> <a href="/comments.pl?sid=1287609" id="commentcnt-5045029">243</a> comments</span>
1377
+ </span>
1378
+
1379
+ <div id="tag-widget-5045029" class="tag-widget-stub body-widget">
1380
+
1381
+ <a class="edit-toggle" href="//slashdot.org/faq/UI.shtml#ui700" onclick="this.blur(); show_login_box(); return false"><span class="button collapse"></span></a>
1382
+
1383
+ <span class="tag-display-stub" context="top" init="legend:'top&nbsp;tags'">business privacy government moo pun</span>
1384
+ <span class="tag-display-stub" context="system">yro privacy</span>
1385
+ <span class="tag-display-stub" context="datatype" init="menu:false">story</span>
1386
+ </div>
1387
+ </div>
1388
+
1389
+ </div>
1390
+
1391
+ <span class="vballoon-firehoselist rd_5">
1392
+ <span>Comments:</span>
1393
+ <a href="//yro.slashdot.org/comments.pl?sid=1287609" id="commentcnt-5045029">243</a>
1394
+ </span>
1395
+
1396
+
1397
+
1398
+ <hr>
1399
+
1400
+
1401
+ </div><div id="firehose-5044897" class="fhitem fhitem-story article usermode thumbs">
1402
+ <span class="sd-info-block" style="display: none">
1403
+ <span class="sd-key-firehose-id">5044897</span>
1404
+ <span class="type">story</span>
1405
+
1406
+ </span>
1407
+
1408
+
1409
+
1410
+ <span id="updown-5044897" class="vote">
1411
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="up" title="Vote this item up">+</a>
1412
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="down" title="Vote this item down">-</a>
1413
+ </span>
1414
+
1415
+
1416
+
1417
+
1418
+ <h3 class="story" id="title-5044897">
1419
+
1420
+ <span class="sodify" onclick="firehose_set_options('color', 'red')" title="Filter Firehose to entries rated red or better" ></span><span class="soda pop1" title="Filter Firehose to entries rated red or better" onclick="firehose_set_options('color', 'red')"><span>&nbsp;</span></span> <a href="//slashdot.org/index2.pl?fhfilter=tech" title="Filter to Technology" class="skin" onclick='return addfhfilter("tech"); return false;'>Technology:</a> <a onclick="return toggle_fh_body_wrap_return(this);" href="//tech.slashdot.org/story/09/06/30/197212/SoftMaker-Office-2008-vs-OpenOfficeorg-31" class="datitle">SoftMaker Office 2008 vs. OpenOffice.org 3.1</a> <span class="date">on Tuesday June 30, @05:11PM</span> <span class="nickname"></span>
1421
+
1422
+ </h3>
1423
+ <div class="details" id="details-5044897">
1424
+
1425
+ <strong>
1426
+ Posted
1427
+ by
1428
+
1429
+
1430
+
1431
+ kdawson
1432
+
1433
+
1434
+
1435
+
1436
+
1437
+
1438
+ <span id="fhtime-5044897">on Tuesday June 30, @05:11PM</span></strong>
1439
+
1440
+ <br>
1441
+
1442
+ <strong>from the <strong>attempted-dethroning-using-nerf-bats</strong> dept.</strong>
1443
+
1444
+
1445
+ </div>
1446
+ <div class="body" id="fhbody-5044897">
1447
+
1448
+ <div class="media">
1449
+
1450
+
1451
+
1452
+
1453
+
1454
+
1455
+
1456
+
1457
+
1458
+
1459
+
1460
+ <div class="maybe-sprite tid-185">
1461
+ <span class="no-sprite" style="display: none">background: url(//c.fsdn.com/sd/topics/topicsoftware.gif); width:65px; height:65px;</span>
1462
+ <a style="width:65px; height:65px; display: block; text-indent:-99999px;" href="//slashdot.org/index2.pl?fhfilter=software" onclick="return addfhfilter('software');">software</a>
1463
+ </div>
1464
+
1465
+
1466
+
1467
+
1468
+ </div>
1469
+
1470
+
1471
+
1472
+ <div id="text-5044897">
1473
+ <a href="http://www.infoworld.com/" rel="nofollow">snydeq</a> writes <i>"InfoWorld's Randall Kennedy <a href="http://infoworld.com/d/applications/better-office-alternative-softmaker-office-bests-openofficeorg-445">examines would-be Microsoft Office competitors SoftMaker Office and OpenOffice.org</a> and finds the results surprising. OpenOffice.org &mdash; frequently cited as the most viable Office competitor &mdash; has pushed for Office interoperability in version 3.1, adding import support for files in Office 2007's native Open XML format. But, as Kennedy found in <a href="http://www.infoworld.com/d/applications/office-compatibility-torture-test-302">Office-compatibility testing</a>, that support remains mostly skin deep. 'Factor in OpenOffice's other well-documented warts &mdash; buggy Java implementation, CPU-hogging auto-update system, quirky font rendering &mdash; and it's easy to see why the vast majority of IT shops continue to reject this pretender to the <a href="http://www.infoworld.com/d/applications/why-microsoft-office-so-hard-kill-264">Microsoft Office throne</a>,' Kennedy writes. SoftMaker Office, however, 'shows that good things often still come in small packages.' Geared more toward mobile computing, the suite's 'compact footprint and low overhead make it ideal for underpowered systems, and its excellent compatibility with Office 2003 file formats means it's a safe choice for heterogeneous environments where external data access isn't a priority.'"</i> Note that SoftMaker Office is not free software &mdash; it costs $79.95 &mdash; and there is no version for Macintosh.</div>
1474
+
1475
+
1476
+
1477
+
1478
+
1479
+ <div class="article-foot a">
1480
+
1481
+ <span class="reader">
1482
+
1483
+ <a href="//tech.slashdot.org/story/09/06/30/197212/SoftMaker-Office-2008-vs-OpenOfficeorg-31" class="more">Read More...</a>
1484
+
1485
+ <span class="commentcnt"> <a href="/comments.pl?sid=1287593" id="commentcnt-5044897">124</a> comments</span>
1486
+ </span>
1487
+
1488
+ <div id="tag-widget-5044897" class="tag-widget-stub body-widget">
1489
+
1490
+ <a class="edit-toggle" href="//slashdot.org/faq/UI.shtml#ui700" onclick="this.blur(); show_login_box(); return false"><span class="button collapse"></span></a>
1491
+
1492
+ <span class="tag-display-stub" context="top" init="legend:'top&nbsp;tags'">software microsoft !opensource slashvertisement slashdotted</span>
1493
+ <span class="tag-display-stub" context="system">tech software</span>
1494
+ <span class="tag-display-stub" context="datatype" init="menu:false">story</span>
1495
+ </div>
1496
+ </div>
1497
+
1498
+ </div>
1499
+
1500
+ <span class="vballoon-firehoselist rd_5">
1501
+ <span>Comments:</span>
1502
+ <a href="//tech.slashdot.org/comments.pl?sid=1287593" id="commentcnt-5044897">124</a>
1503
+ </span>
1504
+
1505
+
1506
+
1507
+ <hr>
1508
+
1509
+
1510
+ </div><div id="firehose-5044569" class="fhitem fhitem-story article usermode thumbs">
1511
+ <span class="sd-info-block" style="display: none">
1512
+ <span class="sd-key-firehose-id">5044569</span>
1513
+ <span class="type">story</span>
1514
+
1515
+ </span>
1516
+
1517
+
1518
+
1519
+ <span id="updown-5044569" class="vote">
1520
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="up" title="Vote this item up">+</a>
1521
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="down" title="Vote this item down">-</a>
1522
+ </span>
1523
+
1524
+
1525
+
1526
+
1527
+ <h3 class="story" id="title-5044569">
1528
+
1529
+ <span class="sodify" onclick="firehose_set_options('color', 'red')" title="Filter Firehose to entries rated red or better" ></span><span class="soda pop1" title="Filter Firehose to entries rated red or better" onclick="firehose_set_options('color', 'red')"><span>&nbsp;</span></span> <a href="//slashdot.org/index2.pl?fhfilter=yro" title="Filter to Your Rights Online" class="skin" onclick='return addfhfilter("yro"); return false;'>Your Rights Online:</a> <a onclick="return toggle_fh_body_wrap_return(this);" href="//yro.slashdot.org/story/09/06/30/1840247/In-Canada-No-Expectation-of-Privacy-On-the-Net" class="datitle">In Canada, No Expectation of Privacy On the Net</a> <span class="date">on Tuesday June 30, @04:23PM</span> <span class="nickname"></span>
1530
+
1531
+ </h3>
1532
+ <div class="details" id="details-5044569">
1533
+
1534
+ <strong>
1535
+ Posted
1536
+ by
1537
+
1538
+
1539
+
1540
+ kdawson
1541
+
1542
+
1543
+
1544
+
1545
+
1546
+
1547
+ <span id="fhtime-5044569">on Tuesday June 30, @04:23PM</span></strong>
1548
+
1549
+ <br>
1550
+
1551
+ <strong>from the <strong>if-you're-not-doing-anything-wrong</strong> dept.</strong>
1552
+
1553
+
1554
+ </div>
1555
+ <div class="body" id="fhbody-5044569">
1556
+
1557
+ <div class="media">
1558
+
1559
+
1560
+
1561
+
1562
+
1563
+
1564
+
1565
+
1566
+
1567
+
1568
+
1569
+ <div class="maybe-sprite tid-158">
1570
+ <span class="no-sprite" style="display: none">background: url(//c.fsdn.com/sd/topics/topicprivacy.gif); width:71px; height:53px;</span>
1571
+ <a style="width:71px; height:53px; display: block; text-indent:-99999px;" href="//slashdot.org/index2.pl?fhfilter=privacy" onclick="return addfhfilter('privacy');">privacy</a>
1572
+ </div>
1573
+
1574
+
1575
+
1576
+
1577
+ </div>
1578
+
1579
+
1580
+
1581
+ <div id="text-5044569">
1582
+ <a href="http://www.andrewshouts.com/" rel="nofollow">The_AV8R</a> writes <i>"In a recent interview, Peter Van Loan, the new Canadian Public Safety minister, says <a href="http://www.tvo.org/cfmx/tvoorg/theagenda/index.cfm?page_id=3&amp;action=blog&amp;subaction=viewpost&amp;blog_id=81&amp;post_id=10544">ISPs should be able to provide private user information without a warrant</a>. (The only example he gave was cases of child pornography; the interviewer pointed out that in these cases ISPs are already at liberty to divulge customer information without a warrant, but that the proposed rules would make that mandatory whenever the police ask.) He was adamant that in regard to IP addresses, names, cell phone numbers, and email addresses: '...that is not the kind of information about which Canadians have a legitimate expectation of privacy.' The minister denied &mdash; even when presented with an audio clip proving otherwise &mdash; that his predecessor had promised never to allow the police to wiretap the Internet without a warrant."</i></div>
1583
+
1584
+
1585
+
1586
+
1587
+
1588
+ <div class="article-foot a">
1589
+
1590
+ <span class="reader">
1591
+
1592
+ <a href="//yro.slashdot.org/story/09/06/30/1840247/In-Canada-No-Expectation-of-Privacy-On-the-Net" class="more">Read More...</a>
1593
+
1594
+ <span class="commentcnt"> <a href="/comments.pl?sid=1287569" id="commentcnt-5044569">138</a> comments</span>
1595
+ </span>
1596
+
1597
+ <div id="tag-widget-5044569" class="tag-widget-stub body-widget">
1598
+
1599
+ <a class="edit-toggle" href="//slashdot.org/faq/UI.shtml#ui700" onclick="this.blur(); show_login_box(); return false"><span class="button collapse"></span></a>
1600
+
1601
+ <span class="tag-display-stub" context="top" init="legend:'top&nbsp;tags'">privacy politics government tor fascism</span>
1602
+ <span class="tag-display-stub" context="system">yro privacy</span>
1603
+ <span class="tag-display-stub" context="datatype" init="menu:false">story</span>
1604
+ </div>
1605
+ </div>
1606
+
1607
+ </div>
1608
+
1609
+ <span class="vballoon-firehoselist rd_5">
1610
+ <span>Comments:</span>
1611
+ <a href="//yro.slashdot.org/comments.pl?sid=1287569" id="commentcnt-5044569">138</a>
1612
+ </span>
1613
+
1614
+
1615
+
1616
+ <hr>
1617
+
1618
+
1619
+ </div><div id="firehose-5043813" class="fhitem fhitem-story article usermode thumbs">
1620
+ <span class="sd-info-block" style="display: none">
1621
+ <span class="sd-key-firehose-id">5043813</span>
1622
+ <span class="type">story</span>
1623
+
1624
+ </span>
1625
+
1626
+
1627
+
1628
+ <span id="updown-5043813" class="vote">
1629
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="up" title="Vote this item up">+</a>
1630
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="down" title="Vote this item down">-</a>
1631
+ </span>
1632
+
1633
+
1634
+
1635
+
1636
+ <h3 class="story" id="title-5043813">
1637
+
1638
+ <span class="sodify" onclick="firehose_set_options('color', 'red')" title="Filter Firehose to entries rated red or better" ></span><span class="soda pop1" title="Filter Firehose to entries rated red or better" onclick="firehose_set_options('color', 'red')"><span>&nbsp;</span></span> <a href="//slashdot.org/index2.pl?fhfilter=news" title="Filter to News" class="skin" onclick='return addfhfilter("news"); return false;'>News:</a> <a onclick="return toggle_fh_body_wrap_return(this);" href="//news.slashdot.org/story/09/06/30/1752220/The-Hidden-Cost-of-Using-Microsoft-Software" class="datitle">The Hidden Cost of Using Microsoft Software</a> <span class="date">on Tuesday June 30, @03:37PM</span> <span class="nickname"></span>
1639
+
1640
+ </h3>
1641
+ <div class="details" id="details-5043813">
1642
+
1643
+ <strong>
1644
+ Posted
1645
+ by
1646
+
1647
+
1648
+
1649
+ kdawson
1650
+
1651
+
1652
+
1653
+
1654
+
1655
+
1656
+ <span id="fhtime-5043813">on Tuesday June 30, @03:37PM</span></strong>
1657
+
1658
+ <br>
1659
+
1660
+ <strong>from the <strong>badware-tax</strong> dept.</strong>
1661
+
1662
+
1663
+ </div>
1664
+ <div class="body" id="fhbody-5043813">
1665
+
1666
+ <div class="media">
1667
+
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+
1674
+
1675
+
1676
+
1677
+
1678
+ <div class="maybe-sprite tid-109">
1679
+ <span class="no-sprite" style="display: none">background: url(//c.fsdn.com/sd/topics/topicms.gif); width:75px; height:55px;</span>
1680
+ <a style="width:75px; height:55px; display: block; text-indent:-99999px;" href="//slashdot.org/index2.pl?fhfilter=microsoft" onclick="return addfhfilter('microsoft');">microsoft</a>
1681
+ </div>
1682
+
1683
+
1684
+
1685
+
1686
+ </div>
1687
+
1688
+
1689
+
1690
+ <div id="text-5043813">
1691
+ <a href="http://opendotdotdot.blogspot.com/" rel="nofollow">Glyn Moody</a> writes <i>"Detractors of free software like to point out it's not really 'free,' and claim that its Total Cost of Ownership is often comparable with closed-source solutions if you take everything into account. And yet, despite their enthusiasm for including all the costs, they never include a very real extra that users of Microsoft's products frequently have to pay: the <a href="http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2316&amp;blogid=14">cost of cleaning up malware infections</a>. For example, the UK city of Manchester has <a href="http://www.manchestereveningnews.co.uk/news/s/1121846_bus_lane_fines_axed_over_bug?rss=yes">just paid out nearly $2.5 million</a> to clean up the Conficker worm, most of which was 'a &pound;1.2m [$2million] bill in the IT department, including &pound;600,000 [$1 million] getting "consultancy support" to fix the problems, which including drafting in experts from Microsoft.' To make the comparisons fair, isn't it about time these often massive costs were included in TCO calculations?"</i></div>
1692
+
1693
+
1694
+
1695
+
1696
+
1697
+ <div class="article-foot a">
1698
+
1699
+ <span class="reader">
1700
+
1701
+ <a href="//news.slashdot.org/story/09/06/30/1752220/The-Hidden-Cost-of-Using-Microsoft-Software" class="more">Read More...</a>
1702
+
1703
+ <span class="commentcnt"> <a href="/comments.pl?sid=1287529" id="commentcnt-5043813">458</a> comments</span>
1704
+ </span>
1705
+
1706
+ <div id="tag-widget-5043813" class="tag-widget-stub body-widget">
1707
+
1708
+ <a class="edit-toggle" href="//slashdot.org/faq/UI.shtml#ui700" onclick="this.blur(); show_login_box(); return false"><span class="button collapse"></span></a>
1709
+
1710
+ <span class="tag-display-stub" context="top" init="legend:'top&nbsp;tags'">money microsoft freeasinbeer tco flamebait</span>
1711
+ <span class="tag-display-stub" context="system">news microsoft</span>
1712
+ <span class="tag-display-stub" context="datatype" init="menu:false">story</span>
1713
+ </div>
1714
+ </div>
1715
+
1716
+ </div>
1717
+
1718
+ <span class="vballoon-firehoselist rd_5">
1719
+ <span>Comments:</span>
1720
+ <a href="//news.slashdot.org/comments.pl?sid=1287529" id="commentcnt-5043813">458</a>
1721
+ </span>
1722
+
1723
+
1724
+
1725
+ <hr>
1726
+
1727
+
1728
+ </div><div id="firehose-5043411" class="fhitem fhitem-story article usermode thumbs">
1729
+ <span class="sd-info-block" style="display: none">
1730
+ <span class="sd-key-firehose-id">5043411</span>
1731
+ <span class="type">story</span>
1732
+
1733
+ </span>
1734
+
1735
+
1736
+
1737
+ <span id="updown-5043411" class="vote">
1738
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="up" title="Vote this item up">+</a>
1739
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="down" title="Vote this item down">-</a>
1740
+ </span>
1741
+
1742
+
1743
+
1744
+
1745
+ <h3 class="story" id="title-5043411">
1746
+
1747
+ <span class="sodify" onclick="firehose_set_options('color', 'red')" title="Filter Firehose to entries rated red or better" ></span><span class="soda pop1" title="Filter Firehose to entries rated red or better" onclick="firehose_set_options('color', 'red')"><span>&nbsp;</span></span> <a href="//slashdot.org/index2.pl?fhfilter=interviews" title="Filter to Interviews" class="skin" onclick='return addfhfilter("interviews"); return false;'>Interviews:</a> <a onclick="return toggle_fh_body_wrap_return(this);" href="//interviews.slashdot.org/story/09/06/30/1728254/Ask-Jazz-Technical-Lead-Dr-Erich-Gamma" class="datitle">Ask Jazz Technical Lead Dr. Erich Gamma</a> <span class="date">on Tuesday June 30, @02:49PM</span> <span class="nickname"></span>
1748
+
1749
+ </h3>
1750
+ <div class="details" id="details-5043411">
1751
+
1752
+ <strong>
1753
+ Posted
1754
+ by
1755
+
1756
+
1757
+
1758
+ <a href="http://slashdot.org/~ScuttleMonkey/" rel="nofollow">ScuttleMonkey</a>
1759
+
1760
+
1761
+
1762
+
1763
+
1764
+
1765
+ <span id="fhtime-5043411">on Tuesday June 30, @02:49PM</span></strong>
1766
+
1767
+ <br>
1768
+
1769
+ <strong>from the <strong>sing-me-a-tune</strong> dept.</strong>
1770
+
1771
+
1772
+ </div>
1773
+ <div class="body" id="fhbody-5043411">
1774
+
1775
+ <div class="media">
1776
+
1777
+
1778
+
1779
+
1780
+
1781
+
1782
+
1783
+
1784
+
1785
+
1786
+
1787
+ <div class="maybe-sprite tid-108">
1788
+ <span class="no-sprite" style="display: none">background: url(//c.fsdn.com/sd/topics/topicjava.gif); width:43px; height:60px;</span>
1789
+ <a style="width:43px; height:60px; display: block; text-indent:-99999px;" href="//slashdot.org/index2.pl?fhfilter=java" onclick="return addfhfilter('java');">java</a>
1790
+ </div>
1791
+
1792
+
1793
+
1794
+
1795
+ </div>
1796
+
1797
+
1798
+
1799
+ <div id="text-5043411">
1800
+ As IBM continues to build out, <a href="http://jazz.net/about/">Jazz</a>, their community-oriented development site, technical lead Dr. Erich Gamma has offered to answer questions about Jazz or anything else in his realm of expertise. Among his many accomplishments, Erich worked for Kent Beck on the Java unit testing framework, JUnit, and was actively involved until JUnit 4. Dr Gamma was also one of the fathers of Eclipse and the original lead on the Eclipse Java development tools. Feel free to fire away on Eclipse, Java, JUnit, the Rational suite, the Jazz site, or anything else you think Erich might be able to answer. Usual Slashdot <a href="https://slashdot.org/faq/interviews.shtml">interview rules</a> apply. <b>Update 19:05 GMT by SM:</b> As pointed out by user Hop-Frog, Dr Gamma is also co-author of the influential computer science textbook <em> <a href="http://en.wikipedia.org/wiki/Design_Patterns_(book)">Design Patterns: Elements of Reusable Object-Oriented Software</a> </em>.</div>
1801
+
1802
+
1803
+
1804
+
1805
+
1806
+ <div class="article-foot a">
1807
+
1808
+ <span class="reader">
1809
+
1810
+ <a href="//interviews.slashdot.org/story/09/06/30/1728254/Ask-Jazz-Technical-Lead-Dr-Erich-Gamma" class="more">Read More...</a>
1811
+
1812
+ <span class="commentcnt"> <a href="/comments.pl?sid=1287509" id="commentcnt-5043411">54</a> comments</span>
1813
+ </span>
1814
+
1815
+ <div id="tag-widget-5043411" class="tag-widget-stub body-widget">
1816
+
1817
+ <a class="edit-toggle" href="//slashdot.org/faq/UI.shtml#ui700" onclick="this.blur(); show_login_box(); return false"><span class="button collapse"></span></a>
1818
+
1819
+ <span class="tag-display-stub" context="top" init="legend:'top&nbsp;tags'">java programming jackrabbit !satchmo gangoffour</span>
1820
+ <span class="tag-display-stub" context="system">interviews java</span>
1821
+ <span class="tag-display-stub" context="datatype" init="menu:false">story</span>
1822
+ </div>
1823
+ </div>
1824
+
1825
+ </div>
1826
+
1827
+ <span class="vballoon-firehoselist rd_5">
1828
+ <span>Comments:</span>
1829
+ <a href="//interviews.slashdot.org/comments.pl?sid=1287509" id="commentcnt-5043411">54</a>
1830
+ </span>
1831
+
1832
+
1833
+
1834
+ <hr>
1835
+
1836
+
1837
+ </div><div id="firehose-5044165" class="fhitem fhitem-story article usermode thumbs">
1838
+ <span class="sd-info-block" style="display: none">
1839
+ <span class="sd-key-firehose-id">5044165</span>
1840
+ <span class="type">story</span>
1841
+
1842
+ </span>
1843
+
1844
+
1845
+
1846
+ <span id="updown-5044165" class="vote">
1847
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="up" title="Vote this item up">+</a>
1848
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="down" title="Vote this item down">-</a>
1849
+ </span>
1850
+
1851
+
1852
+
1853
+
1854
+ <h3 class="story" id="title-5044165">
1855
+
1856
+ <span class="sodify" onclick="firehose_set_options('color', 'red')" title="Filter Firehose to entries rated red or better" ></span><span class="soda pop1" title="Filter Firehose to entries rated red or better" onclick="firehose_set_options('color', 'red')"><span>&nbsp;</span></span> <a href="//slashdot.org/index2.pl?fhfilter=tech" title="Filter to Technology" class="skin" onclick='return addfhfilter("tech"); return false;'>Technology:</a> <a onclick="return toggle_fh_body_wrap_return(this);" href="//tech.slashdot.org/story/09/06/30/1814235/Moblin-V20-Beta-For-Netbooks-and-Nettops" class="datitle">Moblin V2.0 Beta For Netbooks and Nettops</a> <span class="date">on Tuesday June 30, @02:31PM</span> <span class="nickname"></span>
1857
+
1858
+ </h3>
1859
+ <div class="details" id="details-5044165">
1860
+
1861
+ <strong>
1862
+ Posted
1863
+ by
1864
+
1865
+
1866
+
1867
+ kdawson
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+
1874
+ <span id="fhtime-5044165">on Tuesday June 30, @02:31PM</span></strong>
1875
+
1876
+ <br>
1877
+
1878
+ <strong>from the <strong>get-your-mobility-on</strong> dept.</strong>
1879
+
1880
+
1881
+ </div>
1882
+ <div class="body" id="fhbody-5044165">
1883
+
1884
+ <div class="media">
1885
+
1886
+
1887
+
1888
+
1889
+
1890
+
1891
+
1892
+
1893
+
1894
+
1895
+
1896
+ <div class="maybe-sprite tid-190">
1897
+ <span class="no-sprite" style="display: none">background: url(//c.fsdn.com/sd/topics/topicos.gif); width:66px; height:49px;</span>
1898
+ <a style="width:66px; height:49px; display: block; text-indent:-99999px;" href="//slashdot.org/index2.pl?fhfilter=os" onclick="return addfhfilter('os');">os</a>
1899
+ </div>
1900
+
1901
+
1902
+
1903
+
1904
+ </div>
1905
+
1906
+
1907
+
1908
+ <div id="text-5044165">
1909
+ superbubba writes <i>"The Moblin steering committee is happy to release the <a href="http://moblin.org/community/blogs/imad/2009/moblin-v20-beta-netbooks-and-nettops-its-here">Moblin v2.0 beta for netbooks and nettops</a> for developer testing. With this release, developers can begin to experience and work with the source code of the visually rich, interactive user interface designed for Intel Atom based netbooks."</i></div>
1910
+
1911
+
1912
+
1913
+
1914
+
1915
+ <div class="article-foot a">
1916
+
1917
+ <span class="reader">
1918
+
1919
+ <a href="//tech.slashdot.org/story/09/06/30/1814235/Moblin-V20-Beta-For-Netbooks-and-Nettops" class="more">Read More...</a>
1920
+
1921
+ <span class="commentcnt"> <a href="/comments.pl?sid=1287555" id="commentcnt-5044165">40</a> comments</span>
1922
+ </span>
1923
+
1924
+ <div id="tag-widget-5044165" class="tag-widget-stub body-widget">
1925
+
1926
+ <a class="edit-toggle" href="//slashdot.org/faq/UI.shtml#ui700" onclick="this.blur(); show_login_box(); return false"><span class="button collapse"></span></a>
1927
+
1928
+ <span class="tag-display-stub" context="top" init="legend:'top&nbsp;tags'">linux os !zelda !goblin !laptops</span>
1929
+ <span class="tag-display-stub" context="system">tech os</span>
1930
+ <span class="tag-display-stub" context="datatype" init="menu:false">story</span>
1931
+ </div>
1932
+ </div>
1933
+
1934
+ </div>
1935
+
1936
+ <span class="vballoon-firehoselist rd_5">
1937
+ <span>Comments:</span>
1938
+ <a href="//tech.slashdot.org/comments.pl?sid=1287555" id="commentcnt-5044165">40</a>
1939
+ </span>
1940
+
1941
+
1942
+
1943
+ <hr>
1944
+
1945
+
1946
+ </div><div id="firehose-5042969" class="fhitem fhitem-story article usermode thumbs">
1947
+ <span class="sd-info-block" style="display: none">
1948
+ <span class="sd-key-firehose-id">5042969</span>
1949
+ <span class="type">story</span>
1950
+
1951
+ </span>
1952
+
1953
+
1954
+
1955
+ <span id="updown-5042969" class="vote">
1956
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="up" title="Vote this item up">+</a>
1957
+ <a href="//slashdot.org/faq/UI.shtml#ui700" class="down" title="Vote this item down">-</a>
1958
+ </span>
1959
+
1960
+
1961
+
1962
+
1963
+ <h3 class="story" id="title-5042969">
1964
+
1965
+ <span class="sodify" onclick="firehose_set_options('color', 'red')" title="Filter Firehose to entries rated red or better" ></span><span class="soda pop1" title="Filter Firehose to entries rated red or better" onclick="firehose_set_options('color', 'red')"><span>&nbsp;</span></span> <a href="//yro.slashdot.org" title="Filter to Your Rights Online" class="skin" onclick='return addfhfilter("yro"); return false;'>Your Rights Online:</a> <a onclick="return toggle_fh_body_wrap_return(this);" href="//yro.slashdot.org/story/09/06/30/175250/China-Delays-Green-Dam-Internet-Filter" class="datitle">China Delays "Green Dam" Internet Filter</a> <span class="date">on Tuesday June 30, @02:01PM</span> <span class="nickname"></span>
1966
+
1967
+ </h3>
1968
+ <div class="details" id="details-5042969">
1969
+
1970
+ <strong>
1971
+ Posted
1972
+ by
1973
+
1974
+
1975
+
1976
+ kdawson
1977
+
1978
+
1979
+
1980
+
1981
+
1982
+
1983
+ <span id="fhtime-5042969">on Tuesday June 30, @02:01PM</span></strong>
1984
+
1985
+ <br>
1986
+
1987
+ <strong>from the <strong>step-too-far</strong> dept.</strong>
1988
+
1989
+
1990
+ </div>
1991
+ <div class="body" id="fhbody-5042969">
1992
+
1993
+ <div class="media">
1994
+
1995
+
1996
+
1997
+
1998
+
1999
+
2000
+
2001
+
2002
+
2003
+
2004
+
2005
+ <div class="maybe-sprite tid-153">
2006
+ <span class="no-sprite" style="display: none">background: url(//c.fsdn.com/sd/topics/topiccensorship.gif); width:44px; height:55px;</span>
2007
+ <a style="width:44px; height:55px; display: block; text-indent:-99999px;" href="//slashdot.org/index2.pl?fhfilter=censorship" onclick="return addfhfilter('censorship');">censorship</a>
2008
+ </div>
2009
+
2010
+
2011
+
2012
+
2013
+ </div>
2014
+
2015
+
2016
+
2017
+ <div id="text-5042969">
2018
+ <a href="http://www.sailorspork.org/" rel="nofollow">SailorSpork</a> sends in a BBC report that "<a href="http://news.bbc.co.uk/2/hi/asia-pacific/8126832.stm">China is delaying a controversial plan</a> requiring all new computers sold in the country to be equipped with an Internet filtering software, state media says. The filter, called Green Dam Youth Escort, was to have been required from Wednesday, but the ministry of industry said computer makers needed more time." The submitter adds: <i>"Except of course for Sony, who as reported earlier lacked the moral fiber to hold off installing the spyware, which reportedly is <a href="http://it.slashdot.org/story/09/06/11/1347219/Chinese-Govt-Spyware-Puts-Computers-At-Risk"> ridden with security holes</a> and <a href="http://yro.slashdot.org/story/09/06/16/1422235/Chinas-Green-Dam-No-Longer-Compulsory-May-Have-Lifted-Code">uses stolen code</a>. Sony actually managed to ship <a href="http://yro.slashdot.org/story/09/06/30/0128231/Sony-Begins-Shipping-PCs-With-Green-Dam-In-China">ahead of the schedule.</a>"</i></div>
2019
+
2020
+
2021
+
2022
+
2023
+
2024
+ <div class="article-foot a">
2025
+
2026
+ <span class="reader">
2027
+
2028
+ <a href="//yro.slashdot.org/story/09/06/30/175250/China-Delays-Green-Dam-Internet-Filter" class="more">Read More...</a>
2029
+
2030
+ <span class="commentcnt"> <a href="/comments.pl?sid=1287475" id="commentcnt-5042969">73</a> comments</span>
2031
+ </span>
2032
+
2033
+ <div id="tag-widget-5042969" class="tag-widget-stub body-widget">
2034
+
2035
+ <a class="edit-toggle" href="//slashdot.org/faq/UI.shtml#ui700" onclick="this.blur(); show_login_box(); return false"><span class="button collapse"></span></a>
2036
+
2037
+ <span class="tag-display-stub" context="top" init="legend:'top&nbsp;tags'">censorship realpolitik grassmudhorse sony greenwash</span>
2038
+ <span class="tag-display-stub" context="system">yro censorship</span>
2039
+ <span class="tag-display-stub" context="datatype" init="menu:false">story</span>
2040
+ </div>
2041
+ </div>
2042
+
2043
+ </div>
2044
+
2045
+ <span class="vballoon-firehoselist rd_5">
2046
+ <span>Comments:</span>
2047
+ <a href="//yro.slashdot.org/comments.pl?sid=1287475" id="commentcnt-5042969">73</a>
2048
+ </span>
2049
+
2050
+
2051
+
2052
+ <hr>
2053
+
2054
+
2055
+ </div>
2056
+ </div>
2057
+ <script id="init-sprites" type="text/javascript">
2058
+ sprite_rules({ "tid-108": ".tid-108 { background: url(//c.fsdn.com/sd/firehose/005/047/5047353.png?1) no-repeat top left; background-position: 0px -777px; width: 43px; height: 60px; }", "tid-201": ".tid-201 { background: url(//c.fsdn.com/sd/firehose/005/047/5047353.png?1) no-repeat top left; background-position: 0px -216px; width: 49px; height: 65px; }", "tid-158": ".tid-158 { background: url(//c.fsdn.com/sd/firehose/005/047/5047353.png?1) no-repeat top left; background-position: 0px -454px; width: 71px; height: 53px; }", "tid-109": ".tid-109 { background: url(//c.fsdn.com/sd/firehose/005/047/5047353.png?1) no-repeat top left; background-position: 0px -672px; width: 75px; height: 55px; }", "tid-172": ".tid-172 { background: url(//c.fsdn.com/sd/firehose/005/047/5047353.png?1) no-repeat top left; background-position: 0px 0px; width: 59px; height: 78px; }", "tid-217": ".tid-217 { background: url(//c.fsdn.com/sd/firehose/005/047/5047353.png?1) no-repeat top left; background-position: 0px -128px; width: 104px; height: 38px; }", "tid-153": ".tid-153 { background: url(//c.fsdn.com/sd/firehose/005/047/5047353.png?1) no-repeat top left; background-position: 0px -986px; width: 44px; height: 55px; }", "tid-95": ".tid-95 { background: url(//c.fsdn.com/sd/firehose/005/047/5047353.png?1) no-repeat top left; background-position: 0px -331px; width: 70px; height: 73px; }", "tid-185": ".tid-185 { background: url(//c.fsdn.com/sd/firehose/005/047/5047353.png?1) no-repeat top left; background-position: 0px -557px; width: 65px; height: 65px; }", "tid-190": ".tid-190 { background: url(//c.fsdn.com/sd/firehose/005/047/5047353.png?1) no-repeat top left; background-position: 0px -887px; width: 66px; height: 49px; }" });
2059
+ use_sprites($dom("firehoselist"));
2060
+ $('script:last#init-sprites').remove();
2061
+ </script>
2062
+ <span id="itemsreturned">
2063
+
2064
+ </span>
2065
+ </div>
2066
+
2067
+ <div class="paginate" id="fh-pag-div">
2068
+ <div class="currcolor green ">&nbsp;</div>
2069
+ <div class="menu" id="fh-paginate">
2070
+
2071
+
2072
+
2073
+
2074
+
2075
+
2076
+
2077
+ <span class="active">
2078
+ <a onclick="firehose_set_options('startdate','20090630'); return false;" href="//slashdot.org/index2.pl?section=&amp;color=green&amp;index=1&amp;view=stories&amp;duration=-1&amp;startdate=20090630">Today</a>
2079
+ </span>
2080
+
2081
+ <span class="inactive">
2082
+ <a onclick="firehose_set_options('startdate','20090629'); return false;" href="//slashdot.org/index2.pl?section=&amp;color=green&amp;index=1&amp;view=stories&amp;duration=-1&amp;startdate=20090629">Yesterday</a>
2083
+ </span>
2084
+
2085
+ <span class="inactive">
2086
+ <a onclick="firehose_set_options('startdate','20090628'); return false;" href="//slashdot.org/index2.pl?section=&amp;color=green&amp;index=1&amp;view=stories&amp;duration=-1&amp;startdate=20090628">Sunday</a>
2087
+ </span>
2088
+
2089
+
2090
+ <span class="inactive">
2091
+ <span id="firehose_more"><span class="busy"><img src="//c.fsdn.com/sd/spinner_tr.gif"></span>
2092
+
2093
+
2094
+
2095
+ <span id="more-experiment" class="future "><a href="//slashdot.org/index2.pl?section=&amp;color=green&amp;index=1&amp;view=stories&amp;duration=-1&amp;startdate=20090630&amp;page=1" onclick=" firehose_more(); return false;">Many more</a></span>
2096
+ <script type="text/javascript">more_possible('Many more');</script>
2097
+
2098
+ </span>
2099
+ </span>
2100
+
2101
+
2102
+ <span class="submit"><a href="//slashdot.org/submit.pl?primaryskid=1" >Submit Story</a></span>
2103
+
2104
+
2105
+
2106
+ </div>
2107
+ </div>
2108
+
2109
+
2110
+
2111
+ </div>
2112
+
2113
+
2114
+
2115
+ </div> <!-- yui-b -->
2116
+
2117
+ </div>
2118
+
2119
+
2120
+ <div id="slashboxes" class="yui-b">
2121
+
2122
+
2123
+ <div class="block">
2124
+ <div class="title" id="srandblock-title">
2125
+ <h4>
2126
+ <a href="//idle.slashdot.org">Idle Video</a>
2127
+ </h4>
2128
+ </div>
2129
+ <div class="content" id="srandblock-content">
2130
+ <table>
2131
+
2132
+ <tr>
2133
+
2134
+ <td><a href="//idle.slashdot.org/article.pl?sid=09/05/27/1645236"><img src="//c.fsdn.com/sd/articles/09/05/27/1645236-1-thumb.png" width="50" height="37"></a></td>
2135
+ <td><a href="//idle.slashdot.org/article.pl?sid=09/05/27/1645236">The Kindle 3</a></td>
2136
+
2137
+ </tr>
2138
+
2139
+ <tr>
2140
+
2141
+ <td><a href="//idle.slashdot.org/article.pl?sid=09/05/01/1532210"><img src="//c.fsdn.com/sd/articles/09/05/01/1532210-1-thumb.png" width="50" height="37"></a></td>
2142
+ <td><a href="//idle.slashdot.org/article.pl?sid=09/05/01/1532210">Hastily Made Cleveland Tourism Video Take 2</a></td>
2143
+
2144
+ </tr>
2145
+
2146
+ <tr>
2147
+
2148
+ <td><a href="//idle.slashdot.org/article.pl?sid=09/04/28/1611212"><img src="//c.fsdn.com/sd/articles/09/04/28/1611212-1-thumb.png" width="50" height="37"></a></td>
2149
+ <td><a href="//idle.slashdot.org/article.pl?sid=09/04/28/1611212">The Waterboarding Torture Memos In Song</a></td>
2150
+
2151
+ </tr>
2152
+
2153
+ <tr>
2154
+
2155
+ <td><a href="//idle.slashdot.org/article.pl?sid=09/04/22/1553220"><img src="//c.fsdn.com/sd/articles/09/04/22/1553220-1-thumb.png" width="50" height="37"></a></td>
2156
+ <td><a href="//idle.slashdot.org/article.pl?sid=09/04/22/1553220">Woman Hires Stripper to Impersonate Her At Reunion</a></td>
2157
+
2158
+ </tr>
2159
+
2160
+ </table>
2161
+ </div>
2162
+ </div><div class="block" id="poll">
2163
+ <div class="title" id="poll-title">
2164
+ <h4><a href="">Slashdot Poll</a></h4>
2165
+ </div>
2166
+
2167
+ <div class="content" id="poll-content">
2168
+ <form action="//slashdot.org/pollBooth.pl" method="post">
2169
+ <fieldset>
2170
+ <legend>Poll</legend>
2171
+ <input type="hidden" name="qid" value="1809">
2172
+
2173
+ <input type="hidden" name="section" value="mainpage">
2174
+
2175
+ <b>I am about to select ...</b>
2176
+
2177
+
2178
+ <br><input type="radio" name="aid" value="1">The most popular answer.
2179
+
2180
+ <br><input type="radio" name="aid" value="2">The least popular answer.
2181
+
2182
+ <br><input type="radio" name="aid" value="3">An answer between the most and least popular.
2183
+
2184
+ <br><input type="radio" name="aid" value="4">No answer at all; I refuse to vote.
2185
+
2186
+ <br><input type="radio" name="aid" value="5">Why won't this thing let me vote straight ticket?
2187
+
2188
+
2189
+ <br><input type="submit" value="Vote">
2190
+
2191
+ [ <a href="//slashdot.org/pollBooth.pl?qid=1809&amp;aid=-1"><b>Results</b></a> |
2192
+ <a href="//slashdot.org/pollBooth.pl"><b>Polls</b></a> ] <br>
2193
+ Comments:<b>239</b> | Votes:<b>19100</b>
2194
+ </fieldset>
2195
+ </form>
2196
+
2197
+ </div>
2198
+ </div><div class="block" id="activetags">
2199
+ <div class="title" id="activetags-title">
2200
+ <h4><a href="/tags">Recent Tags</a></h4>
2201
+ </div>
2202
+
2203
+ <div class="content" id="activetags-content">
2204
+ <ul><li><a href="/tags/government">government</a></li><li><a href="/tags/privacy">privacy</a></li><li><a href="/tags/it">it</a></li><li><a href="/tags/usa">usa</a></li><li><a href="/tags/internet">internet</a></li><li><a href="/tags/storage">storage</a></li><li><a href="/tags/moon">moon</a></li></ul>
2205
+
2206
+ </div>
2207
+ </div><div class="block">
2208
+ <div class="title" id="login-title">
2209
+ <h4>
2210
+ Slashdot Login
2211
+ </h4>
2212
+ </div>
2213
+ <div class="content" id="login-content">
2214
+ <form action="//slashdot.org/login.pl" method="post">
2215
+ <fieldset>
2216
+ <legend>Log In</legend>
2217
+ <label>
2218
+ Nickname
2219
+ </label>
2220
+ <input type="text" name="unickname" size="20" value="">
2221
+ <label>
2222
+ Password
2223
+ </label>
2224
+ <input type="hidden" name="returnto" value="//slashdot.org/">
2225
+ <input type="hidden" name="op" value="userlogin">
2226
+ <input type="password" name="upasswd" size="20">
2227
+ <label class="checkbox">
2228
+ <input type="checkbox" name="login_temp" value="yes">
2229
+ Public Terminal
2230
+ </label>
2231
+ <input type="submit" name="userlogin" value="Log in" class="button">
2232
+ </fieldset>
2233
+ </form>
2234
+
2235
+
2236
+
2237
+ <hr>
2238
+
2239
+
2240
+ <form action="//slashdot.org/login.pl" method="post">
2241
+ <fieldset>
2242
+ <input type="hidden" name="slash_returnto" value="//slashdot.org/">
2243
+ <input type="hidden" name="op" value="claim_openid">
2244
+ <input type="hidden" name="openid_login" value="1">
2245
+ <label for="openid_url" class="openid_url">
2246
+ <input type="text" name="openid_url" value="http://" size="32" maxlength="255">
2247
+ </label>
2248
+ <input type="submit" value="Log in with OpenID" class="button">
2249
+ </fieldset>
2250
+ </form>
2251
+
2252
+
2253
+ <p>
2254
+ <b>
2255
+ <a href="//slashdot.org/login.pl?op=newuserform">Create Account</a>
2256
+ &nbsp;|&nbsp;<a href="//slashdot.org/login.pl?op=mailpasswdform" onclick="javascript:getModalPrefs('sendPasswdModal', 'Retrieve Password'); return false;">Retrieve Password</a>
2257
+ </b>
2258
+ </p>
2259
+ </div>
2260
+ </div><div class="block" id="srandblock_ostg">
2261
+ <div class="title" id="srandblock_ostg-title">
2262
+ <h4><a href="http://fossfor.us/recent_reviews">Fossfor.us</a></h4>
2263
+ </div>
2264
+
2265
+ <div class="content" id="srandblock_ostg-content">
2266
+ <ul><li><a href="http://fossfor.us/software/name/Tremulous?review=642" rel="alternate">Tremulous - <em>Great</em></a><br>I don't know why they said it was unbalanced, but depending on one's skill, the...</li><li><a href="http://fossfor.us/software/name/X-Moto?review=641" rel="alternate">X-Moto - <em>Just OK</em></a><br>Controls too touchy, doesn't act like other tilty bike games.</li><li><a href="http://fossfor.us/software/name/Blender?review=640" rel="alternate">Blender - <em>Great</em></a><br></li><li><a href="http://fossfor.us/software/name/OpenOffice?review=636" rel="alternate">OpenOffice - <em>Great</em></a><br>Though it has its flaws, it triumphs over star-office (how?) and Office 2007....</li><li><a href="http://fossfor.us/software/name/Inkscape?review=635" rel="alternate">Inkscape - <em>Great</em></a><br>Though it has its flaws, it triumphs over star-office (how?) and Office 2007....</li></ul>
2267
+
2268
+ </div>
2269
+ </div><div class="block" id="books">
2270
+ <div class="title" id="books-title">
2271
+ <h4><a href="//books.slashdot.org/">Book Reviews</a></h4>
2272
+ </div>
2273
+
2274
+ <div class="content" id="books-content">
2275
+ Recent reviews from Slashdot readers:
2276
+
2277
+ <ul>
2278
+
2279
+
2280
+ <li> <a href="http://www.amazon.com/dp/0195152751/ref=nosim/?tag=slashdot0c-20"><cite>Advanced Excel for Scientific Data Analysis</cite></a> Learn to turn Excel into something that rivals Mathematica using VBA, brains, and a heaping helping of fortitude.(<a href="http://books.slashdot.org/article.pl?sid=08/10/01/1329243">Jack Herrington's review.</a>)</li>
2281
+
2282
+ <li> <a
2283
+ href="http://www.amazon.com/dp/1597492671/ref=nosim/?tag=slashdot0c-20"><cite>Nagios 3 Enterprise Network Monitoring</cite></a> A great book for anyone using Nagios as more than a casual user.(<a href="http://books.slashdot.org/article.pl?sid=08/10/08/1328247">jgoguen's review.</a>)</li>
2284
+
2285
+
2286
+ <li> <a href="http://www.amazon.com/dp/0470395354/ref=nosim/?tag=slashdot0c-20"><cite>Schneier on Security</cite></a> Schneier argues that security is not something you can buy; it is something you must get.(<a href="http://books.slashdot.org/article.pl?sid=08/10/20/1344203">Ben Rothke's review.</a>)</li>
2287
+ </ul>
2288
+
2289
+ <p><a href="https://slashdot.org/submit.pl">Submitting a review</a> for
2290
+ consideration is easy; please first read <a
2291
+ href="//slashdot.org/book.review.guidelines.shtml">Slashdot's
2292
+ book review guidelines</a>. Updated: 2008114 by samzenpus</p>
2293
+
2294
+
2295
+ </div>
2296
+ </div><div class="block" id="index_qlinks">
2297
+ <div class="title" id="index_qlinks-title">
2298
+ <h4><a href="">Quick Links</a></h4>
2299
+ </div>
2300
+
2301
+ <div class="content" id="index_qlinks-content">
2302
+ <B>Cool Sites:</B>
2303
+ <br>&middot; <A href="http://www.xkcd.com">XKCD</A> (It's teh funz0rz)
2304
+ <br>&middot; <A href="http://www.animefu.com">AnimeFu</A> (Addicted to Anime?)
2305
+ <br>&middot; <A href="http://www.penny-arcade.com">Penny Arcade</A> (The First one is always Free)
2306
+ <br>&middot; <A href="http://everything2.com">Everything</A> (Blow your Mind)
2307
+ <br>&middot; <A href="http://themes.freshmeat.net">Themes.freshmeat.net</A> (Make X Perty)
2308
+ <br>&middot; <A href="http://slashdot.jp">Slashdot.jp</A> (So familiar...)
2309
+ <br>&middot; <A href="http://CmdrTaco.net">CmdrTaco.net</A> (I used to be in charge)
2310
+ <P><B>Support Slashdot:</B>
2311
+ <br>&middot; <A href="http://www.thinkgeek.com">ThinkGeek</A> (Clothe Yourself in Slashdot)
2312
+
2313
+ </div>
2314
+ </div><div id="slug-Crown" class="block nosort slug"><div class="content"></div></div><div id="slug-Top" class="block nosort slug"><div class="content"></div></div>
2315
+
2316
+
2317
+
2318
+
2319
+ </div>
2320
+
2321
+
2322
+ <script type="text/javascript">
2323
+ firehose_exists = 1;
2324
+ $(function(){
2325
+ $('#firehose-filter').
2326
+ focus(function(event){
2327
+ gFocusedText = this;
2328
+ }).
2329
+ blur(function(event){
2330
+ if ( gFocusedText === this ) {
2331
+ gFocusedText = null;
2332
+ }
2333
+ });
2334
+
2335
+ var $fhitems = firehose_init_tag_ui();
2336
+ firehose_init_idle($fhitems);
2337
+
2338
+ apply_updates_when( 'at-end', true);
2339
+ });
2340
+
2341
+
2342
+ firehose_settings.startdate = "";
2343
+ firehose_settings.mode = "mixed";
2344
+ firehose_settings.fhfilter = "";
2345
+ firehose_settings.orderdir = "DESC";
2346
+ firehose_settings.orderby = "createtime";
2347
+ firehose_settings.duration = -1;
2348
+ firehose_settings.color = "green";
2349
+ firehose_settings.view = "stories";
2350
+ firehose_settings.viewtitle = "Stories";
2351
+ firehose_settings.tab = "";
2352
+ firehose_settings.base_filter = "";
2353
+ firehose_settings.user_view_uid = "";
2354
+ firehose_settings.sectionname = "Main";
2355
+
2356
+ firehose_settings.issue = "";
2357
+ firehose_settings.section = 13;
2358
+ $('#searchquery').val(firehose_settings.fhfilter);
2359
+ view_change_hide_show(firehose_settings.view);
2360
+
2361
+
2362
+ firehose_sitename = "Slashdot";
2363
+ firehose_slogan = "News for nerds, stuff that matters";
2364
+ firehose_update_title_count();
2365
+ fh_idle_skin = 1;
2366
+
2367
+
2368
+
2369
+
2370
+ firehose_settings.index = 1;
2371
+
2372
+
2373
+
2374
+
2375
+ var firehose_action_time = 0;
2376
+ var firehose_user_class = 0;
2377
+
2378
+
2379
+ var fh_color = "green";
2380
+ fh_colors = [ "red", "orange", "yellow", "green", "blue", "indigo", "violet", "black" ];
2381
+ var fh_colors_hash = new Array(0);
2382
+ for (var i=0; i< fh_colors.length; i++) {
2383
+ fh_colors_hash[fh_colors[i]] = i;
2384
+ }
2385
+ var fh_view_mode = "mixed";
2386
+ firehose_settings.page = 0;
2387
+
2388
+ fh_is_admin = 0;
2389
+ var updateIntervalType = 2;
2390
+ var inactivity_timeout = 3600;
2391
+ setFirehoseAction();
2392
+ var update_time = "2009-07-01 01:58:36";
2393
+
2394
+ var maxtime = "2009-07-01 01:58:36";
2395
+ var insert_new_at = "top";
2396
+ firehose_play("init");
2397
+
2398
+
2399
+ fh_adTimerUrl = '/images/iframe/firehose.html';
2400
+
2401
+
2402
+ fh_ticksize = 15;
2403
+ sitename = 'idle.slashdot.org';
2404
+
2405
+
2406
+
2407
+ </script>
2408
+
2409
+
2410
+
2411
+
2412
+ <!-- body end --></div>
2413
+ <div id="ft" >
2414
+ <div id="topfoot">
2415
+
2416
+ <div class="search">
2417
+
2418
+ <form method="get" action="//slashdot.org/search.pl">
2419
+ <fieldset>
2420
+ <legend>Search</legend>
2421
+ <input type="text" name="query" value="" size="20">
2422
+ <input type="submit" value="Search" class="button">
2423
+ </fieldset>
2424
+ </form>
2425
+
2426
+ </div>
2427
+
2428
+ <div class="rightcontent">
2429
+
2430
+ <small>A girl's best friend is her mutter.
2431
+ -- Dorothy Parker</small>
2432
+
2433
+ </div>
2434
+ <div id="slug-Bottom" class="slug"></div>
2435
+ </div>
2436
+
2437
+ <div class="copyright">
2438
+ <p>
2439
+ All trademarks and copyrights on this page are owned by their respective owners. Comments are owned by the Poster. The Rest &copy; 1997-2009 <a href="http://sourceforge.com/">SourceForge</a>, Inc.
2440
+ </p>
2441
+ </div>
2442
+ <div id="login_cover" style="display:none" onclick="hide_login_box()"></div>
2443
+ <div id="login_box" style="display:none">
2444
+ <div class="generaltitle" >
2445
+ <div class="title">
2446
+ <h3 >
2447
+ Please Log In to Continue<a href="#" onclick="hide_login_box(); return false" class="close" title="Close this box">x</a>
2448
+
2449
+ </h3>
2450
+ </div>
2451
+ </div>
2452
+ <div id="login_box_content">
2453
+ <form action="//slashdot.org/login.pl" method="post">
2454
+ <fieldset>
2455
+ <legend>Log In</legend>
2456
+ <label>
2457
+ Nickname
2458
+ </label>
2459
+ <input type="text" name="unickname" size="20" value="">
2460
+ <label>
2461
+ Password
2462
+ </label>
2463
+ <input type="hidden" name="returnto" value="//slashdot.org/">
2464
+ <input type="hidden" name="op" value="userlogin">
2465
+ <input type="password" name="upasswd" size="20">
2466
+ <label class="checkbox">
2467
+ <input type="checkbox" name="login_temp" value="yes">
2468
+ Public Terminal
2469
+ </label>
2470
+ <input type="submit" name="userlogin" value="Log in" class="button">
2471
+ </fieldset>
2472
+ </form>
2473
+
2474
+
2475
+
2476
+ <hr>
2477
+
2478
+
2479
+ <form action="//slashdot.org/login.pl" method="post">
2480
+ <fieldset>
2481
+ <input type="hidden" name="slash_returnto" value="//slashdot.org/">
2482
+ <input type="hidden" name="op" value="claim_openid">
2483
+ <input type="hidden" name="openid_login" value="1">
2484
+ <label for="openid_url" class="openid_url">
2485
+ <input type="text" name="openid_url" value="http://" size="32" maxlength="255">
2486
+ </label>
2487
+ <input type="submit" value="Log in with OpenID" class="button">
2488
+ </fieldset>
2489
+ </form>
2490
+
2491
+
2492
+ <p>
2493
+ <b>
2494
+ <a href="//slashdot.org/login.pl?op=newuserform">Create Account</a>
2495
+
2496
+ </b>
2497
+ </p>
2498
+ </div></div>
2499
+ <script type="text/javascript">logged_in = 0</script>
2500
+ <div class="nav">
2501
+ <ul>
2502
+ <li>
2503
+ <a href="//slashdot.org/">home</a>
2504
+ </li>
2505
+ <li>
2506
+ <a href="//slashdot.org/submit.pl">submit story</a>
2507
+ </li>
2508
+ <li>
2509
+ <a href="//slashdot.org/help">help</a>
2510
+ </li>
2511
+ <li>
2512
+ <a href="http://web.sourceforge.com/advertising">advertise</a>
2513
+ </li>
2514
+ <li>
2515
+ <a href="http://web.sourceforge.com/terms.php">terms of service</a>
2516
+ </li>
2517
+ <li>
2518
+ <a href="http://web.sourceforge.com/privacy.php">privacy</a>
2519
+ </li>
2520
+ <li>
2521
+ <a href="http://rss.slashdot.org/Slashdot/slashdot">rss</a>
2522
+ </li>
2523
+ </ul>
2524
+ </div>
2525
+ </div>
2526
+ </div>
2527
+
2528
+ <a href="#topothepage" class="hidden">Jump to top of page</a>
2529
+ <div id="modal_cover" style="display:none"></div>
2530
+ <div id="modal_box" style="display:none">
2531
+ <div class="generaltitle" >
2532
+ <div class="title"><h3><span id="preference_title"></span> <a href="#" onclick="hide_modal_box(); return false">Close</a></h3></div>
2533
+ </div>
2534
+ <div id="modal_box_content"></div>
2535
+ </div>
2536
+
2537
+
2538
+ <script type="text/javascript">
2539
+ pageTracker._trackPageview();
2540
+ (function() {
2541
+ // coremetrics
2542
+ var basedomain = 'slashdot.org';
2543
+ var site = basedomain.replace(/\..*/gi,'');
2544
+ var subsite = location.hostname.replace(/\..*/gi,'');
2545
+ var section = subsite;
2546
+ var t = $('title').text();
2547
+ var title = ( t.indexOf('|') >= 0 ? t.replace(/.* \| /gi,'') : 'SECTION PAGE: ' + section );
2548
+ if( window.location.hostname === 'slashdot.org' ) {
2549
+ cmSetProduction();
2550
+ }
2551
+ cmCreatePageviewTag && cmCreatePageviewTag('ARTICLE DETAIL: ' + section, null, null, null, title + '-_-' + section ) && (cmCreatePageviewTag = null);
2552
+ })();
2553
+ </script>
2554
+ <script id="after-content" type="text/javascript">
2555
+ (function( $, fn, console ){
2556
+ $ && fn && $(function(){ fn($, console); });
2557
+ })(window.jQuery, window.pageload_done, window.console);
2558
+ </script>
2559
+ </body>
2560
+ </html>