home *** CD-ROM | disk | FTP | other *** search
/ db.tidbits.com / db.tidbits.com.tar / db.tidbits.com / getbits.acgi?tbart=07489.orig < prev    next >
Text File  |  2010-09-23  |  59KB  |  798 lines

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2.         "http://www.w3.org/TR/html4/loose.dtd">
  3.  
  4. <html lang="en">
  5. <head>
  6.     <meta http-equiv="content-type" content="text/html;charset=utf-8">
  7.     <meta http-equiv="Content-Language" content="en">
  8.     <title>TidBITS : Apple Computer, Going Forward into 2004</title>
  9.  
  10.     <meta name="title" content="TidBITS : Apple Computer, Going Forward into 2004">
  11.     <meta name="description" content="TidBITS is a free email and Web publication covering the Macintosh Internet community.">
  12.     <link rel="image_src" href="/images/tblogo9.gif" />
  13.     <meta name="keywords" content="Apple, Mac, Macintosh, Mac OS, Mac OS X, newsletter, Internet, analysis, reviews, technology, news, TidBITS, TidBITS Talk, Engst">
  14.     <link rel="Help" href="http://www.tidbits.com/about/about-tidbits.html" title="About TidBITS">
  15.     <link rel="Search" href="http://www.tidbits.com/search/" title="Search All TidBITS Content">
  16.     <link rel="Author" href="http://www.tidbits.com/about/contact-info.html" title="Contact Information">
  17.     <link rel="Contents" href="tb-issues/" title="TidBITS Issue Archive">
  18.     <link rel="alternate" type="application/rss+xml" href="http://db.tidbits.com/feeds/tidbits.rss" title="TidBITS Full Text Feed">
  19.     <link rel="alternate" type="application/rss+xml" href="http://db.tidbits.com/commentfeeds/firehose.xml" title="TidBITS Full Comments Feed">
  20.  
  21.     <link rel="stylesheet" href="/tidbits_2010_001.css" type="text/css">
  22.     <LINK rel="stylesheet" type="text/css" media="print" href="/tb-new-print.css">
  23.     <script src="/javascript/tb.js" type="text/javascript"></script>
  24.     <meta name="viewport" content="width:940">
  25.     <script type='text/javascript' src='http://db.tidbits.com/ads/delivery/spcjs.php?id=2'></script>
  26.     <script src="/javascript/prototype.js" type="text/javascript"></script>
  27. <script src="/javascript/scriptaculous.js" type="text/javascript"></script>
  28. <script src="/js-global/FancyZoom.js" type="text/javascript"></script>
  29. <script src="/js-global/FancyZoomHTML.js" type="text/javascript"></script>
  30. <script type="text/javascript"  src="http://api.recaptcha.net/js/recaptcha_ajax.js"></script>
  31.  
  32. </head>
  33. <body onLoad="setupZoom()">
  34. <!-- popup query -->
  35. <div id="big_ole_background" style="display:none"> </div>
  36. <div id="tipbits_enclosure_preview" style="display:none">
  37. <div class="tearoffbox_wide_container">
  38. <div class="tearoffbox_wide_tips">
  39.  
  40. <div class="tip_display">
  41. <div class="preview">
  42. <h6><span id="p_tips_title"></span></h6>
  43. <p id="p_tips_text"></p>
  44. <p>Visit <a href="javascript:void(0)" id="p_url"><span id="p_label"></span></a></p>
  45. <p class="credit">Submitted by <span id="p_reader"></span></p>
  46. <p><input type="submit" value="Back" name="preview_tip" onClick="preview_box('ts','tipbits_enclosure_preview'); return false;"></p>
  47. </div>
  48. </div>
  49. <div class="tearoffbox_wide_bottom_tips">
  50. </div>
  51.  
  52. </div><!-- end tearoffbox_wide_tips -->
  53. </div><!-- end tearoffbox_wide_container for tips-->
  54. <!-- end tearoff box wide -->
  55. </div><!-- end enclosure -->
  56.  
  57. <div class="popup_box_with_captcha" id="ts" style="display:none">
  58.     <div id="popup_box_thanks" style="display:none" onClick="close_popup_thanks('popup_box_thanks', 'ts')"><br>Thanks for submitting your tip! All submissions are moderated by an editor before appearing online. We've reset the form so you can enter another tip. Or you can close the tip submission box.    <div class="x_close" id="thanks_upper_right"><a href="javascript:void(0)" onmousedown="close_popup_thanks('popup_box_thanks', 'ts'); return true;">Close</a></div></div>
  59.     <div class="tip_box_format">
  60.     <div id="ts_innards" onClick="close_popup_thanks('popup_box_thanks', 'ts')">
  61.         <div class="tip_box_head">TipBITS Submission</div>
  62.         <div class="tip_box_form">        
  63.                 
  64.             <div class="tbf_row" id="ts_message_box" style="display:none">
  65.                 <div class="tbf_wide"><div class="tbf_alert" id="ts_top_message"></div></div>
  66.             </div>
  67.             <div class="spacer"></div>
  68.  
  69.             <form action="foobar.cgi" method="get" name="submit_tip">
  70.  
  71.             <div class="tbf_row"><div class="tbf_wide_extra_top not_bold">Please submit only technical tips that will help other TidBITS readers better use their Macs, iPhones, and related software and hardware. All product announcements should be sent to <a href="mailto:releases@tidbits.com">releases@tidbits.com</a>.</div></div>
  72.             <div class="spacer"></div>
  73.             <div class="tbf_row">
  74.                 <div class="tbf_left">Tip title<span class="required_field">*</span></div><div class="tbf_right"><input type="text" value="" id="tip_title_id" name="tip_title" tabindex="1"></div>
  75.             </div>
  76.             <div class="spacer"></div>
  77.             <div class="tbf_row">
  78.                 <div class="tbf_left">Your tip<span class="required_field">*</span></div><div class="tbf_right"><textarea name="tip_text" rows="3" cols="40" tabindex="2"></textarea></div>
  79.             </div>
  80.             <div class="spacer"></div>
  81.             <div class="tbf_row">
  82.                 <div class="tbf_left">URL</div><div class="tbf_right"><input type="text" value="" name="tip_link_url" tabindex="3"><span class="tip_description"><br>Enter the URL to a Web page that supports your tip.</span></div>
  83.             </div>
  84.             <div class="spacer"></div>
  85.             <div class="tbf_row">
  86.                 <div class="tbf_left">Linked text</div><div class="tbf_right"><input type="text" value="" name="tip_link_label" tabindex="4"><span class="tip_description"><br>Enter the name of the page linked above.</span></div>
  87.             </div>
  88.             <div class="spacer"></div>
  89.             <div class="tbf_row">
  90.                 <div class="tbf_left">Your name<span class="required_field">*</span></div><div class="tbf_right"><input type="text" value="" name="tip_reader_name" tabindex="5"></div>
  91.             </div>
  92.             <div class="spacer"></div>
  93.             <div class="tbf_row">
  94.                 <div class="tbf_left">Your email<span class="required_field">*</span></div><div class="tbf_right"><input type="text" value="" name="tip_reader_email" tabindex="6"></div>
  95.             </div>
  96.             <div class="spacer"></div>
  97.             <div class="spacer"></div>
  98.                 <div class="tbf_wide"><span class="fine_print"><span class="required_field">* indicates required fields</span></span></div>
  99.             <div class="spacer"></div>
  100.             <div class="tbf_row">
  101.                 <div class="tbf_wide_extra_top"><span class="fine_print">To help us avoid automated posts and spam, please enter the words below.</span></div>
  102.             </div>
  103.             <div class="spacer"></div>
  104.             <div class="tbf_row">
  105.                 <div class="tbf_wide"><div id="ts_recaptcha"></div></div>
  106.             </div>
  107.             <div class="spacer"></div>
  108.             <div class="tbf_row">
  109.                 <div class="tbf_wide"><input type="submit" value="Preview Your Tip" name="preview_tip" onClick="fill_preview('tipbits_enclosure_preview', 'ts', this.form); return false;" tabindex="7"> <input type="submit" value="Send Us Your Tip!" name="submit_this_tip" onClick="handle_tip_submission('ts', '', this.form, 'tip'); return false;" tabindex="8"></div>
  110.             </div>
  111.             <div class="spacer"></div>
  112.             <div class="tbf_row">
  113.                 <div class="tbf_wide"><span class="fine_print">When you submit a tip, you give us permission to use it. Read <a href="javascript:void(0)" onClick="generic_show_hide('tip_terms')">our terms</a> for more details. All submissions are reviewed before publication.</span></div>
  114.             </div>
  115.             
  116.             <div class="tbf_row" id="tip_terms" style="display: none">
  117.                 <div class="tbf_wide"><span class="fine_print">Our terms: By submitting a tip, you agree to assign TidBITS Publishing Inc., a non-exclusive, worldwide, perpetual license to reproduce, publish, and distribute your tip in connection with the TidBITS Web site and associated products in any media. You agree that you created the content you submitted, and that you have the right to assign us this license. You give us permission to use your name, but your email address won't be publicly displayed or shared. We review all submissions before publication, and reserve the right to select which submissions we feel are appropriate for our readers and to edit those we publish.</span></div>
  118.             </div>
  119.             <div class="spacer"></div>
  120.             </form>
  121.         </div><!-- end tip_box_form -->
  122.     </div><!-- end tip box innards -->
  123.     </div><!-- end tip box format -->
  124.     
  125.     <div class="x_close" id="ts_upper_right"><a href="javascript:void(0)" onmousedown="HidePopupContent('ts', 'ts', ''); return true;">Close</a></div>
  126.     
  127. </div><!-- end tip_submit box-->
  128.  
  129. <div class="popup_box_with_captcha" id="article_reference" style="display:none"><div class="article_ref_format"><textarea style="width:350px; height:100px;" name="article_ref" id="article_ref_box"></textarea></div>    <div class="x_close" id="article_reference_upper_right"><a href="javascript:void(0)" onmousedown="HidePopupContent('article_reference', 'article_reference', ''); return true;">Close</a></div>
  130. </div>
  131.  
  132. <div class="popup_box_with_captcha" id="comm" style="display:none">
  133.     <div class="tip_box_format">
  134.     <div id="comment_thanks" style="display:none" onClick="close_popup_thanks('comment_thanks', 'comm')"><br>Thanks for submitting a comment! Please check your email for a link that, when clicked, will verify that you're a real person and cause your comment to appear immediately. <div class="x_close" id="comment_upper_right"><a href="javascript:void(0)" onmousedown="close_popup_thanks('comment_thanks', 'comm'); return true;">Close</a></div></div>
  135.     <div id="comm_innards" onClick="close_popup_thanks('comment_thanks', 'comm')">
  136.         <div class="tip_box_head" id="comm_headline">Post a Comment</div>
  137.         <div class="tip_box_form">        
  138.                 
  139.             <div class="tbf_row" id="comm_message_box" style="display:none">
  140.                 <div class="tbf_wide"><div class="tbf_alert" id="comm_top_message"></div></div>
  141.             </div>
  142.             <div class="spacer"></div>
  143.  
  144.             <form action="foobar.cgi" method="get" name="post_comment" id="post_comment">
  145.             <input type="hidden" name="comment_nest" value=''>
  146.             <input type="hidden" name="comment_id" value=''>
  147.             <input type="hidden" name="article_id" value='6100'>
  148.             <input type="hidden" name="edit" value=''>
  149.             <div class="tbf_row">
  150.                 <div class="tbf_left">In reply to</div>
  151.                 <div class="tbf_right">
  152.                     <div id="cb_quoted_row">
  153.                         <div class='cb_open_quote'>“</div>
  154.                         <div id="cb_quoted"></div>
  155.                         <div class='cb_close_quote'>”</div>
  156.                     </div>
  157.                     <div class="spacer"></div>
  158.                 </div>
  159.             </div>
  160.             <div class="spacer"></div>
  161.  
  162.             <div class="tbf_row">
  163.                 <div class="tbf_left" style="padding-top:0">Your comment</div>
  164.                 <div class="tbf_right"><textarea tabindex="1" name="cb_item_add" id="cb_item_add" rows="4" cols="50" onKeyDown="count_insert('cb_item_add','cb_char_count')"></textarea><br><div class="cb_char_count" id="cb_add_count">Remaining characters: <span id="cb_char_count">0</span></div></div>
  165.             </div>
  166.             <div class="spacer"></div>            
  167.  
  168.             <div class="tbf_row">
  169.                 <div class="tbf_left">Your name</div><div class="tbf_right" style="margin-top:8px"><input tabindex="2" type="text" value="" name="cb_add_name" id="cb_add_name" style="margin-top: -4px"></div>
  170.             </div>
  171.             <div class="spacer"></div>
  172.             
  173.             <div class="tbf_row">
  174.                 <div class="tbf_left">Your email</div><div class="tbf_right"><input tabindex="3" type="text" name="cb_add_email" id="cb_add_email"></div>
  175.             </div>
  176.             <div class="spacer"></div>
  177.             
  178.             <div class="tbf_row">
  179.                 <div class="tbf_left"> </div><div class="tbf_right"><input id="comm_post_comment" tabindex="4" type="submit" value="Post Comment" name="submit_this_comment" style="width:100px; float:right" onClick="cb_post_submit(); return false;"></div>
  180.             </div>
  181.             <div class="spacer"></div>
  182.             
  183.             <div class="tbf_row" id="comment_terms">
  184.                 <div class="tbf_wide"><span class="fine_print">Our terms: We reserve the right to edit or delete any comment, so please post thoughtfully. We use your email address <i>only</i> to send you a one-time verification message confirming that you posted this comment. We also store your address to allow you to verify using other Web browsers in the future. For more info, see our <a href="http://db.tidbits.com/privacy.html">privacy policy</a>.</span></div>
  185.             </div>
  186.             <div class="spacer"></div>
  187.  
  188.             </form>
  189.         </div><!-- end comm_form -->
  190.     </div><!-- end comm box innards -->
  191.     </div><!-- end comm box format -->
  192.     
  193.     <div class="x_close" id="comm_upper_right"><a href="javascript:void(0)" onmousedown="HidePopupContent('comm', 'comm', ''); return true;">Close</a></div>
  194.     
  195. </div><!-- end comm_submit box-->
  196.  
  197.  
  198. <!-- start mainbody -->
  199. <div id="mainbody">
  200.  
  201. <!-- start header -->
  202. <div id="header">
  203.  
  204.  
  205.  
  206.     <div id="tblogo">
  207.     <a href="/"><img src="/images/tblogo20_01.gif" alt="TidBITS: Apple News for the Rest of Us" width="177" height="84" border="0"></a>
  208.  
  209.     </div><!-- end tblogo -->
  210.  
  211.  
  212. <!-- leaderboard ad -->
  213. <div id="top_banner">
  214. <script type='text/javascript'><!--// <![CDATA[
  215.     OA_show(3);
  216. // ]]> --></script><noscript><a target='_blank' href='http://db.tidbits.com/ads/delivery/ck.php?n=TBe5f7021'><img border='0' alt='' src='http://db.tidbits.com/ads/delivery/avw.php?zoneid=3&n=TBe5f7021'></a></noscript>
  217. </div><!-- end top_banner style -->
  218. <!-- end leaderboard ad -->
  219.  
  220.  
  221. </div><!-- end header  -->
  222.  
  223.  
  224. <!-- start content_container -->
  225. <div id="content_container">
  226.  
  227.  
  228. <!-- begin leftcolumn -->
  229. <div id="leftcolumn">
  230.  
  231. <!-- begin leftnav /left navigation -->
  232. <div>
  233.     <ul class="leftnav">
  234.         <!-- start search -->
  235.         <li class="topcorner">
  236.             <form action="http://db.tidbits.com" method="POST" name="search_form"><input type="hidden" name="advanced_search" value=''><input type="text" name="search_text" size="8" maxlength="70" value="Search" onFocus="this.value=''" onBlur="if (this.value == '') { this.value = 'Search'; }"> <span style="margin: 0 5px 0 5px; vertical-align: -2px"><span style="vertical-align: -2px"><input type="image" name="submit_search" src="/images/go_search_button.gif"></span>  <img src="/images/adv_search_button.gif" title="Click for Advanced Search" onClick="var f = document.search_form; f.search_text.value =''; f.advanced_search.value = '1'; f.submit();"></span></form>
  237.         </li>
  238.     </ul>
  239. </div>
  240. <!-- end search -->
  241.  
  242. <!-- Get TidBITS box (temp) -->
  243. <div>
  244.     <ul class="leftnav">
  245.         <li class="gettb"><strong>Get TidBITS via...</strong></li>
  246.     
  247.         <li><a href="http://www.tidbits.com/list" title="Subscribe via email" class="gettb">Email <img src="/images/gettb_button_email.gif" width="12" height="12" border="0" class="nav_img" alt="Email subscription options"></a></li>
  248.         <li><a href="/feeds/tidbits.rss" title="Subscribe via RSS" class="gettb">RSS <img src="/images/feed-icon-12x12.gif" width="12" height="12" border="0" class="nav_img" alt="Subscribe via RSS"></a></li>
  249.         <li><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=276986548" title="Subscribe to the podcast" class="gettb">Podcast <img src="/images/feed-icon-12x12_podcast.gif" width="12" height="12" border="0" class="nav_img" alt="Subscribe to the postcast"></a></li>
  250.         <li><a href="http://www.twitter.com/TidBITS" title="Get Article Updates via Twitter" class="gettb">Twitter <img src="/images/feed_icon_12x12_twitter.png" width="12" height="12" border="0" class="nav_img" alt="Get Article Updates via Twitter"></a></li>
  251.         <li><a href="http://www.facebook.com/pages/TidBITS/195314925519" title="Go to the TidBITS Page at Facebook" class="gettb">Facebook <img src="/images/feed_icon_12x12_facebook.gif" width="12" height="12" border="0" class="nav_img" alt="Go to the TidBITS Page at Facebook"></a></li>
  252.     </ul>
  253. </div>
  254. <!-- end Get TidBITS box -->
  255.     
  256.     <ul class="leftnav">
  257.         <li><a href="/" class="tabhead">TidBITS Home</a></li>
  258.  
  259.         <li><a href="javascript:void(0)" title="Sections" class="tabhead" onClick="return showhide('articleslist')">Sections <span id="articleslist_triangle"><img src="/images/nav_triangle_open.gif" width="9" height="9" border="0" class="navtriangle" id="articleslist_tri_image" alt="Click to show or hide the contents of this section."></span></a></li>
  260.     
  261.     
  262.     </ul>
  263.  
  264. <div id="articleslist" style="display: none"><ul class="leftnav"><li><a href="/section/business" >Business Apps</a></li>
  265. <li><a href="/section/entertainment" >Entertainment</a></li>
  266. <li><a href="/section/links" >External Links</a></li>
  267. <li><a href="/section/home" >Home Macs</a></li>
  268. <li><a href="/section/inside" >Inside TidBITS</a></li>
  269. <li><a href="/section/iphone-ipad-ipod" >iPhone iPad iPod</a></li>
  270. <li><a href="/section/fun" >Just for Fun</a></li>
  271. <li><a href="/section/macs" >Macs & Mac OS X</a></li>
  272. <li><a href="/section/creative" >Media Creation</a></li>
  273. <li><a href="/section/net" >Networking</a></li>
  274. <li><a href="/section/opinion" >Opinion</a></li>
  275. <li><a href="/section/support" >Problem Solving</a></li>
  276. <li><a href="/section/security" >Safe Computing</a></li>
  277. <li><a href="/section/tech" >Tech News</a></li>
  278. <li><a href="/section/watchlist" >Watchlist</a></li>
  279. </ul></div>
  280.  
  281. <div>
  282. <ul class="leftnav">
  283.     <li><a href="javascript:void(0)" onClick="return showhide('stafflist')" title="Staff" class="tabhead">Staff <span id="stafflist_triangle"><img src="/images/nav_triangle_closed.gif" width="9" height="9" border="0" class="navtriangle" id="stafflist_tri_image" alt="Click to show or hide the contents of this section."></span></a></li>
  284. </ul>
  285. </div>
  286.  
  287. <div id="stafflist" style="display:block"><ul class="leftnav"><li><a href="/author/Adam+C+Engst" title="Adam Engst, Publisher">Adam Engst</a></li>
  288.     <li><a href="/author/Tonya+Engst" title="Tonya Engst, Editor in Chief">Tonya Engst</a></li>
  289.     <li><a href="/author/Jeff+Carlson" title="Jeff Carlson, Managing Editor">Jeff Carlson</a></li>
  290.     <li><a href="/author/Joe+Kissell" title="Joe Kissell, Senior Editor">Joe Kissell</a></li>
  291.     <li><a href="/author/Glenn+Fleishman" title="Glenn Fleishman, Contributing Editor">Glenn Fleishman</a></li>
  292.     <li><a href="/author/Mark+Anbinder" title="Mark Anbinder, Contributing Editor">Mark H. Anbinder</a></li>
  293.     <li><a href="/author/Matt+Neuburg" title="Matt Neuburg, Contributing Editor">Matt Neuburg</a></li>
  294.     <li><a href="/author/Rich+Mogull" title="Rich Mogull, Contributing Editor">Rich Mogull</a></li>
  295.     <li><a href="/author/Lex+Friedman" title="Lex Friedman, Staff Writer">Lex Friedman</a></li>
  296.     </ul>
  297.     </div>
  298.  
  299. <div>
  300. <ul class="leftnav">
  301.  
  302.     <li><a href="javascript:void(0)" title="Issues" class="tabhead" onClick="return showhide('issuelist')">Weekly Issues <span id="issuelist_triangle"><img src="/images/nav_triangle_closed.gif" width="9" height="9" border="0" class="navtriangle" id="issuelist_tri_image" alt="Click to show or hide the contents of this section."></span></a></li>
  303. </ul>
  304. </div>
  305.  
  306. <div id="issuelist" style="display:none"><ul class="leftnav"><li><div class="special"><form method="post" action="noaction.cgi" onsubmit="return false" id="issue_search_form" name="issue_search_form">Issue # <input type="text" onkeydown="if (event.keyCode == 13) { redirect_issue(this.form); }" id="issue_searchvalue" name="issue_number" style="width:35px; height: 10px"> <input onclick="redirect_issue(this.form)" type="image" name="submit_search" src="/images/go_search_button_blk.gif"></form></div></li><li><A HREF="/issue/715" >#715, 02 Feb 04</A></li>
  307. <li><A HREF="/issue/714" >#714, 26 Jan 04</A></li>
  308. <li><A HREF="/issue/713" >#713, 19 Jan 04</A></li>
  309. <li><A HREF="/issue/712" >#712, 12 Jan 04</A></li>
  310. <li><A HREF="/issue/711" >#711, 05 Jan 04</A></li>
  311. <li><A HREF="/issue/710" >#710, 15 Dec 03</A></li>
  312. <li><A HREF="/issue/709" >#709, 11 Dec 03</A></li>
  313. <li><A HREF="/issue/708" >#708, 08 Dec 03</A></li>
  314. <li><A HREF="/issue/707" >#707, 24 Nov 03</A></li>
  315.  
  316.  
  317. <li><a href="/backissues">Back Issues</a></li></ul></div>
  318.  
  319.  
  320. <div>
  321. <ul class="leftnav">
  322.  
  323.     <li><a href="/tidbitstalk" title="TidBITS Talk" class="tabhead">TidBITS Talk</a></li>
  324. </ul>
  325. </div>
  326.  
  327.  
  328.  
  329. <div>    
  330. <ul class="leftnav">
  331.     <li><a href="javascript:void(0)" onClick="return showhide('abouttidbits')" title="About TidBITS" class="tabhead">About TidBITS <span id="abouttidbits_triangle"><img src="/images/nav_triangle_closed.gif" width="9" height="9" border="0" class="navtriangle" id="abouttidbits_tri_image" alt="Click to show or hide the contents of this section."></span></a></li>
  332. </ul>
  333. </div>
  334.  
  335. <div id="abouttidbits" style="display:none">
  336. <ul class="leftnav"><li><a href="/about.html" title="About TidBITS">About Us</a></li><li><a href="/account.html" title="Account Help">Account Help</a></li><li><a href="/advertising.html" title="Advertise with TidBITS!">Advertise</a></li><li><a href="/contact.html" title="Contact Info">Contact</a></li><li><a href="/copyright.html" title="Copyright Terms">Copyright</a></li>
  337. </ul>
  338. </div>
  339.  
  340. <div>
  341. <ul class="leftnav">
  342. <li class="bottom"> </li>
  343. </ul>
  344. </div>
  345. <!-- end leftnav/left navigation -->
  346.  
  347. <!-- making sure nav elements hide/show before page loads --><script type="text/javascript"><!--
  348.     showhide('articleslist','show'); 
  349. // --></script>
  350.  
  351. <!-- begin sponsor_sidebox -->
  352.  
  353. <div class="sponsor_sidebox">
  354.  
  355. <ul>
  356.  
  357. <li><a href="http://crashplan.com/ref/tidbits.html">CrashPlan</a></li>
  358.  
  359. <li><a href="http://markspace.com/bits?source=tidbits">Mark/Space</a></li>
  360.  
  361. <li><a href="http://www.smithmicro.com/tidbits">Smith Micro</a></li>
  362.  
  363. <li><a href="http://www.tidbits.com/about/support/contributors.html">Readers Like You!</a></li>
  364.  
  365. <li><a href="http://www.econtechnologies.com/tb">Econ Technologies</a></li>
  366.  
  367. <li><a href="http://www.webcrossing.com/">Web Crossing</a></li>
  368.  
  369. <li><a href="http://www.thedatarescuecenter.com/">The Data Rescue Center</a></li>
  370.  
  371. <li><a href="http://www.usefulfruit.com/tb">Useful Fruit</a></li>
  372.  
  373. <li><a href="http://www.smilesoftware.com/">Smile</a></li>
  374.  
  375. <li><a href="http://macte.ch/conf_tidbits">MacTech Conference</a></li>
  376.  
  377. <li><a href="http://nuance.com/dragon/mac">Nuance</a></li>
  378.  
  379. </ul><div class='sponsor_sidebox_bottom'> </div>
  380. </div>
  381.  
  382.  
  383. <!-- end sponsor_sidebox -->
  384.  
  385.  
  386. </div> <!-- end leftcolumn div -->
  387.  
  388. <!-- end left column -->
  389.  
  390.  
  391. <!-- begin centercolumn_border -->
  392.  
  393. <div id="centercolumn_border">
  394.  
  395. <div class="center_top">Thoughtful, detailed coverage of the Mac, iPhone, and iPad, plus the best-selling <a href="http://www.takecontrolbooks.com/?pt=TB-TAGLINE" style="color:yellow">Take Control</a> ebooks.</div>
  396.  
  397. <!-- begin centercolumn -->
  398. <div id="centercolumn">
  399.  
  400.  
  401.  
  402. <!-- begin rightcolumn_container -->
  403. <div id="rightcolumn_container">
  404.  
  405. <!-- begin rightcolumn -->
  406.     <!-- rightcolumn is embedded within centercolumn so featured text wraps around it -->
  407.     <div id="rightcolumn">
  408.  
  409. <p class="top"> </p>
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420. <!-- Watchlist items -->
  421. <div class="tearoffbox_wide_container">
  422. <div class="tearoffbox_wide_watchlist">
  423. <p class="tearoffbox_wide_top_watchlist"> </p>
  424.  
  425. <h6><a href="/section/watchlist">TidBITS Watchlist</a></h6>
  426. <ul>
  427.  
  428. <LI><a href="/article/11622">DEVONthink and DEVONnote 2.0.4</a></LI>
  429.  
  430. <LI><a href="/article/11620">Security Update 2010-006</a></LI>
  431.  
  432. <LI><a href="/article/11619">TinkerTool 4.2</a></LI>
  433.  
  434. <LI><a href="/article/11618">Mailplane 2.2</a></LI>
  435.  
  436. <LI><a href="/article/11617">Pro Applications Update 2010-02</a></LI>
  437.  
  438. <LI><a href="/article/11611">Dialectic 1.7</a></LI>
  439.  
  440. <LI><a href="/article/11604">Transmit 4.1.1</a></LI>
  441.  
  442. <LI><a href="/article/11603">MarsEdit 3.1.1</a></LI>
  443.  
  444. <LI><a href="/article/11600">Savescreenie 2.0</a></LI>
  445.  
  446. <LI><a href="/article/11598">1Password 3.4.1</a></LI>
  447.  
  448. </ul>
  449.  
  450. <div class="tearoffbox_wide_bottom_watchlist"> </div>
  451.  
  452. </div><!-- end tearoffbox_wide -->
  453.  
  454. </div><!-- end tearoffbox_wide_container for watchlist items -->
  455.  
  456. <!-- begin tearoff box wide -->
  457.  
  458. <div class="tearoffbox_wide_container">
  459. <div class="tearoffbox_wide_tips">
  460.  
  461. <div class="tip_display">
  462. <div class="tips_sponsor_logo">
  463.  
  464. </div>
  465. <h6>Type Faster on an iPhone or iPod touch</h6>
  466. <p><p>When typing on an iPhone or iPod touch, to end a sentence quickly and get ready to start the next one, double tap the Space bar. You'll insert a period followed by a space. You can turn this shortcut on or off via the Shortcut slider in Settings > General > Keyboard.</p></p>
  467. <p>Visit <a href="http://www.takecontrolbooks.com/iphone.html?14@@TBTIPS">Take Control of Your iPhone</a></p>
  468. </div>
  469.  
  470. <div class="tearoffbox_wide_bottom_tips">
  471. <div style="padding-bottom:35px"><div class="tip_display" style="float:left"><p><br><a href="/tipbits/104">Link to this tip</a></p></div><div class="tip_display" style="float:right; width:150px">
  472.  
  473. <p class="credit">Written by<br><a href="/author/Tonya%20Engst">Tonya Engst</a></p></div></div>
  474.  
  475. </div>
  476.  
  477. <div class="tearoffbox_wide_tips_submit">
  478. <form method="post" onsubmit="return false" id="tipbits_form" name="tipbits_form" action="noaction.cgi"><p><a href="javascript:void(0)" onmousedown="ShowTipBox('ts','ts_recaptcha', 50, 'tip_title_id'); return true;">Share your own tip!</a> | <a href="javascript:void(0)" onClick="generic_show_hide('search_tipbits'); document.tipbits_form.tipbits_searchvalue.focus()">Search TipBITS</a></p>
  479. <p style="display:none" id="search_tipbits"><input type="text" onkeydown="if (event.keyCode == 13) { search_tipbits('tipbits_searchvalue'); }" id="tipbits_searchvalue" name="tipbits_searchvalue"> <a href="javascript:void(0)" onClick="search_tipbits('tipbits_searchvalue')">Search</a></p></form>
  480. </div>
  481. <div class="tearoffbox_wide_bottom_tips_submit">
  482.  
  483. </div>
  484.  
  485. </div><!-- end tearoffbox_wide_tips -->
  486. </div><!-- end tearoffbox_wide_container for tips-->
  487. <!-- end tearoff box wide -->
  488.  
  489.  
  490.  
  491. <!-- begin 300 x 250 ad -->
  492.  
  493. <div id="content_ad_square">
  494. <script type='text/javascript'><!--// <![CDATA[
  495.     OA_show(5);
  496. // ]]> --></script><noscript><a target='_blank' href='http://db.tidbits.com/ads/delivery/ck.php?n=TB7671f69'><img border='0' alt='' src='http://db.tidbits.com/ads/delivery/avw.php?zoneid=5&n=TB7671f69'></a></noscript>
  497. </div><!-- end 300 x 250 ad -->
  498.  
  499. <!-- TBTalk items -->
  500. <div class="tearoffbox_wide_container">
  501.  
  502. <div class="tearoffbox_wide_p">
  503. <p class="tearoffbox_wide_top_p"> </p>
  504.  
  505. <h5>Recent TidBITS Talk Discussions</h5>
  506. <ul>
  507.  
  508. <LI><a href="http://emperor.tidbits.com/webx?50@@.3cf95241">Alternatives to MobileMe for syncing calendars between iPad/Mac</a> (1 message)</LI>
  509.  
  510. <LI><a href="http://emperor.tidbits.com/webx?50@@.3cf94dbb">Free anti-virus for the Mac</a> (20 messages)</LI>
  511.  
  512. <LI><a href="http://emperor.tidbits.com/webx?50@@.3cf934e6">iTunes 10 syncing iPod Touch 4.1</a> (2 messages)</LI>
  513.  
  514. <LI><a href="http://emperor.tidbits.com/webx?50@@.3cf92a22">Thoughts about Ping</a> (16 messages)</LI>
  515.  
  516. </ul>
  517.  
  518. <div class="tearoffbox_wide_bottom_p"> </div>
  519.  
  520. </div><!-- end tearoffbox_wide -->
  521.  
  522. </div><!-- end tearoffbox_wide_container for TBtalk items -->
  523.  
  524. <!-- start takecontrol_ad -->
  525. <script type='text/javascript'><!--// <![CDATA[
  526.     OA_show(7);
  527. // ]]> --></script><noscript><a target='_blank' href='http://db.tidbits.com/ads/delivery/ck.php?n=TBe46d56f'><img border='0' alt='' src='http://db.tidbits.com/ads/delivery/avw.php?zoneid=7&n=TBe46d56f'></a></noscript><!-- end takecontrol_ad -->
  528.  
  529. <!-- begin tearoff box 2 -->
  530.  
  531. <div class="tearoffbox_wide_container">
  532.  
  533. <div class="tearoffbox_wide_p">
  534. <p class="tearoffbox_wide_top_p"> </p>
  535.  
  536. <h5>Related Articles</h5>
  537. <ul>
  538. <li><a href="/article/8882">CrashPlan: Backups Revisited</a> (26 Feb 07)</li>
  539. <li><a href="/article/7542">Instant Nostalgia Available at Supercomputer Speeds</a> (16 Feb 04)</li>
  540. <li><a href="/article/7035">Back to 2002, Forward to 2003</a> (06 Jan 03)</li>
  541. <li><a href="/article/6688">Peering Into 2002's Tea Leaves</a> (14 Jan 02)</li>
  542. <li><a href="/article/6485">XNS: It's Dog Food Time</a> (09 Jul 01)</li>
  543. <li><a href="/article/6133">Introducing XNS and XNSORG</a> (25 Sep 00)</li>
  544. <li><a href="/article/3212">DataClub Review</a> (24 Feb 92)</li>
  545. <li><a href="/article/3159">Future Finder</a> (01 Apr 92)</li>
  546. <li><a href="/article/906">The Database Returns</a> (19 Aug 96)</li>
  547. <li><a href="/article/900">System-Level Database Comments</a> (26 Aug 96)</li>
  548.  
  549. </ul>
  550.  
  551. <p class="tearoffbox_wide_bottom_p"> </p>
  552.  
  553. </div><!-- end tearoffbox_wide -->
  554. </div><!-- end tearoffbox_wide_container -->
  555.  
  556. <!-- end tearoff box 2 -->
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564. <!-- begin tearoff box 1 -->
  565.  
  566. <div class="tearoffbox_wide_container">
  567.  
  568. <div class="tearoffbox_wide">
  569. <p class="tearoffbox_wide_top"> </p>
  570.  
  571. <h5>Published in <a href="/issue/711">TidBITS 711</a>.<br><a href="http://www.tidbits.com/list">Subscribe</a> to our weekly email edition.</h5>
  572. <ul>
  573. <li><A HREF="/article/7483">Macworld Expo Hess Events List Available</A></li>
  574. <li><A HREF="/article/7484">Tinderbox 2.1 Enhances HTML Export, Text Display</A></li>
  575. <li><A HREF="/article/7485">DealBITS Drawing: Insider Software Winner</A></li>
  576. <li><A HREF="/article/7486">A Slew of Apple Software Updates</A></li>
  577. <li><A HREF="/article/7487">In Memoriam: Phil Goldman, 1964-2003</A></li>
  578. <li><A HREF="/article/7488">The Web Crossing Begins</A></li>
  579. <li><A HREF="/article/7490">Hot Topics in TidBITS Talk/05-Jan-04</A></li>
  580.  
  581. </ul>
  582.  
  583. <p class="tearoffbox_wide_bottom"> </p>
  584.  
  585. </div><!-- end tearoffbox_wide -->
  586. </div><!-- end tearoffbox_wide_container -->
  587.  
  588. <!-- end tearoff box 1 -->
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596. <div id="rightcolumn_bottom">
  597.  
  598. </div>
  599.  
  600.     </div><!-- end rightcolumn -->
  601.  
  602.  
  603. </div><!-- end rightcolumn_container -->
  604.  
  605.  
  606.  
  607. <!-- featured articles -->
  608.  
  609. <div id="center_ajax_sub" class="instapaper_body">
  610.  
  611. <!-- google_ad_section_start -->
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632. <!-- issue, article, or series -->
  633.  
  634.     
  635.     
  636.     
  637.     
  638.     
  639.         
  640.     <!-- show article(s) -->
  641.     <div class="article"><a name="6100"></a>
  642.     
  643. <!-- comment initialization routine as needed -->
  644. <div class="popup_box_with_captcha" id="hc_6100" style="display: none">
  645.     <div class="tip_box_format">
  646.     <div id="hc_innards_alt_6100" style="display: none">
  647.             <div class="tbf_row">
  648.                 <div class="tbf_wide_80" id="hc_small_response_6100"></div><div class="x_close_row" id="hc_upper_right1_6100"><a href="javascript:void(0)" onmousedown="HidePopupContent('hc_6100', 'hc', '6100'); return true;">Close</a></div>
  649.  
  650.             </div>
  651.     </div>
  652.     <div id="hc_innards_6100">
  653.         <div class="tip_box_form">        
  654.             <form action="foobar.cgi" method="get" name="check_human_6100">
  655.             <div class="tbf_row">
  656.                 <div class="tbf_wide_80" id="hc_rc_6100">To help us avoid automated posts and misuse of our site, please enter the words below.</div><div class="x_close_row" id="hc_upper_right2_6100"><a href="javascript:void(0)" onmousedown="HidePopupContent('hc_6100', 'hc', '6100'); return true;">Close</a></div>
  657.  
  658.             </div>
  659.             <div class="spacer"></div>
  660.             <div class="tbf_row" id="hc_message_box_6100" style="display:none">
  661.                 <div class="tbf_wide"><div class="tbf_alert" id="hc_top_message_6100"></div></div>
  662.             </div>
  663.             <div class="spacer"></div>
  664.             <div class="tbf_row">
  665.                 <div class="tbf_wide"><div id="hc_recaptcha_6100"></div></div>
  666.             </div>
  667.             <div class="spacer"></div>
  668.             <div class="tbf_row">
  669.                 <div class="tbf_wide"><input type="submit" value="Submit" name="submit_this_tip" onClick="handle_tip_submission('hc', '6100', this.form, this.form.submit_type.value); return false;"><input name="calling_routine" type="hidden"><input type="hidden" name="getbits" value="7489"><input type="hidden" name="author_id"><input type="hidden" name="submit_type" value=""></div>
  670.             </div>
  671.             <div class="spacer"></div>
  672.             </form>
  673.         </div><!-- end tip_box_form -->
  674.     </div><!-- end hum box innards -->
  675.     </div><!-- end tip box format -->
  676. </div><!-- end tip_submit box-->
  677.  
  678.  
  679.  
  680.         
  681.         
  682.         <!-- specific article details here -->
  683.         
  684.         
  685.             
  686.         
  687.     
  688.         <article_link><script type="text/javascript">open_if_linked('')</script></article_link>
  689.         
  690.         <div class="featured_meta"><div class="meta_article">05 Jan 2004 | <a href="/article/7489?print_version=1">Print <span class="shift_up"><img src="/images/printer_icon.gif" alt="Printer-Friendly Version of This Article" border="0" width="9" height="10"></span></a></div></div>
  691.  
  692.         <H2>Apple Computer, Going Forward into 2004</H2>
  693.  
  694.         <p class="byline">by <a href="/author/Adam%20C.%20Engst">Adam C. Engst</a> <a href="javascript:void(0)" onClick="document.check_human_6100.submit_type.value='email'; document.check_human_6100.author_id.value='6'; ShowTipBox('hc_6100', 'hc_recaptcha_6100')"><span class="shift_down"><img src="/images/gettb_button_email.gif" height="12" width="12" border="0" alt="Send Email to Author"></span></a></P>
  695.  
  696.         <!-- article text -->
  697.         
  698.         <div id="article_box_6100"><P>In the first issue of the new year in past years, I've attempted to predict some of the big stories of the coming months with varying degrees of success. You can check how well I did over the last few years yourself; this year I want to change direction slightly and look at where Apple <EM>should</EM> go.</P><P><<A HREF="http://db.tidbits.com/article/07035">http://db.tidbits.com/article/07035</A>><BR><<A HREF="http://db.tidbits.com/article/06688">http://db.tidbits.com/article/06688</A>></P><P>Some of these ideas come from the keynote I gave at the O'Reilly Mac OS X Conference in October of 2003; after that talk, Tim O'Reilly and I were chatting about Apple's inconsistency in emphasizing a particular technology or feature in one product, but ignoring it entirely in another. As Tim said, iTunes has some truly neat features, such as Rendezvous-based discovery of shared music; wouldn't it be useful if iPhoto had Rendezvous-based discovery of shared photos? To put it another way, from the outside, it looks like the "Not Invented Here" syndrome (any technology we didn't invent isn't worthwhile) scaled down to the product group.</P><P>Let's look at specific areas Apple can and should focus effort to improve both their products and the Macintosh experience for the rest of us.</P><P><STRONG>Proactive Hardware Testing</STRONG> -- Mac OS X has radically improved the overall stability of the Macintosh, although I've found Panther to be quirkier than Jaguar, with occasional inexplicable hard freezes on my dual-processor 1 GHz Power Mac G4. Other TidBITS staffers ran into trouble with third-party RAM modules that worked fine in Jaguar, but caused constant crashes in Panther.</P><P>Specific troubles will come and go; as long as the overall trend is toward more reliability, I won't complain too loudly. My larger concern is that we still lack sufficient diagnostic and reporting mechanisms to identify and isolate bad hardware of all sorts before it causes trouble. How do you tell if a FireWire or USB device is bad, for instance? Trial and error, just like the old days.</P><P>Apple is making some steps in the right direction. Panther's Disk Utility can now report on the SMART status of your hard drives. SMART, or Self-Monitoring Analysis and Reporting Technology, is a feature built into most modern hard drives. By monitoring numerous variables about the drive operation, SMART can theoretically predict when a drive is about to fail. It won't predict catastrophic failures, but identifying failures that will occur because of cumulative small problems over time is a good start. Open Disk Utility, select the drive (not a volume) in the left column, and look at the bottom of the window for the SMART status.</P><P><<A HREF="http://www.storagereview.com/guide2000/ref/hdd/perf/qual/featuresSMART.html">http://www.storagereview.com/guide2000/ref/hdd/ perf/qual/featuresSMART.html</A>></P><P>Similarly, Panther now reports actual network status in the Network preference pane, including telling you if a cable is unplugged or if you have a self-assigned IP address, both of which can save significant troubleshooting time. A final good move is that Apple now provides (with at least some new Macs; I can't vouch for all of them) the Apple Hardware Test Utility for testing many of a Mac's hardware subsystems. Look on the discs that come with your Mac; for my 12-inch PowerBook G4, Apple Hardware Test is on the Software Install and Restore DVD, and you launch it by holding down Option at startup, and then selecting it instead of a boot disk.</P><P>I'd like to see Apple wrap all these pieces together and figure out a way to run them automatically. I learned about the Apple Hardware Test utility only when the Small Dog Electronics tech support staff asked me to run it to help track down the cause of the constant kernel panics and hard freezes I was seeing on the PowerBook (it was bad RAM). A better approach might be to have a program, perhaps in firmware, look for any hardware changes at startup and automatically offer to test the new device, and then to run the tests on an automatic basis alongside the regularly scheduled Unix cleanup tasks that take place while the Mac is idle.</P><P>Such a feature might not seem sexy, but I think it would be easy for Apple to justify on a marketing basis, not to mention reduced tech support costs and increased customer satisfaction. Call it "Proactive Testing" and sell it as a technology that ensures that the user's Mac will perform some basic verification on anything the user adds, be it RAM, an internal or external hard drive, or a USB device. Everyone knows that computers can be a royal pain when they don't work right; being able to identify bad hardware before it causes trouble would be a big win for Apple.</P><P><STRONG>Emphasize Identity</STRONG> -- Projects like the Virginia Tech Terascale Cluster of 1,100 Power Mac G5s aside, the Mac has always concentrated more on communication than number crunching. From day one, the Macintosh has been a tool for communicating with others, with MacWrite and MacPaint in the early days, and, more recently, via the Internet with a slew of applications like iChat AV, iTunes, and iPhoto. Apple has done a good job with most of these applications, providing better interfaces, integrating communications technologies into Mac OS X, and building a better mousetrap with small devices like the iPod and iSight.</P><P><<A HREF="http://computing.vt.edu/research_computing/terascale/">http://computing.vt.edu/research_computing/ terascale/</A>></P><P>What should come next? An emphasis on identity. Central to all communication is the concept of identity, but Apple's software and services are extremely fuzzy about identity at the moment. Think about all the places you must identify yourself: when logging into your Mac, when connecting to file servers, when sending email, when connecting to many Web sites (including Apple's own .Mac and Apple Store), when using iChat, when sharing music via iTunes, and more. For each of those places, you probably have a different way of identifying yourself, but you're the same person in each place.</P><P>Why do I have to identify myself repeatedly to access my own accounts on other Macs on my network? Why, when I access my own shared music in iTunes with my other Macs, do I have no more privileges to create playlists or manipulate songs than any other user? Why do I have to remember different user names and passwords not just for multiple Web sites, but for multiple Web services run by Apple itself? Where is Apple's vaunted hardware, software, and Web services integration when it comes to identity?</P><P>Identity, and the associated concept of permissions, will be key to communications in the future. We need ways both to identify ourselves to others and to identify people wanting to communicate with us. Even more important, we need ways of saying exactly what each person is allowed to do in a particular communication scenario. Apple has the building blocks necessary to give Mac users the opportunity of creating and using a single electronic identity, and Apple has more of a chance to anoint a standard than almost any other company out there. (If Microsoft had a better reputation for trustworthiness and had chosen to make .NET Passport an open standard, I think it would have had a much large impact.)</P><P>I've long believed that identity will be a major issue; it's why I put a lot of effort into the XNS (eXtensible Name Service) effort a few years back. Unfortunately, XNS suffered from intellectual property baggage and a confusing split of management responsibilities and capabilities between XNSORG (the non-profit organization I chaired) and OneName Corporation (the company that developed XNS and licensed it to XNSORG). Also damaging was OneName's difficulty in finding funding; the company has survived, but only by the skin of its teeth, and it is currently reorganizing under Chapter 11 bankruptcy proceedings. XNSORG has essentially been in limbo for much of this time as well.</P><P><<A HREF="http://db.tidbits.com/article/06133">http://db.tidbits.com/article/06133</A>><BR><<A HREF="http://db.tidbits.com/article/06485">http://db.tidbits.com/article/06485</A>><BR><<A HREF="http://www.onename.com/">http://www.onename.com/</A>><BR><<A HREF="http://www.xns.org/">http://www.xns.org/</A>></P><P>Despite these discouraging signs, and thanks almost single-handedly to the efforts of Drummond Reed, XNS is still alive, and chunks of the technical specification are now under the auspices of OASIS, a global non-profit standards consortium. The Extensible Resource Identifier specification was approved last month by the OASIS XRI Technical Committee, and the charter for a second OASIS technical committee for the XDI (XRI Data Interchange) specification was also submitted last month. With luck, having these technical specifications at OASIS will make it easier for other organizations, like Apple, to start developing identity services based on these open standards.</P><P><<A HREF="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xri">http://www.oasis-open.org/committees/tc_ home.php?wg_abbrev=xri</A>><BR><<A HREF="http://www.onename.com/standards.html">http://www.onename.com/standards.html</A>></P><P><STRONG>The Open/Proprietary Balance Beam</STRONG> -- Mac OS X has been a grand experiment in melding the best of the open source world and the best of the proprietary source world, building Apple's legendary ease-of-use on top of the equally legendary power of an open-source Unix implementation. Even at higher levels, Apple has done a good job of creating open frameworks that enable developers to create applications quickly and easily. Some are relatively well known, such as the WebKit framework that significantly simplifies building Web access into an application. Other examples are less well known, such as Address Book, Apple's system-wide contact database.</P><P>To users, Address Book appears to be a relatively simple application for tracking contacts, but in fact it's just a front end to the Address Book framework, and that in turn is just a way of talking to an open source database called MetaKit. As a result, any application can read from and write to the Address Book database, picking and choosing which fields interest them, adding custom fields, and even marking fields as coming from a specific application. An ever-increasing number of applications take advantage of these capabilities now.</P><P><<A HREF="http://www.equi4.com/metakit.html">http://www.equi4.com/metakit.html</A>></P><P>There are at least two huge benefits to creating these frameworks. Developers are empowered, and as much as it might seem difficult to compete with Safari, the effort of doing so is significantly less thanks to the WebKit framework. (In fact, OmniWeb 5, a pre-release version of which will be shown at Macworld Expo this week, uses WebKit to match Safari's rendering while offering Omni Development's take on what a Web browser interface should be.) But the more interesting benefit is that you don't have to worry about your data being held hostage. With Address Book, for instance, if you didn't like Apple's interface, you could, at least in theory, use a front-end from another developer.</P><P><<A HREF="http://www.omnigroup.com/applications/omniweb/5/">http://www.omnigroup.com/applications/omniweb/5 /</A>></P><P>But Apple isn't consistent here. If iPhoto were merely Apple's own front-end to a generic image cataloging framework, instead of the proprietary solution it is today, users wouldn't have to worry about entrusting not just all their photos to iPhoto, but also all the metadata (titles, keywords, and albums) that gives meaning to all those photos. Also, if developers could extend or even replace portions of iPhoto's functionality, those people for whom iPhoto falls down would have significantly more options.</P><P>My point here is that although some parts of Apple understand the concept of building on top of open frameworks, the religion clearly hasn't spread everywhere within the company. Closed solutions like iPhoto may serve the purpose of making the Mac attractive to consumers, but they don't let other developers make the Mac even more attractive to consumers.</P><P><STRONG>I Need More Speed, Scotty!</STRONG> Performance is a tricky topic to complain about, because it's easy to rely on speed increases thanks to hardware improvements, particularly when doing so guarantees obsolescence and encourages Mac users to buy new computers every few years. If older Macs didn't seem slow running the latest software, many people would stick with them even longer than they do now, which would reflect poorly on Apple's bottom line.</P><P>Mac OS X's performance was nearly unusable in 10.0, distinctly usable in 10.1, and perfectly reasonable in 10.2, and Apple seems to have decided that perfectly reasonable is all that's necessary. On some machines, Panther seems a little faster than Jaguar, but on my dual-processor 1 GHz Power Mac G4, I see the spinning pizza of death far more frequently in Panther than I ever did in Jaguar, and overall, the Mac just feels more sluggish. Either way, I'm disappointed because Mac OS X has never achieved the snappiness of Mac OS 9, and given the kind of hardware we have in today's computers, I expect blazing speed.</P><P>So as much as I'd like to see Mac OS X increase in speed significantly, I don't expect it to happen, since I don't think Apple wants to spend the engineering resources necessary to do it, particularly when maintaining the status quo keeps money from hardware upgrades flowing in.</P><P>That said, there are three other performance-related areas where Apple could and should improve the Macintosh experience. All rely on improvements in functional performance, not computational performance. Computational performance involves increasing the speed of the processor or streamlining code so it executes more quickly. More important is functional performance, or improving ease-of-use so users can complete tasks more quickly. Ironically, functional performance usually comes at the expense of computational performance, as a program consumes CPU cycles to simplify user actions - the sheer popularity of the graphical interface is evidence of the importance of spending CPU time on functional performance.</P><P>First, Mac OS X's dreaded spinning pizza of death indicates that an application isn't responding, either because it crashed, at which point there's no recovering, or because it's performing a lengthy task. In Mac OS 9, you could often interrupt those lengthy tasks with Command-period; I'd like to see that capability return to Mac OS X. It's so frustrating to make a mistake that results in an application going away for a few minutes without being able to interrupt the task, and it's especially frustrating when you're waiting for the Finder to realize that a network volume isn't accessible.</P><P>Second, remember Hiro Yamamoto's Boomerang utility from the days of yore? It simplified opening files and folders that you'd opened recently, and although Boomerang itself was both enhanced (to Super Boomerang) and imitated over the years, relatively few developers picked up on its overall lesson. Boomerang understood that your recent past actions were the ones you were most likely to want to repeat. To generalize that point, existing data can be used to simplify (and therefore speed up) future actions. It's a subtle and valuable lesson, and some of Apple's software understands it. Address Book can automatically complete many fields based on data in those fields for existing contacts; the Displays menu shows just your recently selected resolution switches; and a quick press of Command-Tab switches between your two most recently used applications rather than show the entire list of running programs. But too many applications don't understand Boomerang's lesson, or don't implement it fully, so although Safari can auto-complete URLs, based on pages you've previously visited, it can do so only if you start typing from either the beginning of the URL or the part of the domain after www. And iPhoto currently does nothing to aid the organization and categorization of newly imported photos based either on comparisons with previously imported photos or your previous actions. Every product team, whether inside Apple or working on an independent application, should think hard about how their software could do more work for the user based on past data or actions.</P><P>Third is a frustration with system instrumentation that Tim O'Reilly has articulated on numerous occasions. Someone at Apple needs to <EM>analyze</EM> which of Apple's products have come up with highly functional interface elements that help users work faster, and work to spread those ideas to other product groups. For instance, iTunes can track which songs you play most frequently using the Top 25 Most Played playlist; offering a similar option in iChat and Mail for the people with whom you chat or email the most would also have significant benefits. (This example actually overlaps with the Boomerang lesson, since the people you've communicated with recently are probably the people you'll want to communicate with next, too.) How should this spread of ideas take place? Tim's idea, and it's a good one because it would serve developers outside Apple as well, is that we need a systematic document, akin to the original Apple Human Interface Guidelines, that would look at the best practices of existing applications and talk about how interconnected applications should behave.</P><P><STRONG>File Sharing, The Next Generation</STRONG> -- The Macintosh broke new ground with the introduction of Personal File Sharing because it enabled any Mac to act as a file server. We've come a long way since then, as evidenced by the hefty list of file sharing protocols in Mac OS X's Sharing preference pane, and Rendezvous gave us back some of the ease of device discovery we lost in the switch from AppleTalk to TCP/IP as the primary networking protocol.</P><P>Despite these many new ways of sharing files and improvements like Rendezvous, Apple has done nothing with the most important development in file sharing over the last decade: peer-to-peer file sharing. We're still stuck in a device-driven model of file sharing, so if you want to work with a shared file, you must know what server holds that file, have a user name and password, and explicitly make a connection to that server. And all that assumes you can make a network connection to the server.</P><P>File sharing doesn't have to be so limited, and in fact, a product called DataClub from the early 1990s showed an alternative. With DataClub, every Mac on the network devoted some space to a "cloud" that could hold shared files. All the files in the cloud, no matter which Mac actually held them, appeared as though in a single volume, and if the Mac that held a particular file was turned off, that file was greyed out to indicate it wasn't available.</P><P><<A HREF="http://db.tidbits.com/article/03212">http://db.tidbits.com/article/03212</A>></P><P>Since the days of DataClub, we've seen the rise of peer-to-peer file sharing networks like Napster, Kazaa, eDonkey2000, and a host of others. But none of that technology has appeared in the Mac OS, perhaps due to the fear that the uninformed would somehow equate it with trading of music or other copyrighted content.</P><P>I'd like to see Apple build peer-to-peer file sharing technologies into Mac OS X so a network of Macs and Macintosh users could become more powerful and flexible than the mere sum of its parts. Multiple copies of shared files could be stored across multiple machines, eliminating the problem of a turned-off Mac or traveling PowerBook. Browsing for servers would become a thing of the past; shared files would simply be accessible at all times in what seemed like a local set of folders. Such a system could even automatically maintain backups of data that wasn't shared by distributing it in encrypted chunks around other Macs on the network. All this would work best over a high-speed local network, but designed and implemented properly, nothing would stop it from extending to the Internet.</P><P><STRONG>File System Databases</STRONG> -- To finish this look into a possible future direction for Apple and Mac OS X, think briefly about what my ideas about a cloud of shared files would require at a slightly lower technical level. How would you mark a file to be shared, and how would you determine who would be allowed to access the file, and in what ways? On the other side of the equation, how would another user find the files you shared, and what would happen if that person started editing a file while someone else had it open?</P><P>The answer to all these questions lies in treating files as objects in a database, since database technology long ago addressed all these issues with permissions, users and groups, metadata, and record locking. But the file system that manages files on disk is a rather poor database, and putting a robust, high-performance database underneath the file system might be necessary for such a peer-to-peer file sharing system to work effectively. This isn't a new concept - I hinted at it in a TidBITS April Fools article from 1992, and talked more about the utility of a system-level database in a pair of articles in 1996.</P><P><<A HREF="http://db.tidbits.com/article/03159">http://db.tidbits.com/article/03159</A>><BR><<A HREF="http://db.tidbits.com/article/00906">http://db.tidbits.com/article/00906</A>><BR><<A HREF="http://db.tidbits.com/article/00900">http://db.tidbits.com/article/00900</A>></P><P>With a database underneath the file system, folders in the Finder could be more generic containers whose contents would be based on constantly updated searches, so they could hold all files shared by a particular user, for instance, or all files available to a particular group. Additional metadata could further refine the list of available files, enabling you to limit the available files to those created by a specific program, or during a specific date range. Record-locking could prevent one user from overwriting another user's changes when two people wanted to use the same file simultaneously. In some situations, the locking could perhaps take place at a more granular level than the entire file, so multiple people could work on the same file simultaneously without stepping on each other's changes, much as SubEthaEdit provides real-time collaborative text editing now.</P><P><<A HREF="http://www.codingmonkeys.de/subethaedit/">http://www.codingmonkeys.de/subethaedit/</A>></P><P>The idea of a database underneath the file system is not only not new, it's where Microsoft is going with WinFS in the next major revision to Windows, due at some point in a few years.</P><P><<A HREF="http://msdn.microsoft.com/Longhorn/understanding/pillars/WinFS/default.aspx">http://msdn.microsoft.com/Longhorn/ understanding/pillars/WinFS/default.aspx</A>></P><P><STRONG>The Next Step</STRONG> -- I won't pretend that these suggestions are easy, but it's clear that at least some groups at Apple understand their importance, so I hope my words won't fall on deaf ears. The question is if Apple management can identify the most powerful of these general concepts and appropriately spread them to other products so the overall Mac experience can benefit from the best work being done now in specific areas.</P><!-- Apple Computer, Going Forward into 2004 Adam C. Engst --></div>
  699.         
  700.  
  701.         <!-- end article text -->
  702.     
  703.         
  704.         <!-- PayBITS -->
  705.         
  706.  
  707.         
  708. <p> </p><div class="sponsorbox">
  709. <div class="sponsortext"><A HREF="http://www.webcrossing.com/"><IMG SRC="http://db.tidbits.com/images/badges/web-crossing.gif" ALT="" HEIGHT="50" WIDTH="50" BORDER="0" ALIGN="left"></A>WebCrossing Neighbors Creates Private Social Networks<br />Create a complete social network with your company or group's<br />own look. Scalable, extensible and extremely customizable.<br />Take a guided tour today <<a href="http://www.webcrossing.com/tour">http://www.webcrossing.com/tour</a>></div>
  710. </div>
  711. <div class="sponsorbox_bottom"> </div>
  712.  
  713.  
  714.         <!-- comments section -->
  715.         
  716.         <!-- end comment show-->
  717.         
  718.         <!-- end comments section -->
  719.  
  720.  
  721.         <!-- end article loop details -->
  722.         
  723.         
  724.  
  725.         
  726.     </div><!-- end show article -->
  727.     
  728.     
  729.  
  730.  
  731. <!-- article_plus end -->
  732. <!--
  733. </DIV>
  734. --><!-- end main_column DIV -->
  735.  
  736.  
  737. <!-- google_ad_section_end -->
  738.  
  739. </div><!-- end center AJAX insert -->
  740.  
  741. <!-- TipBITS Search Results Lozenge -->
  742. <div id="tipbits_results_loz" style="display:none">
  743. <form method="post" onsubmit="return false" id="tipbits_form_loz" name="tipbits_form_loz" action="noaction.cgi">
  744. <div class="tip_footer">
  745. <p id="search_tipbits_loz"><input type="text" onkeydown="if (event.keyCode == 13) { search_tipbits('tipbits_searchvalue_loz', 'tipbits_results_loz'); }" id="tipbits_searchvalue_loz" name="tipbits_searchvalue_loz"> <a href="javascript:void(0)" onClick="search_tipbits('tipbits_searchvalue_loz', 'tipbits_results_loz')">Search</a></p>
  746. </div>
  747. <div class="tip_footer_bottom">
  748.  </div>
  749. </form>
  750. </div><!-- end TipBITS Search Results lozenge -->
  751.  
  752.  
  753.  
  754.  
  755. <!-- begin footer -->
  756. <div id="footer">
  757.  
  758. <div id="qr_tag_right"><div id="qr_tag_image"><img src="http://db.tidbits.com/tags/7489.png"></div><div id="qr_tag_text"><a href="http://db.tidbits.com/article/10616">What's this image?</a></div></div>
  759. <p>Special thanks to <a href="http://www.forest.net/">digital.forest</a>, our
  760. Web and mailing list host.</p>
  761. <p>Unless otherwise noted, this article is copyright © 2004 <a href="/author/Adam%20C.%20Engst">Adam C. Engst</a></p>
  762. <p>TidBITS is copyright © 2010 TidBITS Publishing Inc.</p>
  763. <p>Reuse governed by <a href="http://www.tidbits.com/terms/">Creative Commons License</a>.</p>
  764.  
  765. <p><a href="/about.html" title="About TidBITS">About TidBITS</a> | <a href="/account.html" title="Account Help">Account Help</a> | <a href="/advertising.html" title="Advertise with TidBITS!">Advertise with TidBITS!</a> | <a href="/contact.html" title="Contact Info">Contact Info</a> | <a href="/copyright.html" title="Copyright Terms">Copyright Terms</a></p>
  766.  
  767. </div><!-- end footer -->
  768.  
  769.  
  770. </div> <!-- end centercolumn -->
  771.  
  772. <div class="center_bottom"> </div>
  773.  
  774. </div> <!-- end centercolumn_border -->
  775.  
  776.  
  777. </div> <!-- end content_container -->
  778.  
  779. </div> <!-- end mainbody -->
  780.  
  781.  
  782. <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
  783. </script>
  784. <script type="text/javascript">
  785. _uacct = "UA-276924-3";
  786. urchinTracker();
  787. </script>
  788. <script type="text/javascript"
  789. src="http://tidbitscom.skimlinks.com/api/skimlinks.js"></script>
  790. <script type="text/javascript">
  791. var skimlinks_pub_id = '2559X585851';
  792. var skimlinks_domain = 'go.tidbits.com';
  793. skimlinks();
  794. </script>
  795. </body>
  796. </html>
  797.  
  798.