loofah 0.2.0

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.

Binary file
@@ -0,0 +1,18 @@
1
+ = Changelog
2
+
3
+ == 0.2.0
4
+
5
+ * Swank new API.
6
+ * ActiveRecord extension.
7
+ * Uses Nokogiri's Document and DocumentFragment for parsing.
8
+ * Updated html5lib codes and tests to revision 1384:b9d3153d7be7.
9
+ * Deprecated the Dryopteris sanitization methods. Will be removed in 0.3.0.
10
+ * Documentation! Hey!
11
+
12
+ == 0.1.2 (2009-04-30)
13
+
14
+ * Added whitewashing -- removal of all attributes and namespaced nodes. You know, for microsofty HTML.
15
+
16
+ == 0.1.0 (2009-02-10)
17
+
18
+ * Birthday!
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2009 Mike Dalessio, Bryan Helmkamp
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,28 @@
1
+ CHANGELOG.rdoc
2
+ MIT-LICENSE.txt
3
+ Manifest.txt
4
+ README.rdoc
5
+ Rakefile
6
+ TODO.rdoc
7
+ benchmark/benchmark.rb
8
+ benchmark/fragment.html
9
+ benchmark/www.slashdot.com.html
10
+ init.rb
11
+ lib/loofah.rb
12
+ lib/loofah/active_record.rb
13
+ lib/loofah/deprecated.rb
14
+ lib/loofah/html/document.rb
15
+ lib/loofah/html/document_fragment.rb
16
+ lib/loofah/html5/scrub.rb
17
+ lib/loofah/html5/whitelist.rb
18
+ lib/loofah/scrubber.rb
19
+ test/helper.rb
20
+ test/html5/test_deprecated_sanitizer.rb
21
+ test/html5/test_sanitizer.rb
22
+ test/html5/testdata/tests1.dat
23
+ test/test_active_record.rb
24
+ test/test_api.rb
25
+ test/test_deprecated_basic.rb
26
+ test/test_microsofty.rb
27
+ test/test_scrubber.rb
28
+ test/test_strip_tags.rb
@@ -0,0 +1,110 @@
1
+ = Loofah
2
+
3
+ * http://rubyforge.org/projects/loofah
4
+ * http://github.com/flavorjones/loofah
5
+
6
+ == DESCRIPTION
7
+
8
+ Loofah is an HTML sanitizer. It will *always* fix broken markup, but
9
+ can also sanitize unsafe tags in a few different ways, and transform
10
+ the markup for storage or display.
11
+
12
+ It's built on top of Nokogiri and libxml2, so it's fast. And it uses
13
+ html5lib's whitelist, so it most likely won't make your codes less
14
+ secure.
15
+
16
+ (These statements have not been evaluated by Internet Experts.)
17
+
18
+ This library was formerly known as Dryopteris.
19
+
20
+ == FEATURES
21
+
22
+ * Strip unsafe tags, leaving behind only the inner text.
23
+ * Prune unsafe tags and their subtrees, removing all traces that they ever existed.
24
+ * Escape unsafe tags and their subtrees, leaving behind lots of <tt>&lt;</tt> and <tt>&gt;</tt> entities.
25
+ * Whitewash the markup, removing all attributes and namespaced nodes.
26
+ * Format the markup as plain text.
27
+ * ActiveRecord extension.
28
+ * 99 44/100 % Tenderlove-free!
29
+
30
+ == SYNOPSIS
31
+
32
+ For a full explanation, see the documentation for Loofah.
33
+
34
+ require 'loofah'
35
+
36
+ unsafe_html = "ohai! <div>a div is safe</div> <script>but script is not</script>"
37
+
38
+ Loofah.scrub_fragment(unsafe_html, :prune).to_s # => "ohai! <div>div is safe</div> "
39
+
40
+ OR
41
+
42
+ doc = Loofah.fragment(unsafe_html) # returns a Nokogiri document ...
43
+ doc.scrub!(:prune) # ... with one extra method
44
+ doc.to_s # => "ohai! <div>div is safe</div> "
45
+ doc.text # => "ohai! div is safe "
46
+
47
+ === ACTIVERECORD EXTENSION
48
+
49
+ # config/environment.rb
50
+ require 'loofah/active_record'
51
+
52
+ # db/schema.rb
53
+ create_table "posts" do |t|
54
+ t.string "title"
55
+ t.string "body"
56
+ end
57
+
58
+ # app/model/post.rb
59
+ class Post < ActiveRecord::Base
60
+ html_fragment :body, :scrub => :prune # scrubs 'body' in a before_save
61
+ end
62
+
63
+ == REQUIREMENTS
64
+
65
+ * ruby 1.8 or 1.9
66
+ * Nokogiri >= 1.3.3
67
+
68
+ == INSTALLATION
69
+
70
+ Unsurprisingly:
71
+
72
+ * gem install loofah
73
+
74
+ == SUPPORT
75
+
76
+ The bug tracker is available here:
77
+
78
+ * http://github.com/flavorjones/loofah/issues
79
+
80
+ You can also try the Nokogiri mailing list:
81
+
82
+ * http://groups.google.com/group/nokogiri-talk
83
+
84
+ And the IRC channel is #nokogiri on freenode.
85
+
86
+ == RELATED LINKS
87
+
88
+ * Nokogiri: http://nokogiri.org/
89
+ * libxml2: http://xmlsoft.org/
90
+ * html5lib: http://code.google.com/p/html5lib/
91
+
92
+ == AUTHORS
93
+
94
+ * {Mike Dalessio}[mailto:mike.dalessio@gmail.com]
95
+ * {Bryan Helmkamp}[mailto:bryan@brynary.com]
96
+
97
+ Featuring code contributed by:
98
+
99
+ * Aaron Patterson
100
+ * John Barnette
101
+ * Josh Owens
102
+ * Paul Dix
103
+
104
+ == LICENSE
105
+
106
+ The MIT License
107
+
108
+ Copyright (c) 2009 Mike Dalessio, Bryan Helmkamp
109
+
110
+ See MIT-LICENSE.txt in this directory.
@@ -0,0 +1,16 @@
1
+ require 'rubygems'
2
+ gem 'hoe', '>= 2.3.0'
3
+ require 'hoe'
4
+
5
+ Hoe.plugin :git
6
+
7
+ Hoe.spec "loofah" do
8
+ developer "Mike Dalessio", "mike.dalessio@gmail.com"
9
+ developer "Bryan Helmkamp", "bryan@brynary.com"
10
+
11
+ self.extra_rdoc_files = FileList["*.rdoc"]
12
+ self.history_file = "CHANGELOG.rdoc"
13
+ self.readme_file = "README.rdoc"
14
+
15
+ extra_deps << ["nokogiri", ">= 1.3.3"]
16
+ end
@@ -0,0 +1,9 @@
1
+ = TODO
2
+
3
+ * Allow developers to implement their own sanitizations.
4
+ * Implement a proper visitor pattern.
5
+ * Make internal loofah methods available.
6
+
7
+ * Allow a <tt>text</tt> option to insert nice newlines after headers and block elements.
8
+
9
+ * <tt>to_markdown<tt>
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'open-uri'
4
+ require 'hpricot'
5
+ require File.expand_path(File.dirname(__FILE__) + "/../lib/loofah")
6
+ require 'benchmark'
7
+ require "action_view"
8
+ require "action_controller/vendor/html-scanner"
9
+ require "sanitize"
10
+
11
+ class RailsSanitize
12
+ include ActionView::Helpers::SanitizeHelper
13
+ extend ActionView::Helpers::SanitizeHelper::ClassMethods
14
+ end
15
+
16
+ class HTML5libSanitize
17
+ require 'html5/html5parser'
18
+ require 'html5/liberalxmlparser'
19
+ require 'html5/treewalkers'
20
+ require 'html5/treebuilders'
21
+ require 'html5/serializer'
22
+ require 'html5/sanitizer'
23
+
24
+ include HTML5
25
+
26
+ def sanitize(html)
27
+ HTMLParser.parse_fragment(html, {
28
+ :tokenizer => HTMLSanitizer,
29
+ :encoding => 'utf-8',
30
+ :tree => TreeBuilders::REXML::TreeBuilder
31
+ }).to_s
32
+ end
33
+ end
34
+
35
+ BIG_FILE = File.read(File.join(File.dirname(__FILE__), "www.slashdot.com.html"))
36
+ FRAGMENT = File.read(File.join(File.dirname(__FILE__), "fragment.html"))
37
+
38
+ def bench(content, ntimes)
39
+ Benchmark.bm(15) do |x|
40
+ x.report('Loofah') do
41
+ ntimes.times do
42
+ Loofah.sanitize(content)
43
+ end
44
+ end
45
+
46
+ x.report('ActionView') do
47
+ sanitizer = RailsSanitize.new
48
+
49
+ ntimes.times do
50
+ sanitizer.sanitize(content)
51
+ end
52
+ end
53
+
54
+ x.report('Sanitize') do
55
+ ntimes.times do
56
+ Sanitize.clean(content, Sanitize::Config::RELAXED)
57
+ end
58
+ end
59
+
60
+ x.report('HTML5lib') do
61
+ sanitizer = HTML5libSanitize.new
62
+
63
+ ntimes.times do
64
+ sanitizer.sanitize(content)
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ #bench BIG_FILE, 100
71
+ bench FRAGMENT, 1000
72
+
@@ -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,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>