<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5402559</id><updated>2011-07-07T16:25:29.390-07:00</updated><category term='ubuntu gutsy install customize'/><category term='u3 pendrive inkscape'/><category term='bookmarklet jquery'/><category term='xml apple dreamweaver'/><category term='torrent Opera ubuntu parallels Adobe CS3 MacBook'/><category term='repair install XP Vista Toshiba'/><category term='myth linux upgrade'/><category term='css2 standards ie8'/><category term='samba cifs network share gutsy linux documents'/><category term='annoyances leopard active directory'/><category term='wine microsoft'/><title type='text'>New Radar Zone</title><subtitle type='html'>Academia + Mac = Macadamia?</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default?start-index=101&amp;max-results=100'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>102</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5402559.post-8559761070190530475</id><published>2010-04-07T16:40:00.006-07:00</published><updated>2010-04-08T14:07:36.279-07:00</updated><title type='text'>Targeting iPad/iPod/iPhone in JavaScript and CSS</title><content type='html'>Now that the iPad is out, web developers can expect a lot more hits from mobile Safari, which &lt;a href="http://roazen.blogspot.com/2009/11/tiny-yet-amusing-differences-between.html"&gt;does not behave exactly like its desktop version&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;A real-world example of needing to distinguish mobile Safari is the excellent &lt;a href="http://plugins.jquery.com/project/simpleCombo"&gt;simpleCombo&lt;/a&gt;  jQuery plugin that allows you to dynamically type a new OPTION element  in a SELECT list. Because mobile Safari's keyboard is only available during places where text entry is expected, you can't make this plugin useful in it. However, the plugin still runs and creates  an undesired blank OPTION element, so we need to make instantiating the  plugin dependent on the browser not being mobile Safari.&lt;br /&gt;&lt;br /&gt;As we all know, browser sniffing is a no-no for many reasons, not the least of which is it's not guaranteed forward-compatible. Object detection is the preferred method, and &lt;strike&gt;a method common to all three of Apple's mobile platforms is &lt;a href="http://developer.apple.com/safari/library/documentation/UserExperience/Reference/DocumentAdditionsReference/DocumentAdditions/DocumentAdditions.html#//apple_ref/javascript/instm/Document/createTouch"&gt;createTouch&lt;/a&gt;, the superclass for creating touch events.&lt;/strike&gt; a method common to both Apple mobile and Android mobile is window.ontouchstart.&lt;br /&gt;&lt;pre class="brush: js"&gt;if (!(window.ontouchstart===null)) {$("#Department").simpleCombo();}&lt;/pre&gt;It's as simple as that.&lt;br /&gt;&lt;br /&gt;Now, you ask, what about style sheets? When the platform was iPhone/iPod Touch, you could easily specify a separate style sheet with the MEDIA selector:&lt;br /&gt;&lt;pre class="brush: html"&gt;&amp;lt;link media="only screen and (max-device-width: 480px)" href="/css/iphone.css"&amp;gt;&lt;/pre&gt;In CSS:&lt;br /&gt;&lt;pre class="brush: css"&gt;@media screen and (max-device-width: 480px) {...}&lt;/pre&gt;Of course, most of that separate style sheet need had to do with screen space, but there are other considerations as well. So, how do we select both the iPhone/iPod and iPad in one MEDIA selector?&lt;br /&gt;&lt;pre class="brush: css"&gt;@media screen and (max-device-width: 480px),(max-device-width: 1024px)&lt;/pre&gt;That's all there is to it. To exclude this selector (e.g. you want to create a style sheet which contains both normal and mobile Safari styles), just prepend 'not' to 'screen'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-8559761070190530475?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/8559761070190530475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=8559761070190530475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/8559761070190530475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/8559761070190530475'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2010/04/targeting-ipadipodiphone-in-javascript.html' title='Targeting iPad/iPod/iPhone in JavaScript and CSS'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-8533639706388025340</id><published>2010-04-02T21:53:00.002-07:00</published><updated>2010-04-02T22:08:56.903-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bookmarklet jquery'/><title type='text'>portable jQuery</title><content type='html'>Drag this to your toolbar to inject the current jQuery library into any website you're visiting: &lt;a href="javascript:void(function(){var%20s=document.createElement('script');s.src='http://code.jquery.com/jquery-latest.min.js';document.getElementsByTagName('head')[0].appendChild(s);}())"&gt;portable jQuery&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-8533639706388025340?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/8533639706388025340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=8533639706388025340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/8533639706388025340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/8533639706388025340'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2010/04/portable-jquery.html' title='portable jQuery'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-469615826317202423</id><published>2009-11-21T07:57:00.001-07:00</published><updated>2009-11-21T08:00:45.098-07:00</updated><title type='text'>lol mobile Safari</title><content type='html'>&lt;a href="http://cs.helsinki.fi/u/ilmarihe/canvas_animation_demo/mozcampeu09.html"&gt;This&lt;/a&gt; is a short demo of how HTML5's CANVAS element can be animated. You'll notice the absence of sound. This demo works in FF 3.5, Safari, Chrome and Opera. &lt;br /&gt;&lt;br /&gt;On mobile Safari, it actually hangs the browser, freezing somewhere around the time the characters introduce themselves. Also, because the title font isn't in SVG format the browser falls back to Trebuchet. &lt;br /&gt;&lt;br /&gt;If someone with the faster, 256Mb-based iPhone 3gs would test this page's performance I'd be interested to know how far it gets. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- Post From My iPod touch&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-469615826317202423?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/469615826317202423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=469615826317202423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/469615826317202423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/469615826317202423'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/11/lol-mobile-safari.html' title='lol mobile Safari'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-8985277087815285229</id><published>2009-11-20T11:36:00.001-07:00</published><updated>2009-11-20T11:38:46.954-07:00</updated><title type='text'>Tiny yet amusing differences between Safari 4.0 for desktop and Safari for iPhone</title><content type='html'>&lt;a title="Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10"&gt;Safari 4 for desktop&lt;/a&gt; and &lt;a title="Mozilla/5.0 (iPod; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/ 7D11 Safari/528.16"&gt;mobile Safari&lt;/a&gt; (mouse over for UA strings) are almost identical in their featureset. However, some testing of the HTML5 features shows where they differ. Tests were run &lt;a href="http://diveintohtml5.org/detect.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Feature&lt;br /&gt;&lt;/th&gt;&lt;th&gt;Desktop&lt;br /&gt;&lt;/th&gt;&lt;th&gt;Mobile&lt;br /&gt;&lt;/th&gt;&lt;th&gt;Comment&lt;br /&gt;&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&amp;lt;VIDEO&amp;gt; H.264&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Yes&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Unsure&lt;br /&gt;&lt;/td&gt;&lt;td&gt;I believe this can be chalked up to the test's API failing to properly detect capability&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Web workers&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Yes&lt;br /&gt;&lt;/td&gt;&lt;td&gt;No&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Probably an executive decision at Apple not to overtax Safari within the 128Mb it runs inside&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Geolocation&lt;br /&gt;&lt;/td&gt;&lt;td&gt;No&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Yes&lt;br /&gt;&lt;/td&gt;&lt;td&gt;There are several ways geolocation works; I surmise mobile Safari is borrowing the Skyhook methods among others&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&amp;lt;INPUT type="range"&amp;gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Yes&lt;br /&gt;&lt;/td&gt;&lt;td&gt;No&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Given the absence of scrollbars on mobile Safari, the lacking range attribute value isn't surprising&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;@font-face&lt;br /&gt;&lt;/td&gt;&lt;td&gt;TTF/OTF&lt;br /&gt;&lt;/td&gt;&lt;td&gt;SVG&lt;br /&gt;&lt;/td&gt;&lt;td&gt;If I had to guess I'd probably say that malformed SVG is less likely to take down the rendering code than malformed TTFs&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-8985277087815285229?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/8985277087815285229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=8985277087815285229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/8985277087815285229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/8985277087815285229'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/11/tiny-yet-amusing-differences-between.html' title='Tiny yet amusing differences between Safari 4.0 for desktop and Safari for iPhone'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-5118220957073720033</id><published>2009-11-08T15:36:00.002-07:00</published><updated>2009-11-08T15:41:57.199-07:00</updated><title type='text'>Mythbuntu 9.10</title><content type='html'>Laundry list of observations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;new interface no longer handles "delete recordings" properly, 'd' had to be mapped to red remote button&lt;/li&gt;&lt;li&gt;transcode still defaults to RTJpeg instead of MPEG-4&lt;/li&gt;&lt;li&gt;initially delete did not take -- recordings would reappear in listing&lt;/li&gt;&lt;li&gt;MythStream has not been updated so does not appear&lt;/li&gt;&lt;li&gt;MythExport is not integrated with frontend or backend, requiring web interface to configure&lt;/li&gt;&lt;li&gt;keyboard volume knob is no longer recognized&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-5118220957073720033?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/5118220957073720033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=5118220957073720033' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/5118220957073720033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/5118220957073720033'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/11/mythbuntu-910.html' title='Mythbuntu 9.10'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-3253196364499224217</id><published>2009-07-13T11:30:00.002-07:00</published><updated>2009-07-13T12:13:47.691-07:00</updated><title type='text'>Basic iPhone app list</title><content type='html'>These are the ones I like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284956128&amp;amp;mt=8"&gt;Stanza&lt;/a&gt; (free): an ebook reader which can connect to online stores and several free content repositories such as Project Gutenberg. It's so good Amazon bought it.&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=309048665&amp;amp;mt=8"&gt;ReLiSimple Free&lt;/a&gt;: a shopping list manager which can sync with an online account (in case someone at home adds something useful to it)&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300838089&amp;amp;mt=8"&gt;IRChon Free&lt;/a&gt;: An IRC client.&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=285688934&amp;amp;mt=8"&gt;IM+ Lite&lt;/a&gt; (free): an IM client which supports multiple IM networks (Yahoo, AIM, Twitter, and many others). Unlike most IM clients for iPhone, this one doesn't require you to set up an account at the vendor's website. If you want Facebook or Skype, you'll need to pony up $11 (at time of writing) for &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=296246130&amp;amp;mt=8"&gt;the full version&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=286623227&amp;amp;mt=8"&gt;TouchTerm SSH&lt;/a&gt; ($0.99): terminal emulator which supports a full keyboard: Ctrl/Alt/Function, arrows, and more.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284708449&amp;amp;mt=8"&gt;UrbanSpoon&lt;/a&gt; (free): one of the better restaurant finders/review apps out there. Maps, reviews, and if the restaurateur is registered with UrbanSpoon, even menus. It's the one you see in the Apple iPhone ads.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284916679&amp;amp;mt=8"&gt;Last.fm&lt;/a&gt; (free): internet radio tailored to your favorite music. Requires a free signup at &lt;a href="http://www.last.fm/"&gt;last.fm&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300238550&amp;amp;mt=8"&gt;Mint.com Personal Finance&lt;/a&gt; (free): Arguably one of the better ways to keep track of all your finances at a glance is to register with &lt;a href="http://www.mint.com/"&gt;mint.com&lt;/a&gt; (also free). This app gives you an iPhone-optimized view of your finances at mint.&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=307132353&amp;amp;mt=8"&gt;Sally's Spa&lt;/a&gt; ($0.99, on sale): Amusing time-management game where you run a spa and must manage multiple customers.&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=294692235&amp;amp;mt=8"&gt;Nutrition Menu&lt;/a&gt; ($2.99): Type 1 diabetics usually have a pocket-sized copy of the &lt;a href="http://www.amazon.com/Calorie-King-Carbohydrate-Counter-November/dp/B001LONYMK"&gt;Calorie, Fat &amp;amp; Carbohydrate Counter&lt;/a&gt; book in their purse: it covers basic foods, prepared foods and a large variety of chain restaurant food. While this invaluable database of nutrition facts has been made into an app for the old PalmOS and Windows Mobile platforms, its authors have been dragging their heels on porting it to the iPhone platform, and Nutrition Menu is gaining on them. It keeps the database locally, so you don't need a wifi/3G connection to pull up nutrition information on the spot.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-3253196364499224217?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/3253196364499224217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=3253196364499224217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/3253196364499224217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/3253196364499224217'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/07/basic-iphone-app-list.html' title='Basic iPhone app list'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-2842427291001826236</id><published>2009-07-10T10:40:00.002-07:00</published><updated>2009-07-10T10:46:15.408-07:00</updated><title type='text'>DUH moment of the day or Getting Coldfusion to parse § correctly</title><content type='html'>We were confused at work today as to why CF kept translating the section symbol § as � (your browser is behaving correcrly, that's "Replacement Character") every time the section symbol was included in a form. As it turns out, if your form lives on a page with Western encoding (iso-8859-1) instead of Unicode-8 (UTF-8), some characters will not be parsed correctly, even though the section symbol isn't even technically in the range associated with Unicode.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-2842427291001826236?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/2842427291001826236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=2842427291001826236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2842427291001826236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2842427291001826236'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/07/duh-moment-of-day-or-getting-coldfusion.html' title='DUH moment of the day or Getting Coldfusion to parse § correctly'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-5843232130811412836</id><published>2009-06-21T07:05:00.013-07:00</published><updated>2009-06-30T09:53:14.711-07:00</updated><title type='text'>Porting Ren'Py to iPhone project</title><content type='html'>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Ren%27py"&gt;Ren'Py&lt;/a&gt; is a &lt;a href="http://en.wikipedia.org/wiki/Visual_novel"&gt;visual novel&lt;/a&gt; framework written in C and Python which conveniently compiles Win32, OS X and Linux targets for you. For those of you old enough to remember "&lt;a href="http://en.wikipedia.org/wiki/Choose_your_own_adventure"&gt;Choose Your Own Adventure&lt;/a&gt;" books, visual novels are basically the same idea.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;One platform Ren'Py does not support is iPhone, likely due to these factors:&lt;/p&gt;&lt;ol&gt;&lt;li&gt; The Ren'Py developer community's doubts about the viability of the iPhone app economy (commercial visual novels cost more than most iPhone apps) compounded by recent dustups concerning App Store authors not being paid in a timely fashion&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Apple's public stance against App Store apps with code interpreters. Under the terms of clause 3.3.2 of the iPhone 3.0 SDK, it would seem to be impossible to develop any kind of software with a code interpreter that uses its own frameworks. And yet this is being debated endlessly across forums ever since the 3.0 SDK came out. I suspect the more hardline Apple tries to be on this point, the harder developers will push to create better toolchains of their own, leaving Apple in the unenviable position of trying to add EULA language prohibiting you the end user from choosing what kind of software you want to run on a device you outright own (they had the choice not to port the iPhone to the iPod Touch).&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Despite these obstacles, we have to remember that the iPhone platform was designed for a very specific purpose: &lt;span style="font-style: italic;"&gt;to waste as much time as humanly possible.&lt;/span&gt; And to this end, visual novels are IMO a killer pocket app.&lt;br /&gt;Just to make it all fun, I have zero experience with Python or XCode and limited experience with C-based languages -- but then, most of my learning new stuff has been to build real-world projects.&lt;br /&gt;So, let's enumerate what has to be done to accomplish this particular project:&lt;br /&gt;&lt;h4&gt;Goalposts:&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Learn Ren'Py/Python&lt;/li&gt;&lt;li&gt;Learn SDL framework&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Learn enough Objective-C/C++&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Learn enough iPhone dev process/XCode/alternate toolchains&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Ren'Py main dependencies:&lt;/h4&gt;   &lt;ul&gt;&lt;li&gt;PyGame&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Python (&lt;a href="http://www.saurik.com/id/5"&gt;found&lt;/a&gt;, available from Cydia)&lt;/li&gt;&lt;li&gt;libsdl (&lt;a href="http://projectsymphony.blogspot.com/2009/04/whole-sdl-libraries-availalbe-for.html"&gt;found&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ffmpeg (proven, on Cydia)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;libogg (proven, on Cydia)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h4&gt;Possible final product distribution:&lt;br /&gt;&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;&lt;strike&gt;unjailbroken app distributed via ad hoc&lt;/strike&gt; (ad hoc is limited to 100 users)&lt;/li&gt;&lt;li&gt;jailbroken app distributed via Cydia&lt;br /&gt;&lt;/li&gt;&lt;li&gt;self-distributed &lt;a href="http://forums.whirlpool.net.au/forum-replies-archive.cfm/1034897.html"&gt;manually installed&lt;/a&gt; .ipa package (potential path, not enjoyable yet for end users)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h4&gt;Possible packaging:&lt;br /&gt;&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;Standalone package (possibly a compile option for Ren'Py main)&lt;/li&gt;&lt;li&gt;Shell app to be fed game files from existing games (&lt;em&gt;i.e.&lt;/em&gt; jailbroken app)&lt;/li&gt;&lt;/ol&gt;&lt;h4&gt;Issues/obstacles:&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Licensing for Python / SDL incompatible with AppStore (irrelevant) and not necessarily free for commercial products&lt;/li&gt;&lt;li&gt;This suggests a shell app feature which can load Ren'Py /game&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Performance hits from multiple software abstraction layers and interpreters (could be serious)&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Recently discovered resource:&lt;/h4&gt;&lt;a href="http://haxe.org/"&gt;haXe&lt;/a&gt; &lt;a href="http://drawlogic.com/2009/06/19/haxe-on-the-iphone-with-hxcpp-flash-9-api-to-c-for-mobile/"&gt;for iPhone&lt;/a&gt; (iPhone port takes care of SDL wrapper, among other things)&lt;br /&gt;&lt;br /&gt;6.28: found libsdl for iPhone&lt;br /&gt;6.29: iPhone 3.0 SDK installed&lt;br /&gt;6.30: Looking into open source toolchains to bypass iPhone 3.0 SDK licensing issues&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-5843232130811412836?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/5843232130811412836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=5843232130811412836' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/5843232130811412836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/5843232130811412836'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/06/porting-ren-to-iphone-project.html' title='Porting Ren&apos;Py to iPhone project'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-4196199276871424321</id><published>2009-06-13T08:48:00.003-07:00</published><updated>2009-06-13T08:48:31.199-07:00</updated><title type='text'>Uploading Lucida Grande to your iPhone</title><content type='html'>Preface: this would not be possible without Tukulesto's sparse tutorial. Recommended software: TouchTerm Lite and FontViewer on your iPhone.  &lt;br /&gt;Amazingly, Apple chose not to put OS X's signature font on their mobile platform. This can be corrected if you have a Mac handy and your iPhone is jailbroken.&lt;br /&gt;For starters, have an sftp client on your Mac (Cyberduck is good). Log in and navigate to /System/Library/Fonts. There should be two things in it: CGFontCache.plist and the Cache directory (where the fonts actually live). Since 10.4, OS X has stored its property list files in binary rather than XML format: this can be converted using the plutil command line utility. The astute among you will notice that the OS on the iPhone itself has a plutil utility, but beware: the converters were stripped out by Apple.&lt;br /&gt;The basic procedure is as follows: sftp into your iPhone, drag the fonts you want added into the Cache folder, then convert-edit-convert the CGFontCache property list to add the font's metadata, then shutdown/restart your iPhone to make the change take effect.&lt;br /&gt;Why would you bother doing this? In my case, I wanted to see the Apple website rendered more faithfully, and to add more diversity of sans-serif fonts to Stanza's ebook reader (many of the defaults are derivatives of the same Grotesk gothic family). It's also good practice for hacking your iPhone.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href='http://blogpress.w18.net/photos/09/06/13/183.jpg'&gt;&lt;img src='http://blogpress.w18.net/photos/09/06/13/s_183.jpg' border='0' width='187' height='281' style='margin:5px'&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;-- Post From My iPod touch&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-4196199276871424321?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/4196199276871424321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=4196199276871424321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/4196199276871424321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/4196199276871424321'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/06/uploading-lucida-grande-to-your-iphone.html' title='Uploading Lucida Grande to your iPhone'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-9081026282431416635</id><published>2009-06-13T08:48:00.001-07:00</published><updated>2009-06-13T08:48:18.314-07:00</updated><title type='text'>The 21st century inflight</title><content type='html'>I generally avoid flying since the TSA decided an insulin pump was grounds for unpacking all my luggage, but I really like my in-laws and they live across the country in North Carolina (not too far from where Ruth and I used to live before we moved to Arizona). &lt;br /&gt;We've both got 8Gb iPod Touches and we planned to keep ours stocked with entertainment media for the long drives and flights. Archive.org is a good source of public domain MP4 content including vintage cartoons. Ruth found smoking deals on some childrens' classics in audiobook format as well as the large free assortment from vox libris. Stanza connects to the Gutenberg Project where much is there to be downloaded.&lt;br /&gt;Aboard our flight, I was surprised how many laptops, netbooks and iPods popped out. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- Post From My iPod touch&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-9081026282431416635?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/9081026282431416635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=9081026282431416635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/9081026282431416635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/9081026282431416635'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/06/21st-century-inflight.html' title='The 21st century inflight'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-1750538984963621401</id><published>2009-04-23T00:20:00.001-07:00</published><updated>2009-04-25T14:46:59.756-07:00</updated><title type='text'>iPod Touch: 10 days later</title><content type='html'>A few gripes: &lt;br /&gt;&lt;br /&gt;Arrow key gestures were really useful in the Palm GUI. Trying to fix text in the middle of a word or URL is maddening.&lt;br /&gt;The search function in AppStore should remember the last thing I typed, not the last result I clicked.&lt;br /&gt;A graphic equalizer in Music would be nice.&lt;br /&gt;Map needs to be able to save/cache directions. Not all of us have 3G connections, and realistically there are places in Arizona where it wouldn't matter if you did. Offline is a reality for many of us. [edit: Map does cache directions and pictures for offline. I did not do my homework here.]&lt;br /&gt;4x4 is not enough real estate for power users.&lt;br /&gt;Lantern mode should be a feature, not a $.99 app.&lt;br /&gt;The bug where all AppStore apps suddenly stop working until you're connected enough to delete and reinstall one of your AppStore apps: fucking fix it already. This is unacceptable.&lt;br /&gt;Calculator: shit sandwich until it has scientific like OS X proper has. [edit: there are many fine free calculators I overlooked.]&lt;br /&gt;&lt;br /&gt;-- Post From My iPod touch&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-1750538984963621401?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/1750538984963621401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=1750538984963621401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/1750538984963621401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/1750538984963621401'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/04/ipod-touch-10-days-later.html' title='iPod Touch: 10 days later'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-6387277901495993139</id><published>2009-04-11T20:33:00.003-07:00</published><updated>2009-04-14T22:29:43.094-07:00</updated><title type='text'>Suggested apps for new Mac owners</title><content type='html'>So, you bought a new Mac and you're wondering what Apple left out. Here's my suggested list of things to add:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/personal.html"&gt;Firefox&lt;/a&gt;: it should be obvious, but just in case it wasn't (but check out Flock below first)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adiumx.com/"&gt;Adium&lt;/a&gt;: universal IM client. Yahoo, AIM, MSN, Facebook, Myspace, whatever, it has support for it&lt;/li&gt;&lt;li&gt;&lt;a href="http://audacity.sourceforge.net/"&gt;Audacity&lt;/a&gt;: sound recorder and converter&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.coconut-flavour.com/coconutbattery/index.html"&gt;CoconutBattery&lt;/a&gt;: if you've got a MacBook, gives you detailed information about your battery's lifespan&lt;/li&gt;&lt;li&gt;&lt;a href="http://cyberduck.ch/"&gt;Cyberduck&lt;/a&gt;: if you do FTP work, this is essential&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/windows/windowsmedia/player/wmcomponents.mspx"&gt;Flip4Mac&lt;/a&gt;: plays WMV video in QuickTime Player&lt;/li&gt;&lt;li&gt;&lt;a href="http://flock.com/"&gt;Flock&lt;/a&gt;: Firefox on steroids for social networking site users. Built in tools for YouTube, Flickr, Digg, Facebook, Blogger, Twitter, and many more. I use it instead of Firefox.&lt;/li&gt;&lt;li&gt;&lt;a href="http://handbrake.fr/"&gt;HandBrake&lt;/a&gt;: DVD ripper extraordinaire.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.squared5.com/"&gt;MPEG Streamclip&lt;/a&gt;: convert video to a number of formats. Particularly useful for converting videos to iPod-friendly formats&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://openoffice.org/"&gt;OpenOffice.org&lt;/a&gt;: free alternative to Microsoft Office which can read and write Microsoft's formats&lt;/li&gt;&lt;li&gt;&lt;a href="http://perian.org/"&gt;Perian&lt;/a&gt;: adds more video codecs to QuickTime Player (&lt;span style="font-style: italic;"&gt;e.g.&lt;/span&gt; natively play .flv Flash video)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.tuppis.com/smultron/"&gt;Smultron&lt;/a&gt;: advanced text editor for coders&lt;/li&gt;&lt;li&gt;&lt;a href="http://wakaba.c3.cx/s/apps/unarchiver.html"&gt;The Unarchiver&lt;/a&gt;: OS X can unzip zipfiles but doesn't recognize other formats like .rar or .7z or many, many others.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.unrarx.com/"&gt;UnRarX&lt;/a&gt;: more sophisticated .rar decoder, can unpack .rars that the Unarchiver can't&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.transmissionbt.com/"&gt;Transmission&lt;/a&gt;: fast, lightweight BitTorrent client&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.videolan.org/"&gt;VLC&lt;/a&gt;: excellent media player for playing media formats other players can't. Also plays ShoutCast internet radio stations from around the world&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-6387277901495993139?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/6387277901495993139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=6387277901495993139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/6387277901495993139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/6387277901495993139'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/04/suggested-apps-for-new-mac-owners.html' title='Suggested apps for new Mac owners'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-4837499802286253612</id><published>2009-04-11T19:28:00.001-07:00</published><updated>2009-04-12T15:30:43.200-07:00</updated><title type='text'>iPod touch</title><content type='html'>My better half suggested I get one of these as a PDA with benefits. So far I've been impressed with the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Opening powerpoint presentations from web&lt;/li&gt;&lt;li&gt;Dailymotion video working without flash&lt;/li&gt;&lt;li&gt;Bundled web fonts&lt;/li&gt;&lt;li&gt;Shrooms app for carb/nutrition database&lt;/li&gt;&lt;li&gt;Blogpress app&lt;/li&gt;&lt;li&gt;Comicszeal app&lt;/li&gt;&lt;li&gt;Mail being out of box compatible with work email (Exchange) and my webmail (Gmail, Yahoo)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Not impressed with iTunes' conversion of an .MP4 to an iPod Touch compatible movie: it choked and I'm using MPEG Streamclip to convert it.&lt;br /&gt;Other gripes:&lt;br /&gt;safari won't upload files, so no starting threads on imageboards&lt;br /&gt;-- Post From My iPod touch&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-4837499802286253612?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/4837499802286253612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=4837499802286253612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/4837499802286253612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/4837499802286253612'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/04/ipod-touch.html' title='iPod touch'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-200137531628250283</id><published>2009-04-07T13:23:00.008-07:00</published><updated>2009-04-22T20:17:38.537-07:00</updated><title type='text'>Workflow for getting DVD captions</title><content type='html'>Disclaimer: this is a process aimed at putting educational videos on Flash Media Server, with the addition of closed captions for the Longtail video player.&lt;br /&gt;&lt;br /&gt;Prerequisites:&lt;br /&gt;&lt;a href="http://www.dvdfab.com/dvd-fab-platinum.htm"&gt;DVDfab&lt;/a&gt; (which is our DVD -&gt; .mp4 ripper as well)&lt;br /&gt;&lt;a href="http://ccextractor.sourceforge.net/"&gt;CCExtractor&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ic8m0jlYPjo/Se9LT6WmXlI/AAAAAAAAABc/WbNIScpYZ0g/s1600-h/dvdfab-uncheck.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 234px;" src="http://3.bp.blogspot.com/_ic8m0jlYPjo/Se9LT6WmXlI/AAAAAAAAABc/WbNIScpYZ0g/s320/dvdfab-uncheck.jpg" alt="" id="BLOGGER_PHOTO_ID_5327559689656229458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Rip DVD to .mp4 first. For ease, we'll By default, DVDFab selects a subtitle ("subpicture") and we want to uncheck that. Click &lt;span style="font-weight: bold;"&gt;Next&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ic8m0jlYPjo/Se9ME5Nb2dI/AAAAAAAAABk/gVo-Y9GiqT0/s1600-h/Picture+6.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 233px;" src="http://4.bp.blogspot.com/_ic8m0jlYPjo/Se9ME5Nb2dI/AAAAAAAAABk/gVo-Y9GiqT0/s320/Picture+6.png" alt="" id="BLOGGER_PHOTO_ID_5327560531162946002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Click &lt;span style="font-weight: bold;"&gt;Conversion Settings&lt;/span&gt; to make this an MP4.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ic8m0jlYPjo/Se9Nsgc4NSI/AAAAAAAAABs/Wwpl38lJ8co/s1600-h/Picture+7.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; cursor: pointer; width: 320px; height: 304px;" src="http://4.bp.blogspot.com/_ic8m0jlYPjo/Se9Nsgc4NSI/AAAAAAAAABs/Wwpl38lJ8co/s320/Picture+7.png" alt="" id="BLOGGER_PHOTO_ID_5327562311223227682" border="0" /&gt;&lt;/a&gt;We want Device: Generic which should default to an h264+aac .MP4, perfect for FMS. Change the filename and the title to something a little more human-friendly. Note the &lt;span style="font-weight: bold;"&gt;Fixed Bitrate&lt;/span&gt;/&lt;span style="font-weight: bold;"&gt;Fixed File Size&lt;/span&gt; boxes: if the Fixed File Size would be much more than 600MB, select it and tweak it down to 650MB. Subpicture should read "No subpicture". Click &lt;span style="font-weight: bold;"&gt;OK&lt;/span&gt; and click &lt;span style="font-weight: bold;"&gt;Start&lt;/span&gt; to start ripping the DVD to .MP4. On a slow single-core P4, this will take about the same time as playback; others with more recent equipment report it taking about half that time. The .MP4 is ready for putting up on the Flash Media Server in its proper directory.&lt;/div&gt;&lt;br /&gt;CCExtractor can't read this .MP4 for captions (and that may be because the author isn't familiar with MP4 or because DVDfab's cropping strips scanline 21, or both or neither), so we'll have to rip the DVD a second time, this time to an MPEG2 stream. Good news is, the second rip is direct to .vob ("DVD Passthrough") and requires the least transcoding (essentially all it's doing is stripping out the disc's CSS encryption).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ic8m0jlYPjo/Se9QOA-0vAI/AAAAAAAAAB0/ope7D5S3T4M/s1600-h/Picture+8.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_ic8m0jlYPjo/Se9QOA-0vAI/AAAAAAAAAB0/ope7D5S3T4M/s320/Picture+8.png" alt="" id="BLOGGER_PHOTO_ID_5327565085914479618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This time, go to the main DVDFab screen and click &lt;span style="font-weight: bold;"&gt;Crop Settings&lt;/span&gt;. In the Crop Settings window, click &lt;span style="font-weight: bold;"&gt;Disabled&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;OK&lt;/span&gt;. This is to prevent DVDFab from stripping out the scanline that contains the closed caption data. In the main screen, click &lt;span style="font-weight: bold;"&gt;Conversion Settings&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ic8m0jlYPjo/Se9RCB0yDVI/AAAAAAAAAB8/rHqudkxLu94/s1600-h/Picture+9.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 304px;" src="http://4.bp.blogspot.com/_ic8m0jlYPjo/Se9RCB0yDVI/AAAAAAAAAB8/rHqudkxLu94/s320/Picture+9.png" alt="" id="BLOGGER_PHOTO_ID_5327565979493993810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This time, select vob as the device and click &lt;span style="font-weight: bold;"&gt;OK&lt;/span&gt;. Click &lt;span style="font-weight: bold;"&gt;Start&lt;/span&gt;: a 105 min movie (Ghostbusters) took all of 9 minutes on a crappy Dell Optiplex GX270. &lt;span style="font-style: italic;"&gt;(edit: A scratched 125 min. disc of Spirited Away took 24 minutes)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ic8m0jlYPjo/Se9XvppkUmI/AAAAAAAAACE/bAWvVVi6o44/s1600-h/Picture+12.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 294px;" src="http://4.bp.blogspot.com/_ic8m0jlYPjo/Se9XvppkUmI/AAAAAAAAACE/bAWvVVi6o44/s320/Picture+12.png" alt="" id="BLOGGER_PHOTO_ID_5327573360348254818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Open CCExtractor, go to the &lt;span style="font-weight: bold;"&gt;Input files&lt;/span&gt; tab if it's not already open and drag the .vob you just made to the window. Click the &lt;span style="font-weight: bold;"&gt;Output&lt;/span&gt; tab and make sure ".srt (SubRip)" is selected.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ic8m0jlYPjo/Se9ZAQ04laI/AAAAAAAAACM/Xs0Obo2ZCIw/s1600-h/Picture+14.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 266px;" src="http://3.bp.blogspot.com/_ic8m0jlYPjo/Se9ZAQ04laI/AAAAAAAAACM/Xs0Obo2ZCIw/s320/Picture+14.png" alt="" id="BLOGGER_PHOTO_ID_5327574745254237602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Click the awkwardly-named &lt;span style="font-weight: bold;"&gt;Execution&lt;/span&gt; tab and click &lt;span style="font-weight: bold;"&gt;Start&lt;/span&gt;. Extracting the captions on this old machine takes roughly a tenth the time of playback. When it's finished, in the same directory as the filename.vob is now filename.srt, ready to be put anywhere that the Longtail player can find it (either locally to the player or accessible with an http url). Do not delete the .vob file until you've made sure the captions remain synched with the video all the way through; if they don't, run CCExtractor again.&lt;br /&gt;&lt;br /&gt;An alternate method would be to only use DVDFab to rip to .vob and then use HandBrake to transcode the .vob to .MP4, but HandBrake's speed at transcoding is roughly comparable to DVDFab's direct rip to .MP4 (I have not tested this on other machines yet).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-200137531628250283?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/200137531628250283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=200137531628250283' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/200137531628250283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/200137531628250283'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/04/workflow-for-getting-dvd-captions.html' title='Workflow for getting DVD captions'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ic8m0jlYPjo/Se9LT6WmXlI/AAAAAAAAABc/WbNIScpYZ0g/s72-c/dvdfab-uncheck.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-2157926740109315145</id><published>2009-02-21T13:07:00.001-07:00</published><updated>2009-02-21T13:07:50.009-07:00</updated><title type='text'>Fixing the Shoutcast parser in Mythstream</title><content type='html'>&lt;p&gt;Goddamnit, why does MythTV need to have duplicate config files between &lt;kbd&gt;/usr/share/mythtv&lt;/kbd&gt; and &lt;kbd&gt;~/.mythtv&lt;/kbd&gt; ? Shoutcast's parser broke sometime in September 2008 and after Ruth brought it to my attention I wasted an hour downloading the patched parser to &lt;kbd&gt;/usr/share/mythtv/mythstream/parsers/&lt;/kbd&gt; and watched it do nothing -- because as usual Myth defaults to looking in the home directory instead. I seem to recall the same problem configuring MAME.&lt;/p&gt;&lt;p&gt;It seems &lt;em&gt;really&lt;/em&gt; improbable that someone's going to cobble together a multiple user mythbox (especially since Mythbuntu mooted having to create a regular user first). I'd make all of &lt;kbd&gt;~/.mythtv&lt;/kbd&gt; a link to &lt;kbd&gt;/usr/share/mythtv&lt;/kbd&gt; if there weren't permission issues with doing so (&lt;em&gt;i.e.&lt;/em&gt; updates attempting to insert changes into the home version without rights).&lt;/p&gt;&lt;p style="color: rgb(0, 0, 136); text-align: right;"&gt;&lt;small&gt;&lt;em&gt;Powered by&lt;/em&gt; &lt;a href="http://www.qumana.com/"&gt;Qumana&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-2157926740109315145?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/2157926740109315145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=2157926740109315145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2157926740109315145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2157926740109315145'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/02/fixing-shoutcast-parser-in-mythstream.html' title='Fixing the Shoutcast parser in Mythstream'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-7652396365771562167</id><published>2009-01-10T17:00:00.001-07:00</published><updated>2009-01-11T08:18:53.930-07:00</updated><title type='text'>Getting the Creative SoundBlaster Live! audio card to work in MythTV</title><content type='html'>&lt;p&gt;I finally got this to work by going into the master backend's BIOS and disabling the onboard VIA 82xx audio chipset and rebooting. Given no choice but the SoundBlaster card, GNOME's audio settings no longer present 25-odd choices for configuration and now Myth plays sound on recordings and the remote correctly controls the volume.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Postscript: Master better than PCM.&lt;/p&gt;&lt;br /&gt;&lt;p style="color:#008;text-align:right;"&gt;&lt;small&gt;&lt;em&gt;Powered by&lt;/em&gt; &lt;a href="http://www.qumana.com/"&gt;Qumana&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-7652396365771562167?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/7652396365771562167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=7652396365771562167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/7652396365771562167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/7652396365771562167'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2009/01/getting-creative-soundblaster-live.html' title='Getting the Creative SoundBlaster Live! audio card to work in MythTV'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-467056063637339059</id><published>2008-12-28T19:32:00.002-07:00</published><updated>2008-12-28T19:51:16.636-07:00</updated><title type='text'>Double tuners finally working</title><content type='html'>There are a lot of blind roads I got led down trying to figure this one out. To recap: Master backend in living room, slave backend in bedroom, PVR-150 in each. MBE refuses to see tuner in SBE, SBE refuses to see tuner in SBE.&lt;br /&gt;&lt;br /&gt;Part of problem is related to both boxes defining tuner card as /dev/video0 which confuses MBE's database (not sure why). Googling 'force /dev/video1' was a mistake because the solutions to that had to do with boxes with multiple tuners, not ecologies with multiple tuners in separate boxes, and udev rules won't really fix my problem because they're more useful to fixing which device inside a box gets enumerated first.&lt;br /&gt;&lt;br /&gt;No, what I needed was to tell the MBE that it was /dev/video1 and let the SBE stay /dev/video0. This isn't done with /etc/udev/rules.d/ rules files, this is done in /etc/modprobe/aliases &lt;a href="http://www.nabble.com/pvr-150-occasionally-swaps--dev-video1-to--dev-video0-td16358277s15552.html"&gt;with a simple line&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;options ivtv &lt;b class="highlight"&gt;ivtv_first_minor&lt;/b&gt;=1&lt;br /&gt;&lt;br /&gt;Much, much easier than futzing with udev. The next step is to follow &lt;a href="http://www.timcolby.ca/projects/mythtv/install.php#ss21.12"&gt;these instructions&lt;/a&gt;: Delete all the tuners on both boxes, set up the tuner on the SBE first (Mythbuntu deliberately doesn't have a menu option for mythtv-setup, so you'll have to run it from a terminal), then set up the tuner on the MBE. Nota Bene: you will not see the SBE tuner in the list of tuners as you create the MBE tuner. Do not freak.&lt;br /&gt;&lt;br /&gt;Now, I have two machines which can simultaneously show separate live TV feeds, and the MBE automatically reshuffled the recording schedule to permit simultaneous recordings on both boxes. Amusingly the two tuners are known as 2 and 3 globally and each is Tuner 1 locally.&lt;br /&gt;&lt;br /&gt;The remaining PITA at this point has to do with the audio on the new MBE: neither the VIA 82xx chipset nor the ancient Creative card I put in it allow Myth to control the volume, despite GNOME being able to do so. But the dual tuner situation has been a major victory.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-467056063637339059?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/467056063637339059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=467056063637339059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/467056063637339059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/467056063637339059'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/12/double-tuners-finally-working.html' title='Double tuners finally working'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-1309292775067629857</id><published>2008-12-14T00:59:00.000-07:00</published><updated>2008-12-14T01:18:13.814-07:00</updated><title type='text'>Further improvements and fixes</title><content type='html'>After years of unsuccessfully trying to have the Myth backend transcode its MPEG2 recordings (provided by the Hauppauge PVR-150's onboard MPEG2 encoder chip) down to H.264 MPEG4s which consume only a quarter the disk space, I finally managed it.&lt;br /&gt;&lt;br /&gt;The key seems to be not using any of the default Transcoder profiles and creating a new one which is specifically MP4 based; the two Autodetect ones don't do what I expected them to and the Low-Medium-High are RTJPEG rather than MP4 (the anal retentive in me refuses to change their definition).&lt;br /&gt;&lt;br /&gt;Commercial detection is good; what I expected was that once a recording was commercial flagged, it would automatically insert cutpoints for future DVD export. This is not the case, but if I watch a flagged recording and hit M to edit it, once in the editor hitting Z imports the commercial flagpoints as cutpoints. Sweet.&lt;br /&gt;&lt;br /&gt;The slave backend in the bedroom does not automatically configure itself to find the videos on the MBE; however, once NFS was configured for both boxes, the slave backend's ftab now mounts the MBE's ~/ at startup and the SBE's videos directory is pointed at it.&lt;br /&gt;&lt;br /&gt;The master backend's media settings now include /media as a directory, so that CDs/DVDs/USB sticks with standard format videos can be recognized by Myth's video player. Irritatingly, Myth still has to be told to scan the media, and incomprehensibly does not filter out files outside the list of allowed media file extensions. It also does not purge the scans when the media is removed.&lt;br /&gt;&lt;br /&gt;Burning shows to Memorex DVD+R single layer media has had spotty results: two DVDs made with Mytharchive have reported success, but had major bad sectors resulting in unplayability. Both were exported again as DVDs using identical settings successfully (as far as I can tell from casual scanning). I don't know if Myth is doing a crap job of verifying the media.&lt;br /&gt;&lt;br /&gt;A problem since the box swap with Mythdvd not playing discs was resolved when the udev rules for optical media were discovered to have added the new box's optical drive but not removed the old one, effectively removing /dev/dvd from the device tree. Commenting out the old one and rebooting fixed this and Myth's default DVD player now works again.&lt;br /&gt;&lt;br /&gt;Tuner card and audio card problems are still on the "to be fixed" list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-1309292775067629857?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/1309292775067629857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=1309292775067629857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/1309292775067629857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/1309292775067629857'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/12/further-improvements-and-fixes.html' title='Further improvements and fixes'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-3429508897389171818</id><published>2008-12-10T13:48:00.000-07:00</published><updated>2008-12-10T13:57:57.956-07:00</updated><title type='text'>More myth nonsense</title><content type='html'>The ability of Myth to burn DVDs quietly disappeared some time back and more recently for people using the Medibuntu repository. Apparently several ffmpeg-related libraries in Intrepid no longer work with Medibuntu's version of ffmpeg, &lt;a href="https://bugs.launchpad.net/medibuntu/+bug/269997"&gt;and alternates had to be installed&lt;/a&gt; to get it to work.&lt;br /&gt;&lt;br /&gt;I had foolishly believed that the PVR-150s could not capture closed-captioning based on several forum posts, when I tripped across something which pointed out that NTSC-capable tuners are legally required to decode this VBI information. As it so happens, all I had to do was go into Myth's preferences and tell it from now on to capture VBI CC. On this note, the maintainers should point their caption fonts at the default install's fonts directory instead of copying just two fonts to the Mythtv directory.&lt;br /&gt;&lt;br /&gt;The bedroom slave backend needs to have its tuner assigned to something other than /dev/video0 in order to avoid conflicting with the master backend's tuner, but supposedly once this is done the MBE should be able to tune while recording.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-3429508897389171818?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/3429508897389171818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=3429508897389171818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/3429508897389171818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/3429508897389171818'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/12/more-myth-nonsense.html' title='More myth nonsense'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-3179481388023700278</id><published>2008-12-07T12:54:00.001-07:00</published><updated>2008-12-10T13:48:15.374-07:00</updated><title type='text'>Nota Bene for people swapping out PCs in Myth systems</title><content type='html'>In the past I've gotten away with swapping out HDs from Linux systems to newer PCs. After the most recent swap, I noticed two things stopped working: sound volume and DVD playback in Myth's internal player. Checking the settings between the troubled backend and the slave backend did me no good; they were identical.&lt;br /&gt;&lt;br /&gt;What had happened with the DVD was that &lt;span style="font-family:courier new;"&gt;/dev/dvd&lt;/span&gt; wasn't being created properly at boot. Error messages reading "can't stat /dev/dvd" turned up a search which led to &lt;span style="font-family:courier new;"&gt;/etc/udev/rules.d/70-persistent-cd.rules&lt;/span&gt;, the config file which describes your optical drives' default &lt;span style="font-family:courier new;"&gt;/dev/&lt;/span&gt;&lt;drive&gt; creation. &lt;a href="http://ubuntuforums.org/archive/index.php/t-855535.html"&gt;Another blogger&lt;/a&gt; had discovered that replacing his optical drive did not automagically bring everything up to snuff; another set of rules were added but the previous set of rules were not deleted.&lt;br /&gt;&lt;br /&gt;I haven't nailed down the audio problem yet, but I suspect it's similar. &lt;span style="font-style: italic;"&gt;Edit:&lt;/span&gt; Apparently this is a problem with Intrepid and the onboard VIA 82xx audio chipset driver. I'll be experimenting with an audio card to see what I can do there.&lt;br /&gt;&lt;/drive&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-3179481388023700278?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/3179481388023700278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=3179481388023700278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/3179481388023700278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/3179481388023700278'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/12/nota-bene-for-people-swapping-out-pcs.html' title='Nota Bene for people swapping out PCs in Myth systems'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-3534264670557681438</id><published>2008-11-12T09:29:00.003-07:00</published><updated>2008-11-12T09:42:25.959-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='myth linux upgrade'/><title type='text'>Mythbuntu notes</title><content type='html'>Recently I came into possession of some used PCs from a medical practice which were built by the office manager rather than off-the-shelf equipment (they've since transitioned to the latter approach for purchasing), and after dutifully &lt;a href="http://www.dban.org/"&gt;DBAN&lt;/a&gt;ing the drives clear, I noticed that two of them had superior specs to the two multimedia PCs being used in our household.&lt;br /&gt;&lt;br /&gt;As Myth gets more complex and Ubuntu Linux' base requirements creep, we've noticed problems with the platform in a practical environment. Rapid channel-changing of live TV throws errors, DVD playback is flaky, recorded video playback has skips...&lt;br /&gt;&lt;br /&gt;Not surprisingly, swapping the HD/tuner card/optical drive out to a faster machine with more modern memory seems to have erased these problems. In all fairness, I've been attempting this platform on some of the most challenging sets of specs (it's the economy, stupid) and when I started this project the Myth wiki was proud of how conservative its requirements were. Unfortunately Myth doesn't control what their platform runs on, and until there's an Arch equivalent of the Mythbuntu distro, they're at the mercy of the Linux ecology's diversity.&lt;br /&gt;&lt;br /&gt;To put this in perspective, the first Mythbox I built (before there was a Mythbuntu) was a 450MHz P3/512Mb ECC SDRAM/200Gb Dell Dimension XPS T450 (which previous to acquisition was a Windows Media PC). The current backend/frontend is a P4M266A-8237 homebrew (thanks, &lt;a href="http://ezix.org/project/wiki/HardwareLiSter"&gt;lshw&lt;/a&gt;), 512Mb PC2700 / 2.8GHz P4 with hyperthreading turned on (which to the 2.6 kernel appears as two CPUs), and a PNY GeForce 2600 with 256Mb of its own memory.&lt;br /&gt;&lt;br /&gt;This is the third box this backend has lived on, and the office manager who built it has a knack for gaemen which benefits multimedia platforms. Now, rapid channel changing is smooth, DVD playback is fine, and apparently recorded video playback is smooth too. The bedroom slave backend is a BrkdleG-ICH4, also using PC2700 memory.&lt;br /&gt;&lt;br /&gt;It would probably be accurate to say that a good baseline for building a Mythbox is something built within the last twenty-four months or newer, and that perhaps there should be an update window of no more than one or two major Ubuntu releases.&lt;br /&gt;&lt;br /&gt;It's a dilemma: there are always sweet, sweet new features in new releases of Myth but their dependencies can take you places your hardware isn't ready for unless it's pimped.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-3534264670557681438?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/3534264670557681438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=3534264670557681438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/3534264670557681438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/3534264670557681438'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/11/mythbuntu-notes.html' title='Mythbuntu notes'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-7202646049499118066</id><published>2008-07-29T15:26:00.002-07:00</published><updated>2008-07-29T15:27:06.170-07:00</updated><title type='text'>Apple rumors</title><content type='html'>OK, so the little one is GLASS TRACKPAD and the big one is NON-INTEL CHIPS.&lt;br /&gt;&lt;br /&gt;Some on ars technica are speculating that a tiny display would go under the glass trackpad, but I'll be dipped if I can figure out what you'd do with that. And I had a Palm PDA for close to five years.&lt;br /&gt;&lt;br /&gt;Non-Intel: Well, typically Apple dumps a chipmaker when they're pissed about something. IBM lost interest in keeping the Power architecture viable for portable computing and essentially told Cupertino to ante up the money if they wanted something comparable to Centrino. As far as anyone knows, the relationship between Apple and Intel was pretty cozy. Personally, I think the MBA is a poor choice as a business computer, but I do respect what Intel managed to do as far as energy consumption and form factor are concerned.&lt;br /&gt;&lt;br /&gt;So, the question is: what advantage do you get by leaving Intel? Here are the conspiracy theories, all in a row.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Apple wants to kill the Hackintoshes and cloners.&lt;br /&gt;An interesting theory. Change the architecture enough and move to something less easily emulated on another platform.&lt;br /&gt;Downsides to this theory: Parallels and BootCamp have sold hundreds of thousands of Macs, and pulling the plug on this bridge to the Windows market isn't insanely great, it's insane. Moreover, Apple was given ample tools from Intel (TPM, EFI) to crack down on clones and hasn't made it a priority.&lt;/li&gt;&lt;li&gt;Apple isn't pleased with Montevino not being available for their platform and intends to pull an AMD.&lt;br /&gt;Now that they own a chipmaker, this is plausible...but unlikely. Intel's fabbing capacity was a linchpin to Apple's ability to churn out Macs to meet worldwide demand.&lt;/li&gt;&lt;li&gt;The control freaks of old have resurged at Apple and want to create proprietary boards and chipsets again just like the late 80s/early 90s.&lt;br /&gt;Possible, given the fact that Apple stubbornly retained their mobo design staff through the Intel transition...except that the relationship with Intel and reuse of the standard northbridge/southbridge architecture has been a profitable one for them.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Apple isn't ditching Intel CPUs, they just want to design their own mobos and chipsets. This requires the least tinfoil to believe. For one thing, even with the standard PC mobo, the MacBooks have custom keyboard firmware (no internal PS/2 connector), so they've already trod in this ground.&lt;br /&gt;Downside to this theory: technically Apple's agreement with Intel doesn't allow them to pick and choose what components Intel supplies, with the exception of the big three (audio/video/networking).&lt;/li&gt;&lt;/ol&gt;Drama is everywhere in the chip industry. AMD is declining even while its ATI is on the rise against Nvidia. Intel has generally gotten good marks for the last five years, and so has Apple.&lt;br /&gt;&lt;br /&gt;For once, I can't begin to guess what's going on with this "major transition" mentioned to board members.&lt;br /&gt;  &lt;div class="flockcredit" style="text-align: right; color: rgb(204, 204, 204); font-size: x-small;"&gt;Blogged with the &lt;a href="http://www.flock.com/blogged-with-flock" style="color: rgb(153, 153, 153); font-weight: bold;" target="_new" title="Flock Browser"&gt;Flock Browser&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-7202646049499118066?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/7202646049499118066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=7202646049499118066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/7202646049499118066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/7202646049499118066'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/07/apple-rumors.html' title='Apple rumors'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-5933141491838270762</id><published>2008-06-23T11:41:00.003-07:00</published><updated>2008-06-23T11:43:41.170-07:00</updated><title type='text'>Mobile platform testing</title><content type='html'>&lt;p&gt;Over the years we discovered that XHTML/CSS as a platform had several advantages: smaller footprint for the website (CSS is cached), ADA compliance... and of course portability for multiple platforms.&lt;/p&gt;&lt;p&gt;Mobile platforms are no exception, because most of their issues are either the same or in parallel with ADA: content needs to be pushed to the top, navigation below, simplified in structure, and a reduced dependence on high-resolution images.&lt;/p&gt;&lt;p&gt;In the beginning, our testing consisted of using Lynx as a way of quickly checking structure and usability. While this is a good hard test, growing levels of usability in mobile platforms are rendering Lynx less and less relevant to what end users can see and do.&lt;/p&gt;&lt;p&gt;Fortunately vendors of these platforms have been good at virtualizing them to testing versions, typically for Windows (and in one case, down to an applet on Opera's website). Whereas desktop renderers have largely shrunk to the big four (MSIE / Gecko / Opera / WebKit), it's important to remember that mobile browsers are not as easily replaceable, and have not yet yielded to the same renderer core shakeout.&lt;/p&gt;&lt;p&gt;This is an informal laundry list of applications and websites I've used to test mobile platforms.&lt;/p&gt;&lt;p&gt;You'll notice (if you browse the Library website) that telephone numbers on this site are in fact working TEL and FAX links whose highlights/underlines are now visible (CSS suppresses the underlines in desktop browsers); clicking the area code dials the full number with "1928" at the beginning, clicking the 7 digit number dials it as a local call.&lt;/p&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="https://sso.forum.nokia.com/"&gt;Nokia&lt;/a&gt; requires you to register in order to get product keys for their mobile emulators (&lt;em&gt;e.g.&lt;/em&gt; S60 which scrolls the display over a rendered fullsize page)&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://developer.openwave.com/dvl/tools_and_sdk/"&gt;OpenWave&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.operamini.com/demo/"&gt;Opera Mini&lt;/a&gt;'s website emulator&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://mtld.mobi/emulator.php"&gt;DotMobi&lt;/a&gt;'s website emulator&lt;/li&gt;&lt;/ul&gt;&lt;p style="color: rgb(0, 0, 136); text-align: right;"&gt;&lt;small&gt;&lt;em&gt;Powered by&lt;/em&gt; &lt;a href="http://www.qumana.com/"&gt;Qumana&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-5933141491838270762?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/5933141491838270762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=5933141491838270762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/5933141491838270762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/5933141491838270762'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/06/mobile-platform-testing.html' title='Mobile platform testing'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-206254236707382552</id><published>2008-05-19T10:26:00.000-07:00</published><updated>2008-05-19T10:29:32.404-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='annoyances leopard active directory'/><title type='text'>Active Directory (dis)integration with Leopard</title><content type='html'>Daniel Stranahan discovered when he upgraded from Tiger to Leopard that his AD-bound Macs &lt;a href="http://discussions.apple.com/thread.jspa?messageID=6776794"&gt;no longer warn him of impending password expiration&lt;/a&gt;. Other people have noticed the same thing, and Apple has been remarkably mum on this point. This is exceptionally stupid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-206254236707382552?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/206254236707382552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=206254236707382552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/206254236707382552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/206254236707382552'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/05/active-directory-disintegration-with.html' title='Active Directory (dis)integration with Leopard'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-3384338798212091458</id><published>2008-05-16T09:23:00.000-07:00</published><updated>2008-05-16T09:33:25.693-07:00</updated><title type='text'>Linux Mint 5.0 beta</title><content type='html'>&lt;a href="http://www.linuxmint.com/blog/?p=174"&gt;Elyssa 5 beta&lt;/a&gt; is out, the Mint distro based on Ubuntu 8 Hardy Heron, and I have to say it gets slicker with every release. I still recommend switching the default font from Verdana clone Sans to DejaVu Sans Condensed, but overall it has a very "comfy" feel and so far I'd consider it pretty usable. If you've got friends curious about Linux who don't want to spend the time installing all the nonfree software and codecs, or you just don't want to spend time making Ubuntu not look like rotting vegetation, Mint is worth the try.&lt;br /&gt;&lt;br /&gt;Adobe AIR is finally available for Linux as a beta, and it installed in Mint easily. Regrettably websites with AIR apps may tell you that your platform isn't supported, but downloading and double-clicking the AIR file directly will work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-3384338798212091458?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/3384338798212091458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=3384338798212091458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/3384338798212091458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/3384338798212091458'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/05/linux-mint-50-beta.html' title='Linux Mint 5.0 beta'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-2449332272963511758</id><published>2008-04-09T20:42:00.000-07:00</published><updated>2008-04-09T20:54:57.848-07:00</updated><title type='text'>Linux Mint 4.0; first impressions</title><content type='html'>Installing it as a VM in Parallels, following &lt;a href="http://ubuntuforums.org/showthread.php?t=677403&amp;amp;highlight=parallels"&gt;these instructions&lt;/a&gt; as if it were an Ubuntu distro (which it is). I am pleased to say the following about Mint:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It shaves several steps off &lt;a href="http://roazen.blogspot.com/2007/11/after-install-setting-up-desktop-ubuntu.html"&gt;my standard Ubuntu post-install procedure&lt;/a&gt; because Mint's maintainers think in similar ways&lt;/li&gt;&lt;li&gt;It comes with a better selection of themes&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Single taskbar instead of two&lt;/li&gt;&lt;li&gt;Genuine attempt to merge Gnome and KDE paradigms&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Its simplified "software portal" package finder is actually kind of cool&lt;/li&gt;&lt;li&gt;No goddamn brown/orange color scheme. There's no polite way to tell Mark Shuttleworth that an OS color scheme can't be based on the color of shit.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-2449332272963511758?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/2449332272963511758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=2449332272963511758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2449332272963511758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2449332272963511758'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/04/linux-mint-40-first-impressions.html' title='Linux Mint 4.0; first impressions'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-26187066690916249</id><published>2008-04-02T08:52:00.001-07:00</published><updated>2008-04-06T12:18:46.459-07:00</updated><title type='text'>Never trust a computer that weighs less than a box of Pop Tarts.</title><content type='html'>The MacBook Air is new and cute, but it's also a different animal than other MacBooks, much less other PCs. If you plan to get one, be aware of the following issues:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;USB hubs are not your friend.&lt;/span&gt; The SuperDrive will only work directly plugged into the sole USB port, because its voltage requirements necessitated Apple and Intel overvolting that port. In fact, the SuperDrive will not even work on non-Air MacBooks.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The Ethernet adapter also does not enjoy being run from a hub. &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;The out-of-the-box version of Parallels works poorly with flash memory&lt;/span&gt;, causing kernel panics whenever Windows does something disk/network intensive. Go to their forums and &lt;a href="http://forums.macrumors.com/showthread.php?t=459502"&gt;get build 5592 or later&lt;/a&gt; which is optimized for the Air's solid state storage.&lt;/li&gt;&lt;li&gt;The corollary of the above two is that you'd be better off using Disk Utility to make a disk image of your install media and let Parallels use that instead (it'll be faster, for one thing).&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-26187066690916249?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/26187066690916249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=26187066690916249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/26187066690916249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/26187066690916249'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/04/never-trust-computer-that-weighs-less.html' title='Never trust a computer that weighs less than a box of Pop Tarts.'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-1954168776305621397</id><published>2008-03-25T14:12:00.000-07:00</published><updated>2008-03-25T14:23:14.547-07:00</updated><title type='text'>More MacBook Pro notes</title><content type='html'>&lt;ul&gt;&lt;li&gt;Setting up Active Directory required an AD's username/password, something it doesn't in Windows, but it bound itself nicely to the network and now my network shares do not require individual authentication to work.&lt;/li&gt;&lt;li&gt;VPN on Request is a load of codswallop. It apparently was designed to respond to a specific set of APIs which are not generally used by cross-platform apps or protocols, SMB among them. This is important because adding network shares to your startup items apparently requires the VPN be on at my employer's, and VPN isn't set to automatically turn itself on from remote locations.&lt;/li&gt;&lt;li&gt;The solution to this is to keep aliases to the automounted shares in the Documents folder, where they can be manually opened after switching on the VPN.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Thunderbird is dog slow when running POPmail from a network share (please don't ask).&lt;/li&gt;&lt;/ul&gt;In general, this is beginning to work well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-1954168776305621397?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/1954168776305621397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=1954168776305621397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/1954168776305621397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/1954168776305621397'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/03/more-macbook-pro-notes.html' title='More MacBook Pro notes'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-905297708581056221</id><published>2008-03-20T11:17:00.001-07:00</published><updated>2008-03-21T14:48:46.574-07:00</updated><title type='text'>Further notes on MacBook Pro</title><content type='html'>&lt;ul&gt;&lt;li&gt;Parallels' version of Ubuntu Gutsy 7.10 is non-upgradeable: something about it prevents the usual &lt;kbd&gt;sudo updatemanager -d&lt;/kbd&gt; method from successfully moving to Hardy Heron, complaining of insufficient disk space (perhaps a side effect of Parallels' compressed filesystems).&lt;/li&gt;&lt;li&gt;The bug in Adblock Pro which makes blockable applets (Java, Silverlight, Flash) disappear or flicker away on Macs and Macs only (which began with Firefox in OS 9 on PPC Macs) is still present and must be solved by disabling "Show tabs on Flash and Java."&lt;/li&gt;&lt;li&gt;&lt;strike&gt;CTRL-ALT-DEL fails inside of Screen Sharing regardless of the keyboard used (internal, external, Apple or Dell). This is a bug as far as I'm concerned, since Apple's crowing about how it uses the VNC standard. The VNC standard includes a full keyboard, one way or another.&lt;/strike&gt; I am an idiot. Fn-Ctrl-Command-Del is Ctrl-Alt-Del on a compact keyboard.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I still can't get external blog editing apps to submit blogs as anything other than drafts to Blogger.&lt;/li&gt;&lt;li&gt;Parallels Transporter sucks. Sucks. Takes an hour to get to 1% and then mysteriously fails, even after optimizing the source computer's hard drive. This is betaware at best unless the folks at Parallels can answer this problem mentioned repeatedly across their forums.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-905297708581056221?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/905297708581056221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=905297708581056221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/905297708581056221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/905297708581056221'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/03/further-notes-on-macbook-pro.html' title='Further notes on MacBook Pro'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-447870205774596910</id><published>2008-03-17T20:00:00.003-07:00</published><updated>2008-03-20T11:34:01.243-07:00</updated><title type='text'>MacBook Pro notes</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;I'm doing this blog entry from Qumana (see link at bottom of post) because I'm not impressed with Blogger's own Web 2.0 platform. Note to Blogger: if you're so freaking fond of AJAX, use it to update the captcha while I'm blogging so I don't get that irritating failed authentication error. Qumana was originally written for Windows, but since it's a Java app it was quickly ported to OS X. &lt;/p&gt;&lt;p&gt;Much of the last few years I've worked pretty closely with Linux. Linux is a damn good way to squeeze performance out of a cheap platform (e.g. used PCs). So, now that I have &lt;a href="http://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore?node=home/shop_mac/family/macbook_pro&amp;amp;cid=OAS-US-KWG-CPUMacBookPro-US&amp;amp;aosid=p202&amp;amp;esvt=GOUSE4514211&amp;amp;esvadt=999999-0-1084314-1&amp;amp;esvid=1846"&gt;an irritatingly expensive laptop&lt;/a&gt; running OS X, XP SP2, Vista, and Ubuntu, I can test how &lt;a href="http://www.opera.com/"&gt;webpages&lt;/a&gt; &lt;a href="http://www.mozilla.com/en-US/firefox/"&gt;look&lt;/a&gt; &lt;a href="http://www.microsoft.com/windows/ie/downloads/critical/ie6sp1/default.mspx"&gt;in&lt;/a&gt; &lt;a href="http://www.mozilla.com/en-US/firefox/3.0b1/releasenotes/"&gt;a&lt;/a&gt; &lt;a href="http://www.apple.com/safari/"&gt;buttload&lt;/a&gt; &lt;a href="http://www.konqueror.org/features/browser.php"&gt;of&lt;/a&gt; &lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/getitnow.mspx"&gt;browsers&lt;/a&gt; simultaneously side by side. The impetus to even learn Linux for me back in 2001 was so I could test our website on Konqueror.&lt;/p&gt;&lt;p&gt;Regrettably X11 is broken in Leopard, which effectively shits all over a number of popular cross-platform open source apps like OpenOffice, Inkscape, GIMP, etc. It's almost as if Apple were not-so-subtly telling developers to port to Aqua. NeoOffice is working like a charm.&lt;/p&gt;&lt;p&gt;The magsafe connector on the Pro is pretty strong. It feels like an electromagnet.&lt;/p&gt;&lt;p&gt;Note to Apple: Your laptops do not have full keyboards. Therefore, they do not have dedicated DEL keys. While Screen Sharing is a pretty application, it appears impossble to send CTRL-ALT-DEL to a host computer from the laptop, because the fn-delete combination is not recognized by the host as DEL or some other reason. We &lt;em&gt;will&lt;/em&gt; connect to non-Macs, and we &lt;em&gt;will&lt;/em&gt; need special keypresses not available from your keyboard (Linux needs support for SysRq).&lt;/p&gt;&lt;p style="color: rgb(0, 0, 136); text-align: right;"&gt;&lt;small&gt;&lt;em&gt;Powered by&lt;/em&gt; &lt;a href="http://www.qumana.com/"&gt;Qumana&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-447870205774596910?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/447870205774596910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=447870205774596910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/447870205774596910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/447870205774596910'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/03/macbook-pro-notes.html' title='MacBook Pro notes'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-4422280372287841771</id><published>2008-03-13T20:05:00.001-07:00</published><updated>2008-03-17T20:13:49.906-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='torrent Opera ubuntu parallels Adobe CS3 MacBook'/><title type='text'>Adobe, kind enough to give you a BitTorrent client</title><content type='html'>I got my MacBook Pro this afternoon and spent quality time installing CS3 Design on it. I also installed Parallels and discovered that the Ubuntu CD I burned for installs has 52 defects on it, so I opted to download the Parallels-optimized Ubuntu installer.&lt;br /&gt;&lt;div&gt;Most are broken into several downloads, but there's also a torrent. I saved the torrent and just for kicks opened it knowing I hadn't installed any BitTorrent clients.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Opera opened up and obligingly started the torrent. Wait, what? I didn't install Opera. Application folder didn't have Opera in it. Fortunately right-clicking the O icon in the Dock and telling it to show me Opera in the Finder brought up a folder named MacOS with Bridge CS3 as a Unix executable -- and Opera.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Turns out Adobe Bridge has Opera encapsulated inside itself. Slick.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-4422280372287841771?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/4422280372287841771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=4422280372287841771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/4422280372287841771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/4422280372287841771'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/03/adobe-kind-enough-to-give-you.html' title='Adobe, kind enough to give you a BitTorrent client'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-2351946840425331172</id><published>2008-03-05T15:23:00.004-07:00</published><updated>2008-03-05T16:49:41.792-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css2 standards ie8'/><title type='text'>Testing IE8 Beta: Like Ohio, we expected better from you</title><content type='html'>IE8 Beta &lt;a href="http://www.microsoft.com/downloads/thankyou.aspx?familyId=1a2e3ddd-b38b-439d-bba7-f179a5d3ecaf&amp;amp;displayLang=en#"&gt;went public today&lt;/a&gt;, and I'm running it through Meyerweb's &lt;a href="http://meyerweb.com/eric/css/tests/css2/index.html"&gt;CSS2 test suite&lt;/a&gt;. Unlike IE7, &lt;a href="http://roazen.blogspot.com/2006/02/ie7b2-testing-day-2.html"&gt;which had exactly zero CSS properties missing in IE6&lt;/a&gt; (sorry, supporting + and &gt; operators doesn't count), IE8 appears to be the direction IE should have been taking for the last eight years.&lt;br /&gt;&lt;br /&gt;Newly supported/fixed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://meyerweb.com/eric/css/tests/css2/sec17-06.htm"&gt;Border-spacing&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Pseudoselectors like &lt;a href="http://meyerweb.com/eric/css/tests/css2/sec05-12-03.htm"&gt;before: and after:&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Text-align:center &lt;a href="http://theodorakis.net/tablecentertest.html"&gt;no longer incorrectly centers block elements like TABLE&lt;/a&gt; but instead cascades down to their first inline element (&lt;span style="FONT-STYLE: italic"&gt;i.e.&lt;/span&gt; cell text). Unbelievable. &lt;/li&gt;&lt;li&gt;The inherit related problems from IE6/7 seem to have been solved.&lt;/li&gt;&lt;li&gt;I also note that a rendering bug in IE7 that makes overlapping CSS menus momentarily render with transparent boxes has been fixed.&lt;/li&gt;&lt;/ul&gt;However, still unsupported in IE while supported elsewhere:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://meyerweb.com/eric/css/tests/css2/sec12-04-01.htm"&gt;Quote character declarations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://meyerweb.com/eric/css/tests/css2/sec12-05a.htm"&gt;Counter-reset&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://meyerweb.com/eric/css/tests/css2/sec12-06-02a.htm"&gt;List-style-type&lt;/a&gt; and &lt;a href="http://meyerweb.com/eric/css/tests/css2/sec12-06-02b.htm"&gt;list-style-image&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://meyerweb.com/eric/css/tests/css2/sec15-02-04b.htm"&gt;Font-size-adjust&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://meyerweb.com/eric/css/tests/css2/sec16-04a.htm"&gt;Letter-spacing&lt;/a&gt; and &lt;a href="http://meyerweb.com/eric/css/tests/css2/sec16-04b.htm"&gt;word-spacing&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://meyerweb.com/eric/css/tests/css2/sec17-04-01.htm"&gt;Caption-side&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://meyerweb.com/eric/css/tests/css2/sec05-12-01.htm"&gt;First-line&lt;/a&gt; and &lt;a href="http://meyerweb.com/eric/css/tests/css2/sec05-12-02.htm"&gt;First-letter&lt;/a&gt;&lt;/li&gt;&lt;li&gt;OBJECT &lt;a href="http://www.howtocreate.co.uk/wrongWithIE/?chapter=Object+Tags"&gt;still shits the bed&lt;/a&gt;. Get on the stick, dickweeds. OBJECT was supposed to replace IMG two or three NYC skyscrapers ago. &lt;/li&gt;&lt;li&gt;I haven't tested BUTTON's ability to send the correct properties yet, but I'm not holding my breath.&lt;/li&gt;&lt;li&gt;&lt;a href="http://juicystudio.com/mimetest/index.php"&gt;XHTML mime-type?&lt;/a&gt; Not on XP at any rate: it still attempts to download the file rather than render it. &lt;/li&gt;&lt;/ul&gt;Sadly, FF and IE still don't support &lt;a href="http://meyerweb.com/eric/css/tests/css2/sec15-02-03d.htm"&gt;font-stretch&lt;/a&gt; or &lt;a href="http://meyerweb.com/eric/css/tests/css2/sec16-03-02.htm"&gt;text-shadow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;IE8 has made some progress compared to the pile of fail that was IE7. It still falls damned short of where an XHTML browser ought to be, and the things we told Microsoft to get straight two years ago.&lt;br /&gt;&lt;br /&gt;It's disappointing that nothing short of harassment influences the likes of IE's dev staff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-2351946840425331172?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/2351946840425331172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=2351946840425331172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2351946840425331172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2351946840425331172'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/03/testing-ie8-beta.html' title='Testing IE8 Beta: Like Ohio, we expected better from you'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-2171835167001797818</id><published>2008-02-21T12:15:00.007-07:00</published><updated>2008-04-06T12:15:36.869-07:00</updated><title type='text'>Vista, take 2</title><content type='html'>Well, yesterday's install of Vista Business solved the problem of getting Bibliofile to install its basic module. However, the support staff at TLC neglected to mention that the real incompatibility issue was with the PostgreSQL backend which for some reason they don't care to explain does not work under Vista. I can't tell if they mean that &lt;a href="http://www.google.com/search?q=postgres+8.1.4+vista&amp;amp;"&gt;the two-versions-out-of-date Postgres 8.1.4 bundled in the Bibliofile installer is incompatible with Vista&lt;/a&gt; or if &lt;a href="http://www.postgresql.org/community/survey.24"&gt;whatever glue code connecting Postgres to Bibliofile&lt;/a&gt; is incompatible (&lt;span style="font-style: italic;"&gt;edit:&lt;/span&gt; it's &lt;a href="http://archives.postgresql.org/pgsql-general/2006-09/msg01207.php"&gt;the PG installer for 8.1.4&lt;/a&gt; that's to blame). When I asked a TLC tech if it would be possible to manually upgrade the instance of Postgres to a more current version, he reacted as if I was planning to pour ketchup all over the inside of the laptop.&lt;br /&gt;&lt;br /&gt;Our solution so far has been to repartition the HD and &lt;a href="http://apcmag.com/5485/dualbooting_vista_and_xp"&gt;install XP to the second partition as a dual-boot system&lt;/a&gt;: when TLC manages to solve their problem, Vista's partitioning tool can reclaim the XP partition. Note to Microsoft: as much as I hate you, I have to admit a live partitioning tool that works inside its own boot partition is cool.&lt;br /&gt;&lt;br /&gt;This decision required a fair amount of research: Toshiba technically supports XP, but doesn't go out of its way to announce how that works. However, forums are full of Satellite owners who have needed to downgrade to XP, and many have done their homework to find the XP drivers for the laptop's chipsets. After much searching and downloading, we think we've got the basics.&lt;br /&gt;&lt;br /&gt;Interestingly while Vista correctly shrunk its own partition, the remaining free space wasn't correctly detected by the XP installer -- so we're formatting it NTFS as the E: drive and then trying again.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; Reformatting without the quick option and then reinstalling XP worked. What wasn't working correctly is the &lt;a href="http://neosmart.net/dl.php?id=1"&gt;EasyBCD bootloader&lt;/a&gt;: the opening screen that shows you your boot choices didn't appear. According to the instructions above, you're supposed to install XP into the new partition, restart, see a corruption error, boot the Vista install disc to repair the installation and then everything will boot into Vista by default until you install EasyBCD and restart.&lt;br /&gt;&lt;br /&gt;What happened was the Vista disc repaired the MBR, EasyBCD was installed, and when we booted into XP suddenly there was almost no space left on the partition despite no directories being full enough to account for it. Only the manual &lt;kbd&gt;chkdsk /f&lt;/kbd&gt; was able to see what was corrupt and required us to start &lt;kbd&gt;chkdsk&lt;/kbd&gt; on the next startup. &lt;kbd&gt;chkdsk&lt;/kbd&gt; fixed the error, but we noticed that from this point onward the machine booted directly into the XP partition (which disk management shows as the boot partition) without showing the EasyBCD screen. &lt;span style="font-weight: bold;"&gt;Edit:&lt;/span&gt; it turned out that I had misread part of EasyBCD's config screen and set BCD to point directly to E: instead of the bootloader in C:. Once this was corrected it was fine.&lt;br /&gt;&lt;br /&gt;We've got most of the XP drivers in and running, but the FN key does nothing in conjunction with the other keys. Sound works fine, ATI Catalyst drivers detect the 1200x800 screen, USB works (although it seems to think none of the ports are USB 2.0), and of course Bibliofile installed correctly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Edit:&lt;/span&gt; had I paid more attention to the fact that the bundled restore DVD was labeled "A210/A215" and googled A210, I would have noticed that the A210 and the A215 appear to be nearly identical machines excepting that A210s are sold in Canada with only XP preinstalled and A215 are sold in the US with only Vista preinstalled. A210s are with one exception invisible on the US Toshiba support site. Visiting the Canadian Toshiba support site, I found all the XP driver software. A terrible audio stuttering problem was the result not of a wrong audio driver, but the wrong hotkeys driver, which was spiking 17% CPU usage at times. Uninstalling the hotkeys driver and installing the correct one resolved this problem. At this point, the only things not working are XP recognizing blank DVD media (it thinks it's CD media) and the multimedia keys along the top (which AFAIK are the same on the A210). Sound, video, wireless all fine in XP.&lt;br /&gt;&lt;br /&gt;What I &lt;span style="font-style: italic;"&gt;loved&lt;/span&gt; about Vista:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Built-in live repartitioning tool capable of growing and shrinking its own partition.&lt;/span&gt; It leaves GNU parted in the dust.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;When it saw our Mythbox on the network, it immediately recognized it as a media server (with its own special icon) and begged us to install WMP and codecs to connect to it (which our time-tightened priorities did not allow).&lt;/li&gt;&lt;/ul&gt;What I liked about Vista:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It has a filesystem which is starting to look more and more like *nix ones: &lt;kbd&gt;/Users/yourname&lt;/kbd&gt; at the top of the root directory instead of &lt;kbd&gt;/Documents and Settings/yourname&lt;/kbd&gt;. &lt;/li&gt;&lt;li&gt;The search box allows you to enter commands.&lt;/li&gt;&lt;/ul&gt;What I hated about Vista:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Fiscally separating power users from regular users.&lt;/span&gt; I don't give a flying fuck what the EU said, this wasn't necessary, and if I wasn't in a position to get Business on a university discount I'd be calling a class action ambulance chaser by now.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;UAC: the implementation, not the idea.&lt;/span&gt; OS X and Ubuntu require you to enter a password (which can be enough security on a publicly used box set to login without password at startup), and AFAIK set a cookie to remember you've authenticated for the next five minutes or so. A button which says "Do you really want to do this" over and over isn't security, it's Microsoft asking you to turn off the feature.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-2171835167001797818?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/2171835167001797818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=2171835167001797818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2171835167001797818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2171835167001797818'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/02/vista-take-2.html' title='Vista, take 2'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-6207467147211476090</id><published>2008-02-20T08:55:00.001-07:00</published><updated>2008-02-21T12:28:34.657-07:00</updated><title type='text'>I fucking hate Microsoft</title><content type='html'>Ruth catalogs for a small Canadian concern. The application they use is &lt;a href="http://www.tlcdelivers.com/tlc/whatwedo/cataloging.asp"&gt;Bibliofile&lt;/a&gt;, a specialized cataloging app which runs as a frontend to the &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; database. Bibliofile, during installation, creates a background user which does not appear in your menu of login choices. Post-installation, you have to reset the password and change it to never expire. Again, this user does not appear in the regular User Accounts list and must be managed through advanced methods.&lt;br /&gt;&lt;br /&gt;In Windows XP, this is done by going into the User Accounts control panel, clicking the Advanced tab, then clicking the Advanced button under Advanced user management. The Local Users and Groups console appears, you expand the Users folder, select the Bibliofile user, right-click to reset the password, then right-click again to get Properties, tick 'Password never expires', click OK, close the console and you're done. Three minutes, max.&lt;br /&gt;&lt;br /&gt;XP had two versions; XP Home and XP Pro, and the chief difference between them was the complexity of the networking abilities. Managing users and groups was available to both.&lt;br /&gt;&lt;br /&gt;Vista has four versions: Home Basic, Home Premium, Business and Ultimate. Local Users and Groups is only available to Business and Ultimate. The Toshiba Satellite Ruth got from Best Buy ships with Home Premium -- and upgrading to Ultimate costs $159.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-6207467147211476090?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/6207467147211476090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=6207467147211476090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/6207467147211476090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/6207467147211476090'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/02/i-fucking-hate-microsoft.html' title='I fucking hate Microsoft'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/02150440477151727947</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ic8m0jlYPjo/R-Kv-ERjdGI/AAAAAAAAAAM/sDL8GxgVIRw/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-8026677743961466322</id><published>2008-02-19T09:54:00.000-07:00</published><updated>2008-02-19T10:21:18.312-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='repair install XP Vista Toshiba'/><title type='text'>Vista: testing the waters; repair installs on XP SP2</title><content type='html'>This weekend, Ruth's laptop died. A refurb Dell Latitude D800 bought nearly six years ago, it refused to stay powered on Sunday night and I spent much of yesterday morning swapping the HD into my smaller, less powerful Latitude C610 and doing the Repair Install boogie to get it to work there.&lt;br /&gt;&lt;br /&gt;This was a short term solution to allow her to continue working from home, and we needed a laptop for her that had a warranty and a future. Best Buy had a floor clearance model which we snapped up and they are in the process of stripping out the crapware and optimizing it for her -- and it runs Vista. We'll see how this goes.&lt;br /&gt;&lt;br /&gt;The other point to this blog entry is a piece of advice for people who have to do repair installs on XP SP2 (e.g. you're transplanting a boot drive into a new PC): if you've installed IE7, you're going to have problems with Microsoft Update after the repair install. Windows Update/Microsoft Update depend on a working version of IE, and the standard repair install will hose IE by partially replacing it with IE6 but not to the point of actually working. MS recommends &lt;a href="http://support.microsoft.com/kb/917964"&gt;uninstalling IE7 before doing the repair install&lt;/a&gt;, but honestly if you have to do a repair install chances are you can't do that.&lt;br /&gt;&lt;br /&gt;Do the &lt;a href="http://www.microsoft.com/windowsxp/using/helpandsupport/learnmore/tips/doug92.mspx"&gt;standard repair install procedure&lt;/a&gt;. After it's done and the system reboots to the point that you can use the desktop, open Firefox/Opera and go to the Microsoft site to download the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=049C9DBE-3B8E-4F30-8245-9E368D3CDB5A&amp;amp;displaylang=en"&gt;Windows XP Service Pack 2 Network Installation Package for IT Professionals and Developers&lt;/a&gt;. Run it and let it install all of SP2. Sit and watch it, it has some prompts. Reboot when it asks you to.&lt;br /&gt;&lt;br /&gt;At this point you still don't have a viable IE, so go back to the Microsoft site and grab the &lt;a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx"&gt;IE7 installer&lt;/a&gt;. Run it and reboot.&lt;br /&gt;&lt;br /&gt;At this point you'll have a working instance of IE and therefore Windows Update/Microsoft Update will work (and then it will need to install all the patches that came out after SP2). After this you should have a working XP SP2.&lt;br /&gt;&lt;br /&gt;In our case there was another step: Office quietly detected that the hardware had changed since it was last run (remember, the HD was swapped into another PC) and it demanded the Office install CD to be happy. We did and all was good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-8026677743961466322?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/8026677743961466322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=8026677743961466322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/8026677743961466322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/8026677743961466322'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/02/vista-testing-waters-repair-installs-on.html' title='Vista: testing the waters; repair installs on XP SP2'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-4273596189314119858</id><published>2008-02-13T12:03:00.004-07:00</published><updated>2009-11-19T12:50:09.451-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='samba cifs network share gutsy linux documents'/><title type='text'>Using network shares as the default Documents folders in Ubuntu</title><content type='html'>Background: in our corporate environment, we have mapped our work PCs' default locations for MyFiles, My Videos, My Pictures and My Music to a network share which is subdivided by usernames' first letter and then the username itself. The objective here is to get Ubuntu Gutsy to do the same thing just as seamlessly.&lt;br /&gt;&lt;br /&gt;While Gutsy has a "Connect to server" functionality very similar in appearance to OS X's, its actual method of connection (GnomeVFS) is not a true mount and therefore not visible to the Linux filesystem, making it impossible to link local directories to specific subdirectories of shares. This how-to explains the basics of permanently mounting a Samba share and replacing the pertinent user directories with links to the equivalent directories on  that share.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Caveat:&lt;/span&gt; this is aimed at desktop users. Laptop users are &lt;span style="font-style: italic;"&gt;strongly advised&lt;/span&gt; to create a separate account on their laptop beforehand as outside their corporate environment they may have to VPN/PPTP authenticate before they can access network shares.&lt;br /&gt;&lt;h3&gt;Install smbfs support&lt;/h3&gt;&lt;script type="syntaxhighlighter" class="brush: bash"&gt;&lt;![CDATA[sudo apt-get install smbfs]]&gt;&lt;/script&gt;&lt;br /&gt;This will make your system compatible with the Samba/CIFS filesystems. If you have installed Samba file sharing for your folders, this is not the same thing and you'll still need to do the above.&lt;br /&gt;&lt;h3&gt;Create authentication credentials&lt;/h3&gt;&lt;kbd&gt;sudo nano /root/.cifsconnect&lt;/kbd&gt; and add the following lines:&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: bash"&gt;&lt;![CDATA[workgroup=your corporate domainusername=your corporate username, not your Linux usernamepassword=password, same as above]]&gt;&lt;/script&gt;&lt;br /&gt;Save and close out.&lt;br /&gt;&lt;h3&gt;Create a mount point for your share&lt;/h3&gt;Name it after your server (why will become clear soon):&lt;br /&gt;&lt;code&gt;sudo mkdir /media/corporateshares&lt;/code&gt;&lt;br /&gt;&lt;h3&gt;Make Ubuntu automatically mount shares after login&lt;/h3&gt;&lt;kbd&gt;sudo nano /etc/fstab&lt;/kbd&gt; and add the following line at the bottom&lt;br /&gt;&lt;code&gt;//corpshareurl/toplevelshare   /media/corporateshares   cifs   credentials=/root/.cifsconnect   0   0&lt;/code&gt;&lt;br /&gt;Note it says 'cifs' and not 'smbfs'. This is because smbfs won't grant you write/delete access. Log out and back in again. You should now have a corporateshares icon on your desktop. Unlike Windows and OS X, smbfs can't mount subdirectories below the actual share, and in our case our personal directory is below that share.&lt;br /&gt;&lt;h3&gt;Recreate Documents/Pictures/Videos/Music&lt;/h3&gt;Open up your Home folder and drag your Pictures, Videos, and Music folders to the Desktop so their contents don't get deleted. Right-click and remove their entries from the Nautilus sidebar.&lt;br /&gt;&lt;br /&gt;In Terminal, do the following:&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: bash"&gt;&lt;![CDATA[ln -s '/media/corporateshares/path/to/MyFiles/My Videos' ~/Videosln -s '/media/corporateshares/path/to/MyFiles/My Music' ~/Musicln -s '/media/corporateshares/path/to/MyFiles/My Pictures' ~/Picturesln -s '/media/corporateshares/path/to/MyFiles' ~/Documents]]&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;This puts symlinks in where those folders used to be. If you didn't move those folders beforehand, you'll get an error. Now, drag the new Videos/Music/Pictures/Documents folders to the Nautilus sidebar.&lt;br /&gt;&lt;br /&gt;Now reboot your system into Linux to make sure all the settings took.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-4273596189314119858?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/4273596189314119858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=4273596189314119858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/4273596189314119858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/4273596189314119858'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2008/02/using-network-shares-as-default.html' title='Using network shares as the default Documents folders in Ubuntu'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-7861948832444014836</id><published>2007-11-27T11:51:00.001-07:00</published><updated>2009-11-19T13:00:42.383-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu gutsy install customize'/><title type='text'>After the Install: setting up a desktop Ubuntu box (Gutsy 7.10)</title><content type='html'>This is roughly the procedure I use to set up a box for someone new to Ubuntu who'd like to use it right away.&lt;br /&gt;Estimated time: 1 hour on fast DSL connection. Anyone who knows automation procedures would be my friend.&lt;br /&gt;&lt;h2&gt;Software Sources:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Ubuntu Software&lt;/span&gt; tab: Untick &lt;span style="font-style: italic;"&gt;CD&lt;/span&gt; as a source&lt;/li&gt;&lt;li&gt;Tick all other sources&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Third Party&lt;/span&gt; tab: Tick &lt;span style="font-style: italic;"&gt;partner&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Updates&lt;/span&gt; tab: change &lt;span style="font-style: italic;"&gt;Automatic updates&lt;/span&gt; to &lt;span style="font-style: italic;"&gt;Download all updates in the background&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Statistics&lt;/span&gt; tab: tick &lt;span style="font-style: italic;"&gt;Submit statistical information&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Add/Remove:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;ubuntu-restricted-extras&lt;/li&gt;&lt;li&gt;kubuntu-restricted-extras&lt;/li&gt;&lt;li&gt;Amarok&lt;/li&gt;&lt;li&gt;DeVeDe&lt;/li&gt;&lt;li&gt;Xine&lt;/li&gt;&lt;li&gt;VLC&lt;/li&gt;&lt;li&gt;Flickr Uploader&lt;/li&gt;&lt;li&gt;Gmail notifier&lt;/li&gt;&lt;li&gt;Audacity&lt;/li&gt;&lt;li&gt;Bluefish (Quanta Plus installs confusing extras into other menus)&lt;/li&gt;&lt;li&gt;Mplayer&lt;/li&gt;&lt;li&gt;Streamcast&lt;/li&gt;&lt;li&gt;Scite text editor&lt;/li&gt;&lt;li&gt;KmyMoney&lt;/li&gt;&lt;li&gt;Inkscape&lt;/li&gt;&lt;li&gt;Scribus&lt;/li&gt;&lt;li&gt;Dia&lt;/li&gt;&lt;li&gt;Wine&lt;/li&gt;&lt;/ul&gt;The above will take care of multimedia plugins, KDE, msttcorefonts, and enabling any other necessary repositories beyond Canonical.&lt;br /&gt;&lt;h2&gt;Medibuntu:&lt;/h2&gt;&lt;script type="syntaxhighlighter" class="brush: bash"&gt;&lt;![CDATA[sudo wget http://www.medibuntu.org/sources.list.d/gutsy.list -O /etc/apt/sources.list.d/medibuntu.listwget -q http://packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add - &amp;amp;&amp;amp; sudo apt-get updatesudo apt-get install libdvdcss2 w32codecs]]&gt;&lt;/script&gt;&lt;br /&gt;&lt;h2&gt;Peripherals:&lt;/h2&gt;&lt;ul&gt;&lt;li style="font-weight: bold; font-family: arial;"&gt;System → Administration → Restricted Drivers Manager&lt;/li&gt;&lt;li&gt;Check monitor settings in &lt;span style="font-weight: bold;font-family:arial;" &gt;System → Administration → Screens and Graphics&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Check wireless if applicable&lt;/li&gt;&lt;li&gt;Set up any nearby printers, print test page&lt;/li&gt;&lt;li&gt;test nearby USB devices&lt;/li&gt;&lt;li&gt;Make sure &lt;span style="font-weight: bold;font-family:arial;" &gt;System → Preferences → Keyboard&lt;/span&gt; is configured for proper keyboard&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Themes:&lt;/h2&gt;&lt;code&gt;sudo apt-get install blubuntu-look peace-look tropic-look&lt;/code&gt;&lt;br /&gt;&lt;h2&gt;Appearance:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Change &lt;span style="font-weight: bold;font-family:arial;" &gt;Theme&lt;/span&gt; to Blubuntu (note ramifications for OpenOffice)&lt;/li&gt;&lt;li&gt;Change &lt;span style="font-weight: bold;font-family:arial;" &gt;Application/Document/Desktop/Window title&lt;/span&gt; fonts to DejaVu Sans Condensed&lt;/li&gt;&lt;li&gt;If monitor known, alter &lt;span style="font-weight: bold;font-family:arial;" &gt;Rendering&lt;/span&gt; accordingly&lt;/li&gt;&lt;li&gt;Test &lt;span style="font-weight: bold;font-family:arial;" &gt;Visual Effects&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Time and Date Settings:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Set &lt;span style="font-weight: bold;font-family:arial;" &gt;Time Zone&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Configuration&lt;/span&gt;: &lt;span style="font-style: italic;"&gt;Keep synchronized with Internet servers&lt;/span&gt; (install NTP)&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Wine:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;In Firefox, find &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=32bc1bee-a3f9-4c13-9c99-220b62a191ee&amp;amp;displaylang=en"&gt;vcredist_x86.exe&lt;/a&gt; on microsoft.com and install&lt;br /&gt;(this 2Mb download adds a handful of runtime libraries not handled by Wine)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;OpenOffice:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;View&lt;/span&gt;: change icon set back to Human&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Java&lt;/span&gt;: make sure OOo finds JVM&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Fonts&lt;/span&gt;: substitute the following:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Helvetica;"&gt;Helvetica&lt;/span&gt; → &lt;span style="font-family:FreeSans;"&gt;FreeSans&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Bookman;"&gt;Bookman&lt;/span&gt; → &lt;span style="font-family:'URW Bookman L';"&gt;URW Bookman L&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Avant Garde → &lt;span style="font-family:'URW Gothic L';"&gt;URW Gothic L&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:'Century Gothic';"&gt;Century Gothic&lt;/span&gt; → &lt;span style="font-family:'URW Gothic L';"&gt;URW Gothic L&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Optima;"&gt;Optima&lt;/span&gt; → &lt;span style="font-family:'MgOpen Cosmetica';"&gt;MgOpen Cosmetica&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:'Zapf Chancery';"&gt;Zapf Chancery&lt;/span&gt; → &lt;span style="font-family:'URW Chancery L';"&gt;URW Chancery L&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Palatino;"&gt;Palatino&lt;/span&gt; → &lt;span style="font-family:'URW Palladio L';"&gt;URW Palladio L&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:'Palatino Linotype';"&gt;Palatino Linotype&lt;/span&gt; → &lt;span style="font-family:'URW Palladio L';"&gt;URW Palladio L&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:'Book Antiqua';"&gt;Book Antiqua&lt;/span&gt; → &lt;span style="font-family:'URW Palladio L';"&gt;URW Palladio L&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h2&gt;GRUB:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;If dualboot, edit /boot/grub/menu.lst accordingly to correct default boot, hiddenmenu on&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;File Sharing:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Create temp folder on desktop, turn on sharing and install both NFS/Samba sharing&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Passing it on:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Go to ubuntuforums.org and bookmark it to toolbar&lt;/li&gt;&lt;li&gt;Use CD burning app to copy install disc to desktop, check MD5 sum:&lt;br /&gt;&lt;code&gt;9a4ae3cfd68911a861d094ec834c9b48 *ubuntu-7.10-alternate-i386.iso&lt;br /&gt;d2334dbba7313e9abc8c7c072d2af09c *ubuntu-7.10-desktop-i386.iso&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Final checklist:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;GRUB hides menu&lt;/li&gt;&lt;li&gt;Firefox (internet works)&lt;/li&gt;&lt;li&gt;Sound card plays&lt;/li&gt;&lt;li&gt;Audio CDs autoplay in correct player&lt;/li&gt;&lt;li&gt;Audio CD burning app works&lt;/li&gt;&lt;li&gt;DVDs autoplay in correct player (may have to be changed to VLC)&lt;/li&gt;&lt;li&gt;Trash emptied&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-7861948832444014836?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/7861948832444014836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=7861948832444014836' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/7861948832444014836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/7861948832444014836'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2007/11/after-install-setting-up-desktop-ubuntu.html' title='After the Install: setting up a desktop Ubuntu box (Gutsy 7.10)'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-8545092277856529453</id><published>2007-11-24T10:00:00.000-07:00</published><updated>2007-11-24T10:04:32.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wine microsoft'/><title type='text'>Getting Wine to run some of those pesky Windows apps</title><content type='html'>If you've seen this error when trying to run some Win apps you've installed...&lt;br /&gt;&lt;code&gt;err:module:import_dll Library MSVCP80.dll (which is needed by L"C:\\windows\\system32\\daz-qt-mt.dll") not found&lt;br /&gt;err:module:import_dll Library MSVCR80.dll (which is needed by L"C:\\windows\\system32\\daz-qt-mt.dll") not found&lt;/code&gt;&lt;br /&gt;Download and install &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&amp;amp;displaylang=en"&gt;this&lt;/a&gt; to make things all better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-8545092277856529453?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/8545092277856529453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=8545092277856529453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/8545092277856529453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/8545092277856529453'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2007/11/getting-wine-to-run-some-of-those-pesky.html' title='Getting Wine to run some of those pesky Windows apps'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-5583872299279280497</id><published>2007-11-06T15:48:00.000-07:00</published><updated>2008-03-03T12:42:05.475-07:00</updated><title type='text'></title><content type='html'>&lt;p&gt;Notes to myself on laptop hacks necessary after Gutsy upgrade.&lt;/p&gt;&lt;p&gt;&lt;kbd&gt;/etc/acpi/suspend.d/55-down-interfaces.sh&lt;/kbd&gt;&lt;strong&gt;&lt;/strong&gt; had to be edited to move the pccardctl eject line to the end of the file, otherwise resume after suspend doesn't bring the wireless back up.&lt;/p&gt;&lt;p&gt;In general, the update worked pretty well. In the car this afternoon, it occurred to me that it would be a good idea for config files to be flagged in such a way that editing them triggered a 'diary' dialog which encapsulated a diff between it and the previous version, and requested a comment explaining it.&lt;/p&gt;&lt;p&gt;The idea is that after an upgrade or reinstall, you'd be able to track the hacks and customizations you've made.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-5583872299279280497?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/5583872299279280497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=5583872299279280497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/5583872299279280497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/5583872299279280497'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2007/11/notes-to-myself-on-laptop-hacks.html' title=''/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-7298928517225313155</id><published>2007-11-01T12:50:00.000-07:00</published><updated>2007-11-01T13:13:01.827-07:00</updated><title type='text'>Bringing new users to Linux: An Experiment In Progress</title><content type='html'>In the previous post I mentioned that the Dell Dimension that had been my original Myth master backend had outlived its usefulness. Since our home already has four desktops and two laptops (and an ancient PowerMac in mothballs), it was time to decommission the Dimension and find it a new home.&lt;br /&gt;&lt;br /&gt;The Myth hardware (500Gb HD, Hauppauge tuner card, Atheros wifi card) were swapped out into the newer PC, and the original extra cards (Sound Blaster, modem) were put back into it, and after a few glitches it was able to have Gutsy Gibbon installed on its internal 8.5Gb HD. The original intention was to put it up for the taking on the local Freecycle board, but I remembered a friend of ours had had her desktop fried in an electrical storm a year ago and still hadn't replaced hers. When I suggested she take this one, she agreed.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;The goal:&lt;/span&gt; get a non-power user Windows user comfortable with using Ubuntu Linux in her home for web browsing, media playback, etc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;The parameters:&lt;/span&gt; an ancient PC with a 450MHz PIII, 512Mb RAM, 8.5Gb HD, TNT nVidia graphics card predating most OpenGL extensions, Sound Blaster card, and a CD burner. Gutsy Gibbon.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;What I preinstalled:&lt;/span&gt; Flash, Java, media codecs, VLC, XMMS, Streamcast, MSTTcorefonts, GnuCash, Gimp, Inkscape, Flickr Uploader, Gmail tickler, XGalaga, a user account for me and a user account for her (both with sudo access). If her kindergartener/1st grader need accounts they can get non-admin accounts.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;What else I did:&lt;/span&gt; I uninstalled the nvidia-glx-legacy driver, because it disables resolution above 800x600 on the monitor I was using. Added OpenOffice quicklauncher to top bar and ensured OO was aware of the JVM installed.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Observations:&lt;/span&gt; Gutsy was less problematic than I expected for something built for Windows ME in 1999, given Ubuntu's habit of dropping the ball on backwards compatibility with some kinds of hardware. Still, this hardware is running the latest Ubuntu Linux whereas the latest release of Windows would be impossible.&lt;br /&gt;&lt;br /&gt;Assuming she's happy with basic usage, this should be a decent workstation for a while longer. Updates as they occur.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-7298928517225313155?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/7298928517225313155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=7298928517225313155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/7298928517225313155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/7298928517225313155'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2007/11/bringing-new-users-to-linux-experiment.html' title='Bringing new users to Linux: An Experiment In Progress'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-789734216800130805</id><published>2007-10-20T19:54:00.000-07:00</published><updated>2007-11-01T12:50:07.890-07:00</updated><title type='text'>Myth progress report</title><content type='html'>In the past month I picked up an 800MHz GX260 Optiplex for $75 from Campus Surplus and successfully built it into a slave backend for my Myth system. A slave backend is a frontend which has its own tuner. If you only want to watch recordings from the frontend but don't need to watch live TV, all you need to build is a frontend.&lt;br /&gt;&lt;br /&gt;Something perplexed me about this rig once it was built. It could watch recordings from the master backend without the irritating freeze every five seconds we had come to expected from playback on the MBE's own frontend. The chief difference between the two machines was that the MBE was a 450MHz PIII Dell Dimension and the SBE is an 800MHz Celeron. Not being a complete idiot, I concluded that a faster CPU on the MBE would resolve the freeze problem.&lt;br /&gt;&lt;br /&gt;Yesterday, I picked up another identically configured Optiplex GX260 in the same place, this one for $50 (they weren't moving fast enough at $75, apparently), and today I performed the necessary surgery to put the MBE's guts into the GX260. Well, nearly all the guts. I figured the nVidia TNT2 from the Clinton administration wasn't worth moving to the new machine, even if it had integrated Intel graphics. If they were good enough for playback on the SBE, they ought to be good enough for the MBE.&lt;br /&gt;&lt;br /&gt;After rebooting, everything worked... almost. The graphics wouldn't load, even after commenting out the nVidia device in xorg.conf. I ended up copying the appropriate section from the SBE's xorg.conf and it was good to go. Unfortunately, the IR didn't work. This wasn't new: LIRC is often the most fragile part of the Myth ecosystem, and kernel updates have killed it before. In those rare cases, redoing the make/make install process has quickly fixed it. Not this time. Searching dmesg revealed an interesting error:&lt;br /&gt;&lt;code&gt;[   48.302736] lirc_i2c: no version for "lirc_unregister_plugin" found: kernel tainted.&lt;/code&gt;&lt;br /&gt;Taints usually refer to proprietary stuff in the kernel. The wifi card I'm using is Atheros-based, and the kernel driver taints the kernel. But so does the nVidia driver I neglected to remove.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update:&lt;/span&gt; that message is always in dmesg, but I hadn't realized it. The real source of the problem was the nvidia-glx-legacy driver that no longer applied and needed to be removed. Once it was, LIRC started working again just fine.&lt;br /&gt;&lt;br /&gt;The only remaining problem has to do with the multiple tuners across backends. The system is vaguely aware of the SBE's tuner, but never uses it: when the SBE is tuning live channels, it's actually using the MBE's tuner. Giving separate names to the tuners doesn't seem to have fixed it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-789734216800130805?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/789734216800130805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=789734216800130805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/789734216800130805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/789734216800130805'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2007/10/myth-progress-report.html' title='Myth progress report'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-2318666511198963854</id><published>2007-09-24T12:06:00.000-07:00</published><updated>2007-09-25T10:05:25.033-07:00</updated><title type='text'>Modernized iMac redux</title><content type='html'>Long story short: the single mom for whom &lt;a href="http://roazen.blogspot.com/2006/04/its-alive-turning-reva-1998-imac-into.html"&gt;I rebuilt an iMac as a Dapper Kubuntu box&lt;/a&gt; no longer needs it (she inherited a 17" iBook) and gave it to me to do with as I saw fit.&lt;br /&gt;&lt;br /&gt;I reformatted it as a Feisty Ubuntu box to see if the experiment was still worth doing. Remember, this is a souped iMac with a G4 and half a gig RAM. Its video card isn't worth writing home about, but hopefully that shouldn't be an issue. If the experiment is a success, the iMac is going up on the local freecycle.&lt;br /&gt;&lt;br /&gt;Getting it to a desktop-friendly state post-install consisted of the usual PPC hurdle: multimedia support. Fortunately in the time since the last install of April 2006, the PPCcodecs package was written to complement w32codecs, Gnash became a viable product, and IBM updated their PPC JVM to 1.50. As of this writing, it goes without saying that an Ubuntu install should include &lt;a href="https://help.ubuntu.com/community/Medibuntu#head-ba81fac53c96b2b6c2023318fe30eadb8fd4058b-2"&gt;adding Medibuntu repositories&lt;/a&gt;, and especially so for non-x86 architectures. Helix is still not ready as a total replacement solution for the 2005 RealPlayerGold PPC release, so I ended up using RPG10.5 instead with good results.&lt;br /&gt;&lt;br /&gt;Ubuntu's conception of what makes a good baseline desktop is close, but not close enough IMHO. I added Inkscape to complement GIMP, and GnuCash because it should be included with any desktop-oriented distro. If it's good, it deserves more attention, and if it's mediocre, it deserves enough attention to pester the developers to improve it. VLC is the Swiss Army knife of multimedia.&lt;br /&gt;&lt;br /&gt;With these packages installed, I set the machine to upgrade itself to the most recent Gutsy, for a few reasons. One, it pushes the envelope on what this Mac can and cannot do, but more importantly it will highlight some possibly incorrect assumptions on the part of the Ubuntu developers. Feisty does not correctly detect networking on boot with some PPC machines, because they changed out some packages; I'd like to see if Gutsy fixes this. Gutsy by default uses Compiz/Beryl; this iMac is incapable of desktop effects and I want to see if the installer is smart enough to detect it and drop back to regular desktop compositing. Gutsy by default includes a PDF printer device; the libraries necessary to do this in Feisty are deprecated.&lt;br /&gt;&lt;br /&gt;Unfortunately for me, Gutsy (even three weeks from the official deployment date) is not ready for primetime on PPC:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The kernel no longer recognizes all IDE drives by default. initram-fs/module had to be amended to modprobe ide_core and initramfs rebuilt to boot the HD&lt;/li&gt;&lt;li&gt;a core mathematics library (used by Sound control panel) which prior to Gutsy recalled that G3s don't have AltiVec was carelessly rewritten to assume AltiVec. It had to be downgraded to the previous version.&lt;/li&gt;&lt;li&gt;Special and foreign keyboards are reporting all kinds of recognition problems.&lt;/li&gt;&lt;li&gt;Wired network still not being detected on startup.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;I'm reinstalling Feisty and waiting for favorable reports from PPC Ubuntu users. Longterm, support for PPC has issues:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Kernel developers appear to be working with late-model equipment and ignoring/forgetting about first-generation NewWorld hardware specs. From a company where the CEO has an iMac on his desktop, this is either troubling or amusing.&lt;/li&gt;&lt;li&gt;Applet technologies are increasingly not being serviced by their vendors but open-source cloners. While this shouldn't be an issue for the world of GNU/Linux, installation is not always trivial.&lt;/li&gt;&lt;li&gt;Multimedia support seems to be becoming more complicated than it was in Dapper.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;IBM has a vested interest in supporting Linux on PPC, even if they've functionally ended their relationship with non-Cell desktop PPC architecture. One of Debian's strengths is that it serves most architectures no matter how arcane they are. Ubuntu, OTOH, is a business and I can grudgingly understand their need to focus support on live desktop architectures (although ruling out ARM &lt;a href="http://weblog.leapster.org/index.php?/archives/58-Introducing-ARMbuntu-Ubuntu-for-ARM-processors..html"&gt;is probably a mistake&lt;/a&gt;). It may sound like dogma, but it's a strength to support multiple architectures.&lt;br /&gt;&lt;br /&gt;Conclusions: installing Feisty is not a bad move on this Mac. However, upgrading to Gutsy is a wait and see situation given the number of balls dropped.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-2318666511198963854?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/2318666511198963854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=2318666511198963854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2318666511198963854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/2318666511198963854'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2007/09/modernized-imac-redux.html' title='Modernized iMac redux'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-1128587439600327443</id><published>2007-06-11T15:56:00.000-07:00</published><updated>2007-06-11T16:04:01.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml apple dreamweaver'/><title type='text'>Add XML editing support for Apple's PLIST to Dreamweaver CS3</title><content type='html'>Dreamweaver, unlike pretty much every other XML editor I've used, actually reads the DTD line in XML files and automatically imports the rules for the document even if it's on the Internet.&lt;br /&gt;&lt;br /&gt;\Program Files\Adobe\Adobe Dreamweaver CS3\configuration\DocumentTypes\MMDocumentTypes.xml is the document which configures document type by extension for DW, so scroll down to the line that begins with &lt;kbd&gt;&amp;lt;documenttype id="XML"&lt;/kbd&gt;... and look for the &lt;kbd&gt;winfileextension&lt;/kbd&gt; and &lt;kbd&gt;macfileextension&lt;/kbd&gt; attributes. Add &lt;kbd&gt;plist&lt;/kbd&gt; to the comma-delimited list of extensions in both attribute values, save and restart DW.&lt;br /&gt;&lt;br /&gt;Now, when you edit a .plist file, DW will read the DTD and you can edit it with autocomplete for all the correct tags and attributes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-1128587439600327443?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/1128587439600327443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=1128587439600327443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/1128587439600327443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/1128587439600327443'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2007/06/add-xml-editing-support-for-apples.html' title='Add XML editing support for Apple&apos;s PLIST to Dreamweaver CS3'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-4163942680104754063</id><published>2007-04-18T14:58:00.000-07:00</published><updated>2007-04-18T15:30:50.947-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='u3 pendrive inkscape'/><title type='text'>Inkscape for U3</title><content type='html'>Yes, it can be done.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get &lt;a href="http://www.eure.ca/"&gt;PackageFactory For U3&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;Download the &lt;a href="http://superb-west.dl.sourceforge.net/sourceforge/inkscape/Inkscape-0.45.1-1.win32.7z"&gt;standalone Inkscape for Windows archive&lt;/a&gt; and &lt;a href="http://www.7-zip.org/"&gt;7-Zip&lt;/a&gt; to unpack it to your desktop (thanks to &lt;a href="http://pendriveapps.com/2007/04/12/inkscape-portable-vector-graphics-editor/#more-88"&gt;PenDriveApps&lt;/a&gt; for the link).&lt;/li&gt;&lt;li&gt;Open the folder; it should look like this (without the colors and annotations).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_VdOGfMJJ8ZA/RiaYEHdFLXI/AAAAAAAAAAM/FOwMxk0gCt4/s1600-h/inkscapefolders.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://bp1.blogger.com/_VdOGfMJJ8ZA/RiaYEHdFLXI/AAAAAAAAAAM/FOwMxk0gCt4/s320/inkscapefolders.png" alt="" id="BLOGGER_PHOTO_ID_5054894828257881458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Drag the Inkscape.exe (not Inkview.exe) icon to the DROP EXE space, but do not click the CREATE! button. Click Advanced Mode... instead.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add files and folders to the appropriate PackageFactory folders as marked above and go back to the Summary tab.&lt;/li&gt;&lt;li&gt;Click Create a U3P File... and be prepared to wait while it packages the application. Save it to your desktop.&lt;/li&gt;&lt;li&gt;Add it to your U3 drive from the Launchpad's Add Programs (Install From My Computer). &lt;span style="font-style: italic; font-weight: bold;"&gt;Expect it to take up to five minutes&lt;/span&gt;; this ends up using over 200Mb on your U3 pendrive.&lt;/li&gt;&lt;li&gt;You're good to go!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-4163942680104754063?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/4163942680104754063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=4163942680104754063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/4163942680104754063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/4163942680104754063'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2007/04/inkscape-for-u3.html' title='Inkscape for U3'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_VdOGfMJJ8ZA/RiaYEHdFLXI/AAAAAAAAAAM/FOwMxk0gCt4/s72-c/inkscapefolders.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-116112459645527509</id><published>2006-10-17T15:36:00.002-07:00</published><updated>2009-11-19T12:15:09.688-07:00</updated><title type='text'>Bowling for FrontPage users</title><content type='html'>Not everyone in your department has a license for Dreamweaver, and there are FrontPage users who want to edit pages on your server. All fine and dandy, except for one dreaded command in Internet Explorer: "Edit this page in Microsoft Office FrontPage." &lt;br /&gt;&lt;br /&gt;If your pages are 100% HTML with no server-side includes or dynamically generated content, you can stop reading here and go back to watching those funny hamsters dance up and down. If you use a CMS that keeps people with FP away from it, likewise.&lt;br /&gt;&lt;br /&gt;The rest of us are already tearing our hair out at the notion of someone replacing a carefully constructed framework page with static HTML once they're done changing a paragraph.  See, IE merely passes the page's URL to FrontPage's Open File dialog, and then FP retrieves the code as if it were a browser -- because it is. Tell FP to open someone's phpinfo.php file, and the user agent will be &lt;code&gt;Mozilla/4.0 (compatible; MS FrontPage 6.0)&lt;/code&gt;. There's a solution.&lt;br /&gt;&lt;br /&gt;In your .htaccess, add the following lines:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;# Set a trap for people trying to edit pages from IE&lt;br /&gt;SetEnvIf User-Agent FrontPage fpnono&lt;br /&gt;Order Allow,Deny&lt;br /&gt;Allow from all&lt;br /&gt;Deny from env=fpnono&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-116112459645527509?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/116112459645527509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=116112459645527509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/116112459645527509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/116112459645527509'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/10/bowling-for-frontpage-users.html' title='Bowling for FrontPage users'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-115386824934586829</id><published>2006-07-25T15:01:00.001-07:00</published><updated>2010-04-07T16:56:25.674-07:00</updated><title type='text'>Dynamically add/subtract upload fields to form: Chapter 2, the backend</title><content type='html'>In the previous chapter, we covered what it takes to build XHTML-compliant dynamic content inside a webpage. One of the things we did not do was use some kind of &lt;kbd&gt;input&lt;/kbd&gt; element name iteration. We don't need to.&lt;br /&gt;&lt;br /&gt;Let's reconsider the way the &lt;kbd&gt;name&lt;/kbd&gt; attribute behaves in HTML forms. While it's true that XHTML deprecates &lt;kbd&gt;name&lt;/kbd&gt; in favor of &lt;kbd&gt;id&lt;/kbd&gt; in most situations, inside forms &lt;kbd&gt;name&lt;/kbd&gt; still serves a critical function: defining a collection of noncounted elements.&lt;br /&gt;&lt;br /&gt;Forms are all about collections: checkboxes and multiple selections inside a &lt;kbd&gt;select&lt;/kbd&gt; box send collections to CGIs. When multiple checkboxes inside a form share the same name, they send their values as a collection. Checkboxes are &lt;kbd&gt;input&lt;/kbd&gt; elements, and so are file uploads. In other words, an array.&lt;br /&gt;&lt;br /&gt;Lincoln Stein's CGI Perl module is capable of handling these arrays, and has been since version 2.47. The mental block here is assuming that CGI's param method only returns scalars. Fortunately, it doesn't. The problem, however, is that &lt;a target="_blank" href="http://search.cpan.org/~LDS/CGI.pm/CGI.pm#CREATING_A_FILE_UPLOAD_FIELD"&gt;Stein's own documentation&lt;/a&gt; says the following:&lt;br /&gt;&lt;blockquote&gt;To be safe, use the upload() function (new in version 2.47). When called with the name of an upload field, upload() returns a filehandle, or undef if the parameter is not a valid filehandle. &lt;i&gt;In an list context, upload() will return an array of filehandles. This makes it possible to create forms that use the same name for multiple upload fields. This is the recommended idiom.&lt;/i&gt;&lt;/blockquote&gt;This would be beautiful, if it were true. Unfortunately, it is not. &lt;kbd&gt;param()&lt;/kbd&gt; returns lists, &lt;kbd&gt;upload()&lt;/kbd&gt; only returns the first member of the list passed to it. I mention this here because forum posts indicate this has been a land mine for many since &lt;kbd&gt;upload()&lt;/kbd&gt; was introduced a few years back. So, if all the potential upload &lt;kbd&gt;input&lt;/kbd&gt;s have a name attribute of 'mypix', the following neatly harvests them:&lt;br /&gt;&lt;pre class="brush: perl"&gt;@mypictures = param('mypix');&lt;/pre&gt;The array sent to &lt;kbd&gt;param()&lt;/kbd&gt; is merely the upload filenames as filehandles -- to which various methods return metadata for preprocessing. &lt;kbd&gt;uploadInfo($file)-&amp;gt;{'Content-Type'}&lt;/kbd&gt; returns the MIME-type, &lt;kbd&gt;tmpFileName($file)&lt;/kbd&gt; returns the path to the actual file on the server, and there are others you'll see.&lt;br /&gt;&lt;br /&gt;First, a bit of housecleaning. The array &lt;kbd&gt;param()&lt;/kbd&gt; returns is obedient and dumb; it will contain blank elements for every unused &lt;kbd&gt;input&lt;/kbd&gt; field or those filled with nonsense text instead of filepaths. We can neatly purge these with a single statement:&lt;br /&gt;&lt;pre class="brush: perl"&gt;@mypictures = grep {$_} @mypictures;&lt;/pre&gt;The expression tells Perl to return the results of a regex search against non-null members in &lt;kbd&gt;@mypictures&lt;/kbd&gt;. No second temporary array, no loops. &lt;kbd&gt;$_&lt;/kbd&gt; can be your friend. (FYI: your browser is the one purging the nonsense fields, not CGI.pm)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-115386824934586829?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/115386824934586829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=115386824934586829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115386824934586829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115386824934586829'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/07/dynamically-addsubtract-upload-fields_25.html' title='Dynamically add/subtract upload fields to form: Chapter 2, the backend'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-115384697133214000</id><published>2006-07-25T09:53:00.006-07:00</published><updated>2009-11-19T15:50:28.521-07:00</updated><title type='text'>Dynamically add/subtract upload fields to form: Chapter 1, the frontend</title><content type='html'>The assignment: create a webpage which permits faculty to upload digital course reserves materials, using XHTML frontend and Perl backend, then attach those uploads to an email sent to a clearinghouse mailbox.&lt;br /&gt;&lt;br /&gt;The complications:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;backend needs to be agnostic towards how many uploads are being sent, preferably no iteration over numbered &lt;kbd&gt;input name&lt;/kbd&gt; attributes&lt;/li&gt;&lt;li&gt;frontend is proper XHTML, therefore adding new &lt;kbd&gt;input&lt;/kbd&gt; elements can't use &lt;kbd&gt;document.write&lt;/kbd&gt; JavaScript methods&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Let's deal with the frontend first. XHTML deprecates &lt;kbd&gt;document.write&lt;/kbd&gt; because it breaks the idea of XHTML as a properly formed XML document: anything could be inserted into your webpage no matter how well or poorly formed it is. If I'm not mistaken XHTML served as its correct MIMEtype results in browsers throwing errors when they encounter &lt;kbd&gt;document.write&lt;/kbd&gt;.&lt;br /&gt;&lt;br /&gt;Fortunately, XHTML nominally being XML, it supports XML's methods for inserting, removing and changing internal content. Let's take a look at some sample JavaScript:&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: javascript"&gt;&lt;![CDATA[function uploadfields (mycontain,myelement,upcount) {var fset = document.getElementById(mycontain); //fieldset ID used for specificityif (upcount &gt; 0) { //add upload fieldsfor (i=0; i &lt; upcount; i++) {var firel = document.getElementById(myelement); //IDs more reliable between browsers for traversing than childNodes indexesvar klone = firel.cloneNode(false); //create cloned INPUT as an object in memoryklone.value = ''; //clear cloned upload valuevar e = klone.removeAttribute('id'); //remove the unique ID from the original INPUT objectvar e = fset.appendChild(klone); //insert it into the bottom of the parent object}}if (upcount &lt; 0) { //remove all but the first uploadfor (i=upcount; i&lt;0; i++) {if ((fset.hasChildNodes()) &amp;amp;&amp;amp; (fset.lastChild.id != myelement))  // don't delete first element{var x = fset.removeChild(fset.lastChild);}}}}]]&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-115384697133214000?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/115384697133214000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=115384697133214000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115384697133214000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115384697133214000'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/07/dynamically-addsubtract-upload-fields.html' title='Dynamically add/subtract upload fields to form: Chapter 1, the frontend'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-115221001882470289</id><published>2006-07-06T11:20:00.000-07:00</published><updated>2006-07-06T11:20:19.206-07:00</updated><title type='text'>Everything old is new again, or: the future of OS X.</title><content type='html'>An &lt;a href="http://apple.slashdot.org/comments.pl?sid=190413&amp;cid=15666611"&gt;anonymous poster&lt;/a&gt; on Slashdot who claims to have friends in high places in the OS X world makes an interesting speculation on the future of Bootcamp and Windows on Macs. While his contact refuses to say specifically what Apple intends, it's not difficult to read between the lines:&lt;blockquote&gt;Getting to the point, talking to the guy and asking him about the possibility of using my Windows skills to port applications using WINE but with a translated front end on the Mac side. [snip] His response was one of the most direct responses I've ever gotten about future plans without him saying anything. Claimed to have looked into WINE, had it running internally ... and he said that while it was a good product, they weren't going to use 'compromised' APIs to do this. When asked if they had any plans to license or develop any of their own non-compromised APIs, he responded that there was no plans to license anything. It was a pretty strongly worded statement, especially when looking into the point by point claims and what was missing from my original query.&lt;/blockquote&gt;&lt;p&gt;On my G5, Classic runs inside the same partition and shares a similar filesystem to OS X -- by design. Nevertheless, it shares common elements with OS X: the menu bar, the Trash, and a common paradigm for the window GUI even if the chrome is different. X11 lives in what another /.er calls the "penalty box" -- its UI is too decentralized and unpredictable to translate all menus to the top of the screen, so its interface can't be Aqua-fied.&lt;/p&gt;&lt;p&gt;Enter Windows XP. A completely documented API per the 1997 agreement with Microsoft (which granted Apple total access to the Win32 API until 2002, the year &lt;b&gt;after&lt;/b&gt; XP came out), and now Macs have dual Intel processors. It doesn't take much thinking to imagine the second core running XP inside the Windows partition: no hassle of translating Windows apps' expectations of a C:/-based filesystem to the Apple-flavored BSD filesystem, and more importantly, it sandboxes inept and malicious applications' behavior to that partition. If you need to share a file, OS X reads (and writes) NTFS. This last point isn't trivial: Linux is still battling the ogre of full read/write support for NTFS and its partitioning utilities won't grow an NTFS partition.&lt;/p&gt;&lt;p&gt;It isn't virtualization, at least not like we know it. Let's go back nine years to &lt;a href="http://www.lowendmac.com/musings/boxes.shtml"&gt;a column from 1997&lt;/a&gt;, the year of the Apple/Microsoft agreement:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;Remarkably, Apple is running ahead of schedule developing Rhapsody and has already shipped its first developer release and blue box release. (Microsoft, take a hint.) Rhapsody will run on at least two hardware platforms: PowerPC and Intel. It's based on the Mach Unix kernel, either version 2.5 or 3.0. It will allow different levels of OS compatibility, allowing use of the Mac OS and Windows on a Rhapsody core. Remember that the Mach kernel is underneath everything. Symmetric multiprocessing is integral to the kernel, which means that Rhapsody applications will be able to take advantage of multiple processors. &lt;ol&gt;&lt;li&gt;Rhapsody for PowerPC, a PPC-native OS with Blue Box support for Mac applications.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Rhapsody for Intel, an Intel-native OS with Red Box support for Windows applications.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Yellow Box for the Mac OS, an environment for running Rhapsody applications on a Power Mac.&lt;/li&gt;&lt;li&gt;Yellow Box for Windows, an environment for running Rhapsody applications on a Windows-based computer.&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;p&gt;Suddenly, Apple ditching Classic and their continuing support of Mach despite its recent performance speed comparisons makes a little more sense. Blue Box is what currently runs Classic apps on PPC Macs, and capably.&lt;/p&gt;&lt;p&gt;As you can see, this is not virtualization. It's Red Box: XP in place of Classic, running on the second core, APIs gently tweaked to put menus and system tray items at the top of the screen. I suspect this has been in the works for longer than The Switch: in the three years since Apple started selling dual G5s, the amount of Apple software actually exploiting the second processor is minimal at best. In retrospect, an x86 emulator seems like the most likely reason for the spare processor on those doomed PPC platforms, at least until IBM sucker punched Apple by removing the endian-switch register VirtualPC depended on.&lt;/p&gt;&lt;p&gt;Where pundits are right on the money is XP compatibility's impact on Vista: Apple extending the lifespan of XP dilutes Vista's urgency. In an amusing way, this is actually good for both Apple and Microsoft in the mid-term. It makes a Mac more attractive to people who might otherwise complain it doesn't run their favorite games or whatnot. It also buys Microsoft more time to revisit Vista and perhaps negotiate with Apple over how Vista could work as a client OS inside this environment (selling more Vista licenses in the bargain).&lt;/p&gt;&lt;p&gt;This raises an interesting question, however. If Apple's had Red Box in its back pocket all this time, why encourage Boot Camp?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-115221001882470289?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/115221001882470289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=115221001882470289' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115221001882470289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115221001882470289'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/07/everything-old-is-new-again-or-future.html' title='Everything old is new again, or: the future of OS X.'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-115147136486478768</id><published>2006-06-27T22:09:00.000-07:00</published><updated>2006-06-27T22:32:46.346-07:00</updated><title type='text'>More mythjunk part 3</title><content type='html'>Playback was starting to show skips I knew weren't in the recordings -- because those skips were also during live TV and DVD playback. IRC chatting with Myth experts indicated that it was probably interference from commercial flagging jobs on previous recordings. They suggested telling Myth not to run flagging jobs immediately after recordings, and to use mythtv-setup &lt;a href="http://www.gossamer-threads.com/lists/mythtv/users/125362?search_string=flagging;#125362"&gt;to set a specific time (e.g. 3 AM)&lt;/a&gt; to run those.&lt;br /&gt;&lt;br /&gt;They were also kind enough to tell me that my two suggestions were already in development:&lt;ul&gt;&lt;li&gt;Frontend utility for selecting a DVD's worth of recordings and exporting a DVDstyler/DVDauthor XML project file&lt;/li&gt;&lt;li&gt;VLC-based streaming to web interface to make mythfrontend not 100% necessary&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-115147136486478768?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/115147136486478768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=115147136486478768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115147136486478768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115147136486478768'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/06/more-mythjunk-part-3.html' title='More mythjunk part 3'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-115147128689121649</id><published>2006-06-27T22:01:00.000-07:00</published><updated>2006-06-27T22:08:07.663-07:00</updated><title type='text'>More mythjunk</title><content type='html'>Playback was starting to show skips I knew weren't in the recordings -- because those skips were also during live TV and DVD playback. IRC chatting with Myth experts indicated that it was probably interference from commercial flagging jobs on previous recordings. They suggested telling Myth not to run flagging jobs immediately after recordings, and to use mythtv-setup to set a specific time (e.g. 3 AM) to run those.&lt;br /&gt;&lt;br /&gt;They were also kind enough to tell me that my two suggestions were already in development:&lt;ul&gt;&lt;li&gt;Frontend utility for selecting a DVD's worth of recordings and exporting a DVDstyler/DVDauthor XML project file&lt;/li&gt;&lt;li&gt;VLC-based streaming to web interface to make mythfrontend not 100% necessary&lt;/li&gt;&lt;ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-115147128689121649?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/115147128689121649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=115147128689121649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115147128689121649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115147128689121649'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/06/more-mythjunk_27.html' title='More mythjunk'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-115084258607969444</id><published>2006-06-20T15:14:00.000-07:00</published><updated>2006-06-27T22:34:06.340-07:00</updated><title type='text'>Even more mythjunk</title><content type='html'>This is threatening to turn into a MythTV blog. So be it. DVDstyler's a decent substitute for iDVD, and if you're running XP you can play with the windows port. It's not part of the Ubuntu repositories; QDVDauthor is, however.&lt;br /&gt;&lt;br /&gt;Where I'm sucking terribly is simple video editing to nip out the commercials. Low-end utilities like avidemux2 can cut out the commercials, but take a long time to export back to DVD-friendly MPEG2. Cinelerra's awesome if you're looking for Final Cut level editing, which I'm not.&lt;br /&gt;&lt;br /&gt;Also, I've noticed the screen resolution's been frozen to 640x480, a common problem with Ubuntu 6. Since xorg.conf has all the right video modes, I'm wondering if the system is detecting the NTSC converter and assuming the worst.&lt;br /&gt;&lt;br /&gt;The process goes like this: DVDstyler asks you to set a default background image. Then you drop MPEG clips into an area like iMovie's. Drop buttons from the button palette (just like iDVD's) onto the background and right-click them to determine their attributes/actions. I hate to admit it but it's easier to use than iDVD 6.&lt;br /&gt;&lt;br /&gt;When you're satisfied, save the project (a tiny XML file) and click the burn button. Whereas iDVD shows you a faked preview of the DVD first before you're ready to burn, DVDstyler masters the DVD's ISO first and then dumps the ISO into xine for real-world testing before burning. Less immediate gratification, but no room for misguessing the real DVD later.&lt;br /&gt;&lt;br /&gt;Part of the reason I want to fix the screen resolution is because fewer and fewer desktop applications for any platform comfortably fit that size. Dialogs either compress their contents uncomfortably or fall off the borders altogether. It's unpleasant. It also suggests that some interface guidelines should be followed more stringently.&lt;br /&gt;&lt;br /&gt;Ultimately, what I'm aiming for is a new plugin for Myth which will automate creating the DVDstyler XML project files. They're appallingly small and simple, so it seems like a no-brainer to have an interface for creating simple project files to open, tweak and set for burning.&lt;br /&gt;&lt;br /&gt;OK, the first one burned OK after some tweaking. The second one, I tried with QDVDauthor, but was displeased with the number of unimplemented functions and cryptic errors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-115084258607969444?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/115084258607969444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=115084258607969444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115084258607969444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/115084258607969444'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/06/even-more-mythjunk.html' title='Even more mythjunk'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114928552994853649</id><published>2006-06-02T14:53:00.001-07:00</published><updated>2010-04-07T16:57:43.474-07:00</updated><title type='text'>Frying pan not hot enough; reinstalling Myth under Dapper</title><content type='html'>It seems inane to reinstall Breezy just so I can download six months' worth of updates and bolt on the support that Myth needs, when much of it has been put into Dapper.&lt;br /&gt;&lt;br /&gt;So,,,, here goes nothing.&lt;br /&gt;&lt;br /&gt;Lacking the official 6.06 LTS release CD, I attempted to install from the Flight 6 CD and discovered that Espresso couldn't deal with the partitioning scheme I intended (20Gb ext3 for /, 1 Gb swap for swap, and remaining XFS for /home). It screwed up partitioning and the choice of filesystem for the ones it got. &lt;br /&gt;&lt;br /&gt;FYI: if you have a Breezy install CD and you want to get to Dapper, don't use apt-get dist-upgrade like you would with Debian proper. Install Breezy, then go to a terminal and do the following:&lt;br /&gt;&lt;pre class="brush: bash"&gt;sudo apt-get install update-manager&lt;/pre&gt;Breezy's default Update Manager (off the System -- Administration submenu) doesn't have a one-step button for updating between major releases, but the update in the repositories does. As soon as you've done this, go to the Update Manager and click the button for doing the full upgrade. &lt;br /&gt;&lt;br /&gt;And expect it to take 5 hours or so to get all 1000 files on a 256K DSL connection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114928552994853649?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114928552994853649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114928552994853649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114928552994853649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114928552994853649'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/06/frying-pan-not-hot-enough-reinstalling.html' title='Frying pan not hot enough; reinstalling Myth under Dapper'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114913777797247285</id><published>2006-05-31T21:49:00.000-07:00</published><updated>2006-06-20T15:33:52.353-07:00</updated><title type='text'>Trashing your Myth Box, day 6</title><content type='html'>I noticed that video was getting painfully choppy while recording a show this evening and did a little googling to see what could be responsible. It turns out only the boot partition and the DVD burner were set with DMA on, but not the partition where the recordings were. Continued googling explained the hdparm command, and I decided to &lt;kbd&gt;hdparm -d1 /dev/hdc&lt;/kbd&gt; to change this. It worked, but I went overboard and did an &lt;kbd&gt;hdparm -d1 /dev/hd? all&lt;/kbd&gt; while everything else was running. The terminal froze, Myth's frontend quit and would not restart, and when I rebooted the Dimension wouldn't recognize the OS. &lt;br /&gt;&lt;br /&gt;For a change I actually looked things up before freaking too badly and making it worse. I did, however, boot a Knoppix CD and burn the largest downloads behind the install to a DVD in case I had to start over. &lt;a href="http://infohost.nmt.edu/~armiller/dell/xpst800/codemessxps.htm"&gt;This page&lt;/a&gt; explains a little of what I have ahead of me.&lt;br /&gt;&lt;br /&gt;Edit: There are times when a little more thinking would have been smarter. In my zeal to make everything all better, I forgot that individual partitions don't need their own DMA settings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114913777797247285?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114913777797247285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114913777797247285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114913777797247285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114913777797247285'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/05/trashing-your-myth-box-day-6.html' title='Trashing your Myth Box, day 6'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114849320657516104</id><published>2006-05-24T10:14:00.000-07:00</published><updated>2006-05-24T10:53:27.120-07:00</updated><title type='text'>Building my own MythTV, day 3</title><content type='html'>The symbolic link hack worked. The backend and frontend are now both 0.19, and AFAIK the entire system works: mythfilldatabase correctly loads the schedule, the program guide shows it, live TV is functional and the recordings are being recorded.&lt;br /&gt;&lt;br /&gt;A few tweaks were necessary, however:&lt;ul&gt;&lt;li&gt;Ubuntu's default action when DVDs are inserted is bringing up Totem (and it has another default for CDs), and those defaults had to be disabled.&lt;/li&gt;&lt;li&gt;Most importantly, the default location for the recordings needs to be reset in mythtv-setup. If you don't, it defaults to /var/lib/mythtv, which is outside the giant XFS partition we set up specifically for this purpose. Everything under /home is on that partition, so I created /home/mythtv/recordings and set mythtv to store recordings there instead.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Tweaks yet to do:&lt;ul&gt;&lt;li&gt;Figure out how to stop mythbackend without killing its process.&lt;/li&gt;&lt;li&gt;Reconfigure Myth to use 0.19's own DVD player instead of mplayer (which skips menus)&lt;/li&gt;&lt;li&gt;Increase mythbrowser's default font size. Mythbrowser's cookie messages imply it's Konqueror-based.&lt;/li&gt;&lt;li&gt;Edit channels to show callsigns.&lt;/li&gt;&lt;li&gt;Install xmame and configure it to recognize the remote's keys as the default input device.&lt;/li&gt;&lt;li&gt;Map color keys to alt-F1 and alt-Tab for quickly accessing Gnome menus/switching windows, unless there's something else already doing this in Myth.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Overall, it was an interesting experience comparable to installing Debian stable (Woody) for the first time: a steep learning curve, a lot of configuration, and a reasonable amount of burr-sanding at the end. Mistakes, reinstallations, and a ton of Googling. If I had to do this again on another box, it would take less time, but I'd also insist on a T1 and &amp;gt;=1GHz CPU as the process involves downloading over 100Mb of source and binaries, then compiling them. If I were an installer who favored Ubuntu over KnoppMyth, I'd probably put all the files on a 1Gb memory stick along with a copy of his webpage.&lt;br /&gt;&lt;br /&gt;A recap: Hyams' instructions are good, but he clearly got tired of writing them towards the end. His chief error in the documentation is the one where he assumes the myPHPadmin root password becomes mythconverg's password in all the config files. mySQL's permissions model changed after that documentation was written, and mythconverg has its own randomly generated password visible in Myth's own settings page. Do not change that password. Write it down and insert it into all the config files that default to 'mythtv' for a database password. &lt;br /&gt;&lt;br /&gt;His startup script for forcing the 0.19 PATH to the beginning of $PATH does not work. It just doesn't. Accept this and do what I did to ensure 0.18 is neutered. Arguably the test of how well I understood his instructions would be rewriting them to omit the entire 0.18 installation altogether. &lt;br /&gt;&lt;br /&gt;Perhaps 0.19 will make it to the Dapper repositories and make all that unnecessary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114849320657516104?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114849320657516104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114849320657516104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114849320657516104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114849320657516104'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/05/building-my-own-mythtv-day-3.html' title='Building my own MythTV, day 3'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114841733442174634</id><published>2006-05-23T13:09:00.000-07:00</published><updated>2006-05-24T10:14:26.726-07:00</updated><title type='text'>Building my own MythTV, day 2</title><content type='html'>The software install worked, technically speaking. Unfortunately the channel listings and program guide don't work. Hyams' instructions blithely assume the phpMyAdmin setup's new root password is the same pw used by everything in MySQL, and that just ain't so. The table mythconverg that the mythtv user creates is automatically assigned a random 8-letter alpha password, and changing it in the PHP config files merely results in errors (which is what happened the first night I tried installing MythTV). The password is correct, the permissions are somehow messed up.&lt;br /&gt;&lt;br /&gt;For the hell of it I'm going forward and upgrading to 0.19. As the instructions point out, MythTV-0.19 is a manual compile (estimated at 15 minutes, but still going after 2 hours on the 450MHz PIII). Compiling the plugins took another hour.&lt;br /&gt;&lt;br /&gt;The biggest pain in the ass so far has been getting the box to forget there's an older version of Myth on the system and to exclusively point to the new one. I'm giving up on being nice and trying to get Hyams' PATH script to point the system to the new binaries; instead, I'm renaming the old binaries in /usr/bin, then replacing them with symbolic links to the new ones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114841733442174634?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114841733442174634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114841733442174634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114841733442174634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114841733442174634'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/05/building-my-own-mythtv-day-2_23.html' title='Building my own MythTV, day 2'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114824966126313415</id><published>2006-05-21T15:03:00.000-07:00</published><updated>2006-05-22T10:26:21.880-07:00</updated><title type='text'>Building my own MythTV, day 1</title><content type='html'>Long and short: in return for moving data off an old PC's HD to the owner's new HD, I inherited the PC. It so happens that it has 512Mb RAM, 200Gb HD, a DVD burner, an nVidia card and a mediocre 450MHz slot 1 PIII.&lt;br /&gt;&lt;br /&gt;In other words, a reasonable candidate for a Linux PVR. Since the box was free, my objective is to get the whole thing done for less than $200. &lt;br /&gt;&lt;br /&gt;Myth is a little different than your regular Linux distro. ext3 is apparently unsuitable for large files like the ones Myth creates and deletes, so the instructions say to set aside a separate partition in XFS. I'm following &lt;a href="http://s91928265.onlinehome.us/hfamily/mythtv/myth_ubuntu.html"&gt;Daniel Hyams'&lt;/a&gt; instructions because they're made for the PVR card I bought, the $80 Hauppauge PVR-150. Nota Bene: I fucking hate Fry's. If I'd gone into CompUSA first I would have been done with my shopping and left with my dignity inside twenty minutes. &lt;br /&gt;&lt;br /&gt;The Hauppauge series are prized in part because they have the Conexant MPEG2 encoder chip that relieves realtime load from your CPU. The PVR-150 uses the same "microphone" IR receiver the AlchemyTV DVR does, except that it also features a separate IR transmitter as well (for controlling set-tops).&lt;br /&gt;&lt;br /&gt;Getting the video out to the ancient 19" Magnavox is another issue. This TV was bought to watch President Bush debate. That is, President Bush debating then-Governor Clinton, so it's not going to have a DV or VGA input on its back. Because we're doing this on the cheap, replacing the video card is out of the question. Fortunately, we've already got a Radio Shack RF converter connected to the television for the DVD player, so what we need is VGA to SVHS. Enter the &lt;a href="http://www.siliconpopculture.com/review/57_0_2_0_M/"&gt;Grandtek GEZ-1000&lt;/a&gt;, a $40 VGA-SVHS cable which encapsulates the converter circuitry and uses a USB cable to leech the 5v it needs from your computer instead of requiring a brick. These were clearly designed for notebook computers, but it's hard to argue with something that eats less space and costs less than the boxes that do the same thing. Had I been thinking more clearly by the time I was at CompUSA I would have purchased one there; I ended up ordering one online. It'll arrive in the mail in a few days and I can test it then.&lt;br /&gt;&lt;br /&gt;Since the TV's on the other end of the room from the router, for now the internet connection will be managed by the AirPort Express we installed last year. I'll have to look into whether the kernel is competent at managing a generic wifi card before sinking $70 into that.&lt;br /&gt;&lt;br /&gt;Some considerations for those who'd follow in my footsteps:&lt;ol&gt;&lt;li&gt;Hyams' instructions were written soon after the Breezy release, so parts of his timetable are optimistic. If you're not on a T1, they're extremely optimistic; prepare to wait over an hour for &lt;kbd&gt;apt-get update; apt-get upgrade&lt;/kbd&gt; to finish. There are a few other places where the downloads are either large or slow depending on connection.&lt;/li&gt;&lt;li&gt;I prefer KDE to Gnome. That said, the instructions are optimized for Gnome when it comes to configuring startup and repairing broken scripts that Myth installs. Accept this, use Ubuntu not Kubuntu, and move on.&lt;/li&gt;&lt;li&gt;This process involves creating a lot of users and passwords in various places. Keep a paper notepad nearby and take notes. Resist the impulse to use the same uname/pw everywhere; this is a box with a live internet connection.&lt;/li&gt;&lt;li&gt;There are two PVR-150 models out there; the one with "MCE" in the title is the one you don't want. It's built for Windows XP Media Center Edition and doesn't have a remote. While it has a few more ports on the back, it doesn't have video out either. Skip it and go for the plain PVR-150; it's cheaper as well.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114824966126313415?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114824966126313415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114824966126313415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114824966126313415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114824966126313415'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/05/building-my-own-mythtv-day-1.html' title='Building my own MythTV, day 1'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114676473869437212</id><published>2006-05-04T10:32:00.000-07:00</published><updated>2006-05-04T10:58:12.950-07:00</updated><title type='text'>Making Acrobat Reader 7 save fillable PDFs</title><content type='html'>I have a flexible spending account with an accounting firm that uses PDF forms. They aren't fillable. At work, I have a license for Acrobat Professional, so it's not rocket science to put form fields on it (and in particular, script them to tote up the receipts I'm filing). This morning, my printer ink carts went belly-up and I couldn't print the form I intended to sign, scan and fax to the accounting firm.&lt;br /&gt;&lt;br /&gt;Bummer. See, at home, I don't have a license for Acrobat Pro, so the best I can do is fill out the form in Acrobat Reader (because in Tiger, Preview ignores the calculation scripts and worse, scales the field font size too large to fit them) -- but AR won't let you save the file, and it's just bright enough to prevent you from printing to PDF (which, IMO, is criminal misconduct).&lt;br /&gt;&lt;br /&gt;There are two solutions to this problem depending on your platform. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;OS X:&lt;/strong&gt; AR 7 &lt;em&gt;isn't&lt;/em&gt; bright enough to prevent you from printing to PostScript proper, which Preview is perfectly capable of reading, converting back to PDF and saving back to that format.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Windows:&lt;/strong&gt; If you don't have &lt;a href="http://sourceforge.net/projects/pdfcreator/"&gt;PDFcreator&lt;/a&gt; installed as a printer driver on your box, shame on you. If you have CutePDF, double shame: you're using a crippled version meant to sell you a "complete" PDF printer driver which has nearly nothing that PDFcreator doesn't already have. AR 7 on Windows is not smart enough to recognize one printer driver from another, and will be happy to let you print your PDF to another PDF.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Linux:&lt;/strong&gt; Most KDE distros have a PDF printer driver already configured. Follow above instructions. &lt;br /&gt;&lt;br /&gt;Now, I have a filled PDF I can keep in my records, bring to work, print and sign.&lt;br /&gt;&lt;br /&gt;Dear Adobe: you created fillable forms and hard-sold them on us. Quit pretending the most basic utility (saving them) is a premium feature and we won't have to own your sorry asses like this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114676473869437212?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114676473869437212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114676473869437212' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114676473869437212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114676473869437212'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/05/making-acrobat-reader-7-save-fillable.html' title='Making Acrobat Reader 7 save fillable PDFs'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114540077795623595</id><published>2006-04-18T15:19:00.000-07:00</published><updated>2006-05-03T22:06:24.236-07:00</updated><title type='text'>It's Alive: Turning a rev.a 1998 iMac into a Kubuntu box</title><content type='html'>&lt;span style="font-weight:bold;"&gt;The situation:&lt;/span&gt; Single mom in her early 30s has a hand-me-down first-generation G3 iMac with OS X 10.1 and IE 5.2 still on it. No suitable FOSS that's compatible with 10.1.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bad news:&lt;/span&gt; Oldest iMac ever (tray-loading, IR port on front, no DVD, CD-ROM only). OS X refuses to recognize a partition larger than 8Gb. Internal clock battery died years ago. The infamous round single-button mouse.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Good news:&lt;/span&gt; previous owner pimped drive up to 16Gb, RAM to to 512Mb and original 233MHz G3 to &lt;a href="http://www.sonnettech.com/product/harmoni_g3.html"&gt;Sonnet Harmoni 500MHz G3 upgrade&lt;/a&gt; which also included FireWire. The original Apple iMac service manual is available online. Prognosis: an acceptable candidate for desktop Linux.&lt;br /&gt;&lt;br /&gt;After backing up all the original data (which consisted of OS X, a slew of ancient Classic Adobe applications and a dog's breakfast of MP3s), it was time to figure out if the box could actually run a modern Linux distro for PPC.&lt;br /&gt;&lt;br /&gt;PowerPC leaves you with few choices for distros, and they all divide between Debian and RedHat variants. The latter are provided by Yellow Dog Linux, and my feeling is that spending money on a port of a free x86 distro rather than RHEL is money not well spent.&lt;br /&gt;&lt;br /&gt;The "customer" doesn't know OS X deeply and doesn't need to. The behavior she expects is that when she turns it on, the machine boots and logs in for her, no password needed. For this reason, I chose Kubuntu. Ubuntu because of its OS X-like single-user mode, and Kubuntu because KDE's behavior is a smaller learning curve for someone coming to Linux from Win/OS X. In a moment of stupidity I chose Dapper Flight 6, but later reinstalled Breezy 5.10.&lt;br /&gt;&lt;br /&gt;Ironically, the Ubuntu PPC installers are peaches and cream compared to their liveCD counterparts which have issues with recognizing some less popular hardware. OS X's 8Gb maximum partition nonsense is a limitation of 10.1 on these iMacs, not Open Firmware, so it was a joy to let the partitioner blow away the entire HD and redo it as one large ext3 partition and a few tiny swaps. Breezy went from booting the CD to first GUI desktop login in less than 60 minutes. Realistically the only shorter install time I've had is from the install DVD and it isn't dramatically so.&lt;br /&gt;&lt;br /&gt;Now, the real work. Since the user is not a computer expert and has no reason to become one, the interface needs to be finessed back to what she expected from OS X. KDE's defaults (and Kubuntu's) are well-intentioned, but not ideal for a switcher. What I &lt;span style="font-style:italic;"&gt;won't&lt;/span&gt; be doing is theming the distro to an imitation of OS X. Nor will I try to move all the menus back to the top of the screen a la OS X's implementation of Fitts' Law. Gnome apps might comply with that setting, but many others don't, and this is a KDE installation. The other KDEisms need tweaking, though. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;UI behavior.&lt;/span&gt; By default, Kubuntu uses single-click to open icons (as does Knoppix), and its UI leaves scrollbars with both arrows at one end (which is configurable in OS X but not usually default). These are reset.&lt;br /&gt;&lt;br /&gt;As an experiment, I replaced KDE's use of &lt;a style="font-family:'DejaVu Sans','Bitstream Vera Sans',Verdana" href="http://dejavu.sourceforge.net/"&gt;DejaVu Sans&lt;/a&gt; everywhere with a generic TrueType version of &lt;a style="font-family:'Lucida Grande','Lucida Sans','Lucida Sans Unicode';" href="http://en.wikipedia.org/wiki/Lucida_Grande"&gt;Lucida Grande&lt;/a&gt; (OS X's system font), only to discover it looked too tiny and the letterspacing was too wide. Moreover, DejaVu Sans is the master Unicode font for Kubuntu the way &lt;a style="font-family:'Arial Unicode MS',Arial" href="http://en.wikipedia.org/wiki/Arial_Unicode_MS"&gt;Arial Unicode MS&lt;/a&gt; and the "real" Lucida Grande are for Win/OS X respectively. Back to DVS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Single user mode.&lt;/span&gt; Into User settings, the single user was set to the default login, "no login" mode. I hear you pulling your hair out there; you can stop now. In order to change any setting or install any software, she will have to first enter her password into a dialog (a la OS X), which the other members of her household will never see. sudo without the CLI.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Real world interoperability.&lt;/span&gt; This reminded me; a basic desktop user really can't thumb their noses at the base Microsoft fonts if they expect to share office documents. On x86 platforms, this is usually a matter of installing the &lt;a href="http://corefonts.sourceforge.net/"&gt;msttcorefonts&lt;/a&gt; package from your choice of apt manager. Enter adept, Kubuntu's alternative to synaptic. As it so happens, OpenOffice.org is smart enough to detect that you've installed the MS core fonts and quietly resets its default fonts to Times and Arial. &lt;br /&gt;&lt;br /&gt;Media players need to be configured to permit browsers to handle embedded movies. mplayer is my weapon of choice here, and fortunately Breezy makes its installation less painful than Dapper's. A blog entry explains that an "ugly" gstream library makes it possible for rhythmbox to play MP3s and it's installed without incident.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Core apps.&lt;/span&gt; Regionalization was fine tuned, time servers pointed at, a network printer created and tested, and now it's time for the apps Kubuntu forgot to install: GnuCash, Gimp, Inkscape, Firefox, vlc. The Ubuntu team ships OOo with ambiguous, indistinct application icons for reasons I don't understand but assume are similar to Firefox being installed with the generic Deer Park logo. Those of you who point out that Kub has bitmap versions of the correct logos are advised to consider what happens when you put apps with those bitmaps on the Kicker and mouse over them: a grainy lo-res version appears in the tooltip. Bad marketing, no finesse. &lt;br /&gt;&lt;br /&gt;We can fix that by getting SVG versions of those application logos. Doug Schepers redrafted the classic &lt;a href="http://www.hicksdesign.co.uk/"&gt;Jon Hicks&lt;/a&gt; Firefox logo in Illustrator and &lt;a href="http://www.marcreichelt.de/spezial/firefox/firefox.svg"&gt;exported it to SVG&lt;/a&gt;. Downloaded and sudo mv'ed to a new /usr/share/icons/ directory, we can choose it as the K menu icon and then drop it into the Kicker. OpenOffice was a more troublesome beast: finding SVG versions of the apps logos eventually yielded &lt;a href="http://marketing.openoffice.org/files/documents/70/2912/2.0_icons.svg"&gt;a single SVG&lt;/a&gt; with all application icons in one document. If it weren't late at night I'd probably have found them in separate documents somewhere, but I couldn't, so I used Inkscape to split them into individual compressed SVGs and moved them to the same custom /usr/share/icons/ directory.&lt;br /&gt;&lt;br /&gt;vlc is a more problematic beast, which surprised me considering the number of x86isms that mplayer requires and vlc doesn't, but it should be done soon. Flash is a problem because Macrodobe isn't shipping a PPC plugin for Linux yet and may never do so at this rate. Development of OSS SWF players has stagnated.&lt;br /&gt;&lt;br /&gt;Summary: if you want to switch a user, make them comfortable first and preach FOSS later. This means the following:&lt;ul&gt;&lt;li&gt;Crap-ugly Bitstream serif fonts are a non-starter. Get fonts they're familiar with, because they'll be working with them sooner or later.&lt;/li&gt;&lt;li&gt;A basement-dweller's conception of what makes a better default UI is alienating. Single-clicks to select, double-clicks to open. If I wanted to sell GNOME, I'd install Ubuntu not Kubuntu.&lt;/li&gt;&lt;li&gt;Installers don't get everything right. Clean up font smoothing, check localization, make icons familiar. Set energy saver modes and put in a basic screen saver.&lt;/li&gt;&lt;li&gt;Install media players and hook them up to the browsers.&lt;/li&gt;&lt;li&gt;Pretest their hardware. Put in the most obscure music CD you can find and see if it plays &lt;span style="font-style:italic;"&gt;and&lt;/span&gt; if the OS can guess what the title is. Repeat with DVD. Burn a data CD with K3B, then an audio CD. Check onboard microphones, IR, wireless, Bluetooth, etc.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114540077795623595?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114540077795623595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114540077795623595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114540077795623595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114540077795623595'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/04/its-alive-turning-reva-1998-imac-into.html' title='It&apos;s Alive: Turning a rev.a 1998 iMac into a Kubuntu box'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114490363849091578</id><published>2006-04-12T21:45:00.000-07:00</published><updated>2006-04-17T14:26:39.113-07:00</updated><title type='text'>A couple good things to say about Ubuntu as well.</title><content type='html'>As Debian distros go, it's the easiest and fastest to install from an installer CD. Least number of irritating questions about hardware, and I was able to go from boot to go in 60 minutes.&lt;br /&gt;&lt;br /&gt;edit: The installer seems smarter in some cases than the liveCD when it comes to detecting hardware. Older iMacs have a few distinctly different hardware configurations/chipsets than later G4/G5s, but they're IMO the most likely PPC candidates for Ubuntu and detection of their hardware should be a higher priority than comments to the effect of "well, they'll all be dead in a few months anyway, why bother."&lt;br /&gt;&lt;br /&gt;In particular, booting an Ubuntu liveCD on an older iMac means having to CTRL-ALT-F1 to stop the X server, edit xorg.conf to change the horiz/vert sync settings, and manually restart the display manager.&lt;br /&gt;&lt;br /&gt;Once you're there, if your network card wasn't detected properly, you have no eth0 at all. You'll have to drop down into the kernel's /modules/devices/net directory, guess which .ko to insmod, and then dhclient to rebuild the network devices before you can so much as ping your router.&lt;br /&gt;&lt;br /&gt;Insofar as a liveCD is supposed to A) impress people with your platform and B) predict whether a given computer can run that distro, this is short-sighted to say the least.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114490363849091578?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114490363849091578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114490363849091578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114490363849091578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114490363849091578'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/04/couple-good-things-to-say-about-ubuntu.html' title='A couple good things to say about Ubuntu as well.'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114472587356770354</id><published>2006-04-10T19:52:00.000-07:00</published><updated>2006-04-17T14:09:27.010-07:00</updated><title type='text'>Cringely Pinches His Loaf</title><content type='html'>Columnists and pundits in the computer industry are somewhere near snot in the great scheme of things. You know it serves a purpose but you have a hard time explaining what it is, even to yourself.&lt;br /&gt;&lt;br /&gt;Columnists divide among predictable lines.&lt;br /&gt;&lt;br /&gt;The Lickspittle. Paul Thurrott, railing against IE7 one minute as if he were web standards' Joan of Arc -- but as soon as he gets an exclusive on the Beta 2 preview, conveniently forgetting every critique.&lt;br /&gt;&lt;br /&gt;The "Consultant." Rob Enderle, making predictions which have no foundation in reality or precedent, but whose outcomes invariably favor his clients and his own stock portfolio, if the two can be considered separate entities. &lt;br /&gt;&lt;br /&gt;These two are maddening because reading their idiocy, you get the impression they genuinely believe what they write, despite the absence of facts or a frightening inconstency with what was said just a week before.&lt;br /&gt;&lt;br /&gt;And then there's The Dvorak School of faux rockstar gonzo journalism. Bloviate as outrageously as possible as often as possible and your editors will be too afraid to fire you for incompetence. Politics without the risk of accountability. Unfortunately guys like Dvorak don't have the balls to eat a shotgun like Hunter Thompson did when he realized he peaked years ago.&lt;br /&gt;&lt;br /&gt;Cringely started out reasonably scholarly, but realized that these days farting gets attention. This week's elevator SBD is no exception. Boot Camp works, nothing useful to write about it because it works, just a plethora of assholes posting photos of XP and Vista running on iMacs. Think think think Cringely, the PT Cruiser isn't paying or itself.&lt;br /&gt;&lt;br /&gt;Wait! Got it. Predict that Apple will turn around and sell OS X for whiteboxes. Never mind the fact that we all know Microsoft and Linux have had to spend decades working against guessing what the hardware can and can't do. Forget everything we understand about Apple's only economic model, the one they founded the company on and the one which has sustained the company through three turbulent leaderships and two platform changes.&lt;br /&gt;&lt;br /&gt;Here's what Robert X. Cringely knows, but also knows he can't sell columns telling you:&lt;ol&gt;&lt;li&gt;Apple makes its profits selling hardware bundled with software. The clones were killed when it became clear the cloners were directly competing with Apple's desktop market instead of filling the server market they were chartered to make affordable.&lt;/li&gt;&lt;li&gt;Apple sells only enough software to demonstrate proof of concept (barring niche video apps) and allows third party vendors to build their empires writing the killer apps. The number of third-party software packages Apple's poached over the years is miniscule compared to Microsoft's seemingly insatiable need to fill and dominate every Windows market.&lt;/li&gt;&lt;li&gt;Apple avoids any distribution channels which don't show instantaneous and accurate sales figures. iMacs left Sears, iPods left HP, and Apple would rather pay the most outrageous storefront leases than trust another company to sell their products again.&lt;/li&gt;&lt;li&gt;Apple's hardware partnerships are complex and many-reasoned, but largely depend on what it does for Apple's margins. IBM might have been able to deliver a laptop G5 by 2007, but they could never fab entire laptops for what Intel was offering. And Lenovo was the writing on the wall for IBM's future as a hardware company.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The above can be summarized as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Entrenchment is more important than short-term growth.&lt;/li&gt;&lt;li&gt;Depend totally on no one else's frameworks, technological or economic.&lt;/li&gt;&lt;li&gt;Let your product differentiate itself and others will evangelize it for you.&lt;/li&gt;&lt;li&gt;Smile a lot.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Dear "Bob," let's cut to the chase. The Internet is a completely valid medium for doing what you're doing right now. The part you're missing is that usually, a webcam and a credit card are involved, and you're expected to lick the jizz off your fingers afterward.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114472587356770354?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114472587356770354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114472587356770354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114472587356770354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114472587356770354'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/04/cringely-pinches-his-loaf.html' title='Cringely Pinches His Loaf'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114461883601858056</id><published>2006-04-09T14:08:00.000-07:00</published><updated>2006-04-09T14:46:31.243-07:00</updated><title type='text'>Love Letter to Dapper Flight 6 team</title><content type='html'>Preface: this distro is supposed to be finalized in less than sixty days. Were this further in the future, my comments would be less barbed.&lt;ol&gt;&lt;li&gt;A liveCD which can't manage to load the most common wireless chipset on the PPC platform (Broadcom aka Airport) is a lousy demonstration of "it just works."&lt;/li&gt;&lt;li&gt;While the default behavior of the trackpad being a click device in Flight 5 was difficult for some iBook users, at least the tracking was comparable to OS X/Windows. Flight 6's tracking on PPC is ridiculously slow and inexplicable compared to the x86 Flight 6 Ubuntu release. Knock it off.&lt;/li&gt;&lt;li&gt;Kubuntu's default text rendering is the blockiest possible for LCD displays; replace it with regular aliased bitmaps or get a clue.&lt;/li&gt;&lt;li&gt;The Kubuntu wireless configurator fails on both platforms (x86/Intel Pro chipsets, iBook/Broadcom); it momentarily enables eth1 and then disables it immediately afterward.&lt;/li&gt;&lt;li&gt;If you can't get Espresso out of the gate for Kubuntu, put a more informative message at startup that this isn't even fractionally functional compared to the same app in the Ubuntu release, not a copy of the same message (FYI the Ubuntu Espresso is fully functional on x86).&lt;/li&gt;&lt;/ol&gt;The above can be summed up thusly:&lt;ul&gt;&lt;li&gt;The most common hardware for a platform should be anticipated and implemented first, not promised later.&lt;/li&gt;&lt;li&gt;A distro release's interface using the same libraries should behave the same on two different platforms.&lt;/li&gt;&lt;li&gt;Linus was right about Gnome. Implementing Kubuntu in a half-assed way years after Slax, Knoppix and others finessed KDE live distros says more about Ubuntu's politics/technical skills than KDE's relative merits as a windowing environment.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Either buy into the idea of "the customer's always right" re: platforms and windowing managers or stop paying lip service to the idea of Ubuntu as something other than an x86/Gnome distro.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114461883601858056?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114461883601858056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114461883601858056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114461883601858056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114461883601858056'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/04/love-letter-to-dapper-flight-6-team.html' title='Love Letter to Dapper Flight 6 team'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114297780518343478</id><published>2006-03-21T14:24:00.002-07:00</published><updated>2010-04-07T17:01:04.380-07:00</updated><title type='text'>Quick Launch keeps disappearing -- no more</title><content type='html'>OK, you're already familiar with the registry hacks that had to do with spyware, and you've done your damndest to filter them out of Google because that wasn't your problem, was it.&lt;br /&gt;&lt;br /&gt;It wasn't in my case, either. I'd log out of XP, then log back in and the space for the Quick Launch was there but the icons weren't. Turn off the QL toolbar and turn it back on, and there they were. Royal PITA to do every time you log in.&lt;br /&gt;&lt;br /&gt;Chances are good if this is your problem, that you work in a networked situation where the sysadmins have put your Application Data folder on a network share that's mounted at startup. Trouble is, the moment at which Windows needs to retrieve that Quick Launch folder probably precedes the moment that Windows maps the share to a drive -- and the registry settings which tell Windows where to find the QL use (you guessed it) a drive address. This is the same reason that wallpapers I select from Firefox don't return on startup; the Quick Launch shortcuts folder and the FF wallpaper are both stored in subfolders of Application Data (which on non-networked computers is neatly tucked into your &lt;code&gt;C:\Documents and Settings&lt;/code&gt; directory). In fact, Quick Launch is actually application data belonging to Internet Explorer.&lt;br /&gt;&lt;br /&gt;Here's the solution. Usual disclaimer about editing registry and destroying your system here, the secretary will disavow all yada yada yada...&lt;br /&gt;&lt;br /&gt;The first thing you need to know is the UNC path to your Application Data folder. In our case, my network share is 'yourshare' and the U: drive maps to&lt;br /&gt;&lt;code&gt;\\yourshare\yourdepartment\yourusername\&lt;/code&gt; &lt;br /&gt;&lt;br /&gt;There are two registry keys which point to your application data's location; in my case their values used drive addresses instead of UNC addresses.&lt;br /&gt;&lt;pre class="brush: text"&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\AppData&lt;/pre&gt;Those keys' values default to &lt;code&gt;U:\myusername\Application Data&lt;/code&gt; which is technically correct but undefined at the moment they're needed. &lt;br /&gt;&lt;br /&gt;Change both of them to &lt;code&gt;\\yourshare\yourdepartment\yourusername\Application Data&lt;/code&gt; and quit regedit. Log out and log back in and you should be fine and dandy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114297780518343478?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114297780518343478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114297780518343478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114297780518343478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114297780518343478'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/03/quick-launch-keeps-disappearing-no.html' title='Quick Launch keeps disappearing -- no more'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114296773962726220</id><published>2006-03-21T11:46:00.001-07:00</published><updated>2006-03-21T12:02:19.640-07:00</updated><title type='text'>IE7b2 Testing: day 3. Pitchforks and torches.</title><content type='html'>The March 20 release was installed this morning. &lt;span style="font-weight:bold;"&gt;IE7 doesn't pass any tests it failed in the previous blog on this subject.&lt;/span&gt; It also doesn't change its behavior with any of the following DTDs, on either IIS or Apache servers:&lt;ul&gt;&lt;li&gt;HTML 4.01 Loose&lt;/li&gt;&lt;li&gt;HTML 4.01 Strict&lt;/li&gt;&lt;li&gt;XHTML 1.0 Transitional&lt;/li&gt;&lt;li&gt;XHTML 1.0 Strict&lt;/li&gt;&lt;li&gt;XHTML 1.1&lt;/li&gt;&lt;/ul&gt;More disappointing is the official remark from Microsoft that this second version of IE7b2 represents the final renderer for the shipping version of IE7. &lt;br /&gt;&lt;br /&gt;Paul Thurrott was right the first time: it's time to start badging websites again if CSS2 is to stake its claim as a standard, and let IE users deal with dodgy looking websites the way Netscape 4 users had to. Otherwise, Microsoft won't have an incentive to release a 7.5 update the way they did with 5.5.&lt;ul&gt;&lt;li&gt;Use QUOTE.&lt;/li&gt;&lt;li&gt;Use OBJECT to encapsulate non-text content and cascade it down to progressively less rich content.&lt;/li&gt;&lt;li&gt;Use BUTTON on forms the way it was meant to be used and put a note on the form linking to why it doesn't work in IE with links to MSDN's IE blogs anchored to the comment section.&lt;/li&gt;&lt;/ul&gt;If being a big fucking nuisance is the only method left to get Microsoft to pay attention to standards, be one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114296773962726220?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114296773962726220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114296773962726220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114296773962726220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114296773962726220'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/03/ie7b2-testing-day-3-pitchforks-and_21.html' title='IE7b2 Testing: day 3. Pitchforks and torches.'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114109379854567157</id><published>2006-02-27T19:27:00.000-07:00</published><updated>2006-02-27T19:29:58.566-07:00</updated><title type='text'>Testing the Blogger widget.</title><content type='html'>So, it looks like Vista will have a virtual clone of Quartz except it won't use PDF but XPS. Pros for XPS include it essentially being a JAR. Cons are the idea that printer vendors will jump on the idea of installing XPS RIP into their products considering how much of a free lunch PDF gives them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114109379854567157?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114109379854567157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114109379854567157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114109379854567157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114109379854567157'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/02/testing-blogger-widget.html' title='Testing the Blogger widget.'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114054825728290155</id><published>2006-02-21T11:54:00.000-07:00</published><updated>2006-02-21T11:57:37.293-07:00</updated><title type='text'>Open letter to Apple re: Secunia advisory 18963</title><content type='html'>You really dropped the fucking ball on this one.&lt;br /&gt;&lt;br /&gt;BOMArchiveHelper can detect executables in .tgz archives but it can't question the existence of resource forks in platform-independent common datafiles like JPG, MP3, PDF?&lt;br /&gt;&lt;br /&gt;Until BOMArchiveHelper is intelligent, Safari should at most open a ZIPfile, &lt;span style="font-style:italic;"&gt;not&lt;/span&gt; its contents.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114054825728290155?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114054825728290155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114054825728290155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114054825728290155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114054825728290155'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/02/open-letter-to-apple-re-secunia.html' title='Open letter to Apple re: Secunia advisory 18963'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-113900539539543559</id><published>2006-02-03T15:06:00.000-07:00</published><updated>2006-02-06T13:28:10.316-07:00</updated><title type='text'>IE7b2 Testing: day 2</title><content type='html'>After unsuccessfully struggling with trying to get IE7b2 to run in local mode, I was able to get a test PC I could install it to.&lt;br /&gt;&lt;br /&gt;The security problems I mentioned before evaporated. Select menus work. Pages are no longer unjustifiably accused of having popups. That's the good part.&lt;br /&gt;&lt;br /&gt;The bad part: CSS support is better but still sketchy in parts. A typical CSS-only CSS menu page like &lt;a href="http://denilsonsa.hn.org/%7Edenilson/menu/menu.html"&gt;CrazyTB&lt;/a&gt;'s works but demonstrates the same problems with z-index and "hover holes" that I encountered when adapting the horizontal menus we use on our home page. The z-index issue has to do with daughter menus underlapping parts of the parent menus; the "hover holes" make the menu disappear as you're navigating the elements. Hopefully both can be fixed the way we did it.&lt;br /&gt;&lt;br /&gt;HowToCreate's &lt;a href="http://www.howtocreate.co.uk/tutorials/testMenu.html"&gt;CSS-only menu&lt;/a&gt; is a disaster as is &lt;a href="http://www.meyerweb.com/eric/css/edge/menus/demo.html"&gt;Eric Meyer&lt;/a&gt;'s. How IE7 renders it:&lt;br /&gt;&lt;img src="http://photos1.blogger.com/blogger/5352/182/320/meyer_ie7_small.jpg" alt="" border="0" /&gt;&lt;br /&gt;...and how everything else does.&lt;br /&gt;&lt;img src="http://photos1.blogger.com/blogger/5352/182/320/meyer_ff_small.jpg" alt="" border="0" /&gt;&lt;br /&gt;I'll go out on a limb here and guess there's a selector syntax IE7 still doesn't understand. Meyer's CSS2 tests for &lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec05-02.htm"&gt;selector syntax&lt;/a&gt; and &lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec05-06.htm"&gt;child selectors&lt;/a&gt; indicate that + and &amp;gt; are recognized now, whereas they weren't in IE6. If you've forked your CSS using these operators to hide definitions from IE, you may be in trouble.&lt;br /&gt;&lt;br /&gt;When I attempted to create this blog in Blogger, the screen came up but the edit window's text color was white on white. Not funny.&lt;br /&gt;&lt;br /&gt;Going through Meyer's CSS2 test suite, we see that it still spectacularly fails every property-based test IE6 fails:&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec14-02-01b.htm"&gt;inherit:&lt;/a&gt; tests.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec12-04-01.htm"&gt;Quotes&lt;/a&gt;? Still fails.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec10-07b.htm"&gt;Min/Max-&lt;/a&gt; support? Still not there.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec05-12-03.htm"&gt;:before, :after, :content&lt;/a&gt;? Nope.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec15-02-04b.htm"&gt;font-size adjust&lt;/a&gt;? Sorry.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec17-04-01.htm"&gt;Caption-side&lt;/a&gt;? Nein.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec17-06.htm"&gt;Border-spacing&lt;/a&gt;? Uh-uh.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec17-06-01b.htm"&gt;Empty cells&lt;/a&gt;? Not a chance.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec18-04b.htm"&gt;Outline&lt;/a&gt;? Forget it.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.howtocreate.co.uk/wrongWithIE/?chapter=Object+Tags"&gt;Full implementation of OBJECT&lt;/a&gt;? Not happening. Images continue to be stuck in scrollframes, and resizing the dimensions resizes the scrollframe, not the image inside it.&lt;/li&gt;&lt;li&gt;&lt;a href="http://theodorakis.net/tablecentertest.html"&gt;Incorrectly centering block elements with text-align:center&lt;/a&gt;? Still doing it.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.5"&gt;BUTTON&lt;/a&gt; elements failing to return the contents of the VALUE attribute and instead sending the innerHTML value? No change whatsoever.&lt;/li&gt;&lt;/ul&gt;Conclusion? This product is lip service to standards and no substantial change from IE6. This was guessed as early as &lt;a href="http://ln.hixie.ch/?start=1088526392&amp;count=1"&gt;two thousand four&lt;/a&gt;. MS improved a handful of unbelievable calculation-based rendering bugs and implemented the missing selector syntax -- but their claims to have rewritten the whole thing from the ground up is bollocks, plain and simple. Bollocks. Couple this with the fact that unless you're running XP SP 2 or Vista, you have no chance to run IE7, and adoption of it could be years in the making. Corporate environments are still wedded to Windows 2000 and home users with dialup are either running earlier versions of XP, pirated versions of XP, or even Windows 98.&lt;br /&gt;&lt;br /&gt;Unless there's a beta 3 in production which features changes to the above, Paul Thurott may be right to suggest returning to the days of badged websites and boycotting IE7.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://photos1.blogger.com/blogger/5352/182/320/crying%20girl2.gif" alt="" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-113900539539543559?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/113900539539543559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=113900539539543559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113900539539543559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113900539539543559'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/02/ie7b2-testing-day-2.html' title='IE7b2 Testing: day 2'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-113882754340605022</id><published>2006-02-01T13:36:00.000-07:00</published><updated>2006-03-21T12:08:27.946-07:00</updated><title type='text'>IE7 Beta 2 caveat</title><content type='html'>There's a fairly important difference between IE 7 Beta 1 and 2 beyond the cosmetic.&lt;br /&gt;&lt;br /&gt;To vastly oversimplify, IE 7b1 was a demonstration of the new eye candy. New interface, new features (tabs, plugins, security features), but it used the same exact HTML/CSS renderer that IE 6 does. To web developers this is useless.&lt;br /&gt;&lt;br /&gt;Recently, build 5296 aka IE 7b2 was released by Microsoft for download. It features the actual new renderer with the CSS fixes promised in MSDN's blogs. There's a more recent version (build 5299) but it's not supposed to be available to the public. Eventually there will be a public beta as well.&lt;br /&gt;&lt;br /&gt;One irritating feature of IE is that installing new versions invariably wipes out old versions, and there isn't always an uninstaller to revert to older versions. To make it possible to test new IE versions in the wild, Microsoft put an undocumented "local mode" into the installers.&lt;br /&gt;IE installers are in fact .RAR archives. Unpack them to a temp directory with a tool like 7zip or WinRAR and inside is a pile of files including the iexplore.exe program itself. In order to make this version of iexplore run without trying to install itself, the usual trick has been to delete a DLL in that directory (shlwapi.dll), then create an empty textfile renamed to iexplore.exe.local -- these two things alert iexplore.exe that it's not an installed version and to run in local mode.&lt;br /&gt;&lt;br /&gt;There's a problem with Beta 2. Microsoft hasn't been fond of "local mode" because it derails the installer's ability to overwrite system files with newer ones. Beta 2 comes with a new version of a system library (wininit.dll) which it expects to find -- in a particular set of circumstances.&lt;br /&gt;&lt;br /&gt;Forumistas with both legit and pirate copies of XP have had inconsistent experiences getting Beta 2 to run in local mode. I was able to get it to run easily on a PC yesterday, but on another PC running the same version of XP Pro the application opens and closes mysteriously. Attempts to run it from a command line result in a cryptic dialog:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;iexplore.exe - Entry Point Not Found&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The procedure entry point InternetGetSecurityInfoByURLW could not be located in the dynamic link library WININET.dll.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The only difference between these two test bed PCs is that the one which ran successfully was logged in as the sole Administrator account, and the one which did not is &lt;span style="font-style: italic;"&gt;an&lt;/span&gt; administrator but not &lt;span style="font-style: italic;"&gt;the&lt;/span&gt; Administrator. Complaints on the forums indicate that this may not make a difference.&lt;br /&gt;&lt;br /&gt;Here's my take on how it behaved. The infamous &lt;a href="http://positioniseverything.net/explorer.html"&gt;IE CSS rendering bugs&lt;/a&gt; documented at positioniseverything.net are largely fixed. I haven't run it through &lt;a href="http://www.meyerweb.com/eric/css/tests/css2/"&gt;Eric Meyer's CSS2 test suite&lt;/a&gt; extensively, but I did notice that it still doesn't appear to support &lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec10-07b.htm"&gt;max-&lt;/a&gt; and &lt;a href="http://www.meyerweb.com/eric/css/tests/css2/sec10-07a.htm"&gt;min-&lt;/a&gt; &lt;a href="http://www.w3.org/TR/CSS2/visudet.html#propdef-min-height"&gt;dimension properties&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;More critically, it accused sites which use JavaScript of having popups it blocked, when no such popups exist. Menu selects fail to work and some actually trigger popup blocker warnings. CSS-based menus do not consistently disappear when hovers end. The last one may be an anticipated side effect of using &lt;a href="http://www.xs4all.nl/%7Epeterned/hovercraft.html"&gt;behavior: JScripts&lt;/a&gt; to correct IE6's incomplete hover: model. &lt;i&gt;[edit: this was partially the case. csshover's author rewrote his code to do nothing in the presence of IE7 and it solved the problem.]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Until I can test IE7 in installed mode rather than local mode, I can't tell whether these are bugs in IE7 itself or its interaction with an OS using IE6 libraries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-113882754340605022?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/113882754340605022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=113882754340605022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113882754340605022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113882754340605022'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/02/ie7-beta-2-caveat.html' title='IE7 Beta 2 caveat'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-113731297648547224</id><published>2006-01-15T00:45:00.001-07:00</published><updated>2010-04-07T17:05:21.139-07:00</updated><title type='text'>Waiting for Login</title><content type='html'>Testing out an iBook G4, I was hoping to demonstrate a spiffy ATI Radeon demo I installed on my G5. Unfortunately this demo requires a Radeon 9800, and the stock video onboard an iBook G4 is a 9550 which lacks the oomph. The demo locked up and refused to quit, CMD-OPT-ESC quit or anything other than rebooting.&lt;br /&gt;&lt;br /&gt;The machine restarted, but after the "Starting OS X" animation, I was left with the pointer in front of the default blue background, and no login screen. Mouse moves the pointer, volume/brightness/eject keys work... no login screen whatsoever.&lt;br /&gt;&lt;br /&gt;Rebooted from the install DVDs, repaired permissions and repaired disk. No dice.&lt;br /&gt;&lt;br /&gt;Reinstalled OS X with save/archive. No dice.&lt;br /&gt;&lt;br /&gt;Here's what worked, and what I should have done first. Reboot using your install CD/DVD, holding down the C key to force boot from the optical drive. Wait for the multilanguage prompt to install, click continue and wait for the main installer screen.&lt;br /&gt;&lt;br /&gt;There's a Utilities menu. Select Terminal: we're going bogey hunting for a corrupted login preference file.&lt;br /&gt;&lt;br /&gt;At the prompt, enter:&lt;br /&gt;&lt;pre class="brush: bash"&gt;cd /Volumes&lt;br /&gt;ls&lt;/pre&gt;ls is Unix's directory command. You should see a listing of at least two devices: your boot CD/DVD and your hard drive. We're going to your hard drive:&lt;br /&gt;&lt;pre class="brush: bash"&gt;cd /"Macintosh HD"&lt;/pre&gt;Unix is fussy about case sensitivity and spaces in file names. The quotes make it clear that HD is part of a file path and not a separate argument to be passed to the cd command.&lt;br /&gt;&lt;pre class="brush: bash"&gt;cd Users/yourusername/Library/Preferences&lt;br /&gt;rm com.apple.loginwindow.plist&lt;br /&gt;reboot&lt;/pre&gt;Yeah, it was really that simple. If you're savvy to using single-user mode, you can get to the file (without the install discs) that way too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-113731297648547224?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/113731297648547224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=113731297648547224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113731297648547224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113731297648547224'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2006/01/waiting-for-login.html' title='Waiting for Login'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-113402282899826588</id><published>2005-12-07T23:00:00.000-07:00</published><updated>2005-12-15T13:44:27.796-07:00</updated><title type='text'>Fixing a stuck tape in a tv/vcr combo</title><content type='html'>Sometime in the late 90s Ruth and I bought a 13 inch Symphonic TV/VCR combo at a warehouse shopping club. This evening, we attempted to watch it only to find that after 3-6 seconds the screen showed "EJECT T" and then the TV shut itself off. The eject function failed, on both the console and the remote. A tape had been put in it earlier that day by a 4 year old, method unknown, and the tape was still in there.&lt;br /&gt;&lt;br /&gt;Google can be your friend, but choose carefully. This problem is almost guaranteed to crop up sooner or later with TV/VCR combos made by Funai (who made/make this for Symphonic, Magnavox/Philips, Sears and others). Unfortunately most online complaints either go unanswered or worse, are blamed on a faulty $7.00 sensor assembly which requires a complete teardown of your box. Lots of people found a way to rip the tape out, breaking the VCR and leaving the "EJECT T" problem unfixed. They're hosed. But you aren't.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/sci.electronics.repair/browse_thread/thread/d8e5eafc65080f7/b8fce4b3f677a23d%23b8fce4b3f677a23d?sa=X&amp;oi=groupsr&amp;amp;start=2&amp;num=3"&gt;Here's&lt;/a&gt; the solution that worked, and this time I have step by step photos to help you along.&lt;br /&gt;&lt;br /&gt;The only tool you'll need is a long philips head screwdriver and your finger. If you have a magnet tool, good.&lt;br /&gt;&lt;br /&gt;Unplug the TV and take it to a workroom where you have decent lighting. Place the screen facedown on a padded chair.&lt;br /&gt;&lt;br /&gt;On my Symphonic, the rear case is held to the front by five screws: four long ones across the top and bottom, and a fifth, shorter one in a less obvious location. Unscrew them all and keep them nearby. The magnet tool is useful here for removing the screws while the tube is facedown on something soft.&lt;br /&gt;&lt;br /&gt;Pull the power cord through the case and set the case aside. Put the chassis on a table so you'll be able to reach the stuck cassette from the front. Do not attempt to loosen the videocassette. If the videotape is around the drum, gently lift it up and away from the drum and capstans. DO NOT TOUCH HAPPY FUN DRUM.&lt;br /&gt;&lt;br /&gt;Your problem is a stuck cam, the one responsible for ejecting the tape. Note the tiny motor in the back; its pulley is attached to a small disc which is in turn connected to a giant white gear (the stuck cam). Using your finger, rotate the disc counterclockwise until the tape ejects. DO NOT ATTEMPT TO MOVE THE CAM MANUALLY.&lt;br /&gt;&lt;br /&gt;You may have to guide loose videotape out; do so gently.&lt;br /&gt;&lt;br /&gt;Put the chassis facedown on the soft chair again and thread the power cable back through the back cover. Screw the back case to the front. You're welcome; that'll be $100.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-113402282899826588?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/113402282899826588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=113402282899826588' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113402282899826588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113402282899826588'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/12/fixing-stuck-tape-in-tvvcr-combo.html' title='Fixing a stuck tape in a tv/vcr combo'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-113356795151090883</id><published>2005-12-02T16:51:00.000-07:00</published><updated>2006-02-03T17:13:56.660-07:00</updated><title type='text'>Knoppix to the rescue</title><content type='html'>My work Optiplex GX260 finally got corrupted while I was in the process of removing old applications and crap from it; my XP upgrade is nigh and it was time to take account of all the useless stuff. While searching my email for something, the PC gave me a BSOD and this time, I was greeted with &lt;code&gt;NTDETECT failed&lt;/code&gt; after the Dell splash screen.&lt;br /&gt;&lt;br /&gt;Not good. The utility partition AFAIK exists for no reason except to give me serial numbers to read to someone in Bangalore; it doesn't restore NTDETECT and it doesn't restore an MBR. Way to go, Dell. Moreover, the IDE check utility option incorrectly fails to detect the HD.&lt;br /&gt;&lt;br /&gt;Fortunately the BIOS allows me to boot CDs, and Knoppix 4.0.2 came to the rescue. It has no difficulty detecting the HD or its partitions. There's a test XP PC next to mine which was being used to evaluate our department's needs; I logged in, created a shared folder, and then...&lt;br /&gt;&lt;br /&gt;Well, at home the networking seems more straightforward. Look for the nearest WORKGROUP or MSHOME and dive down. On campus it's a little more complex. KDE's stuff didn't seem to do a good enough job of detecting what I needed. LinNeighborhood OTOH, fed the PC's IP number, was amply capable of finding and mounting the shared folder for me.&lt;br /&gt;&lt;br /&gt;Much as I love SLAX and other micro-distros, when you're packing Knoppix, you're pretty well covered on certain networking needs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-113356795151090883?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/113356795151090883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=113356795151090883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113356795151090883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113356795151090883'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/12/knoppix-to-rescue.html' title='Knoppix to the rescue'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-113355178033514467</id><published>2005-12-02T11:43:00.003-07:00</published><updated>2010-04-07T17:06:33.838-07:00</updated><title type='text'>Make older Firefox extensions work with 1.5</title><content type='html'>A number of older FF extensions haven't been updated to work with Tuesday's release of Firefox 1.5 (aka Deer Park RC3). Unfortunately, there's nothing wrong with more than a few of them, but the MoFo Brave New World hype for 1.5 led many developers to play it safe and restrict their extensions to working inside the 1.0.* version range.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://checky.sourceforge.net/"&gt;Checky&lt;/a&gt;, &lt;a href="https://addons.mozilla.org/extensions/moreinfo.php?application=firefox&amp;id=318&amp;amp;vid=1075"&gt;Wayback&lt;/a&gt;, &lt;a href="https://addons.mozilla.org/extensions/moreinfo.php?id=269&amp;application=firefox"&gt;FoxyVoice&lt;/a&gt;, &lt;a href="https://addons.mozilla.org/extensions/moreinfo.php?id=31&amp;amp;application=firefox"&gt;FireSomething&lt;/a&gt;... none of these are dependent on the difference between the 1.0.x and 1.5 cores. How do you fix it?&lt;br /&gt;&lt;br /&gt;The developer of Checky explained it for me, and here's the formula you need if you can't wait for your favorite developer to update the extension. As usual, you're taking your computer into your own hands, the secretary will disavow all knowledge, yada yada yada.&lt;br /&gt;&lt;br /&gt;First, open Firefox 1.5. Open the Extensions window and visit each of the uncooperative extensions' websites (right-click each to do this). Download the extensions' .xpi files instead of installing them (right-click not left-click) and save them to the desktop. (or, alternately, download them from &lt;a href="https://addons.mozilla.org/?application=firefox"&gt;addons.mozilla.org&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Once they're all downloaded, uninstall the troublesome extensions from FF, and quit, leaving no windows open (like extensions, downloads, etc.). Restart FF and check the extensions to make sure they're gone, and if so, quit again. There's a chunk of file maintenance going on in the background here you don't want to skip.&lt;br /&gt;&lt;br /&gt;.XPI files are zipfiles. Here's the process for fixing the "planned obsolescence" built into them.&lt;br /&gt;&lt;br /&gt;Change the extension on one of the .xpi files to .zip and unzip it to a folder using your favorite utility (preferably one which retains directory structures). Inside the folder you've created, there'll be an install.rdf file. This is the culprit.&lt;br /&gt;&lt;br /&gt;Install.rdf is the file that FF uses to deploy an extension. It tells FF what files there are and where they go, the text and icon of the blurb you see in the Extensions window, etc., etc. It &lt;span style="font-style: italic;"&gt;also&lt;/span&gt; tells FF which versions of FF it's compatible with, to prevent older versions from installing incompatible extensions and to prevent future versions from installing possibly incompatible ones.&lt;br /&gt;&lt;br /&gt;Edit install.rdf in a text editor (not a word processor or WordPad), and search for the following string: &lt;code&gt;ec8030f7&lt;/code&gt;&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;em:targetapplication&amp;gt;&lt;br /&gt;&amp;lt;description&amp;gt;&lt;br /&gt;&amp;lt;em:id&amp;gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&amp;lt;/em:id&amp;gt;&lt;br /&gt;&amp;lt;em:maxversion&amp;gt;1.0+&amp;lt;/em:maxversion&amp;gt;&lt;br /&gt;&amp;lt;em:minversion&amp;gt;1.0&amp;lt;/em:minversion&amp;gt;&lt;br /&gt;&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;/em:targetapplication&amp;gt;&lt;br /&gt;&lt;/pre&gt;The em:id refers to Firefox's own UID, {ec8030f7-c20a-464f-9b0e-13a3a9e97384}. As you can see from the &lt;code&gt;maxversion&lt;/code&gt; value in this example, the maximum compatible version is "one point zero with at least one extra character after the zero." Regular expression nerds can guess what's coming next.&lt;br /&gt;&lt;br /&gt;Change the "1.0+" to "1.+" and save the file. Recompress the folder back to another zipfile (with a slightly altered name) and rename the zipfile's extension to .xpi.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Don't&lt;/span&gt; double-click it. Open Firefox first, and then open the new .xpi file from Firefox's Open File... You'll still have to wait to verify installation, but the process is the same. Exit Firefox and restart it to see your extension back in business.&lt;br /&gt;&lt;br /&gt;And if it crashes your browser, impregnates your girlfriend and makes your dog hate you, at least you were warned.&lt;br /&gt;&lt;br /&gt;If you have reason to think that &lt;a href="http://mozilla.org/"&gt;MoFo&lt;/a&gt;'s going to release a wildly incompatible browser between 1.5 and 2.0, you could change "1.0+" to "1.5+" to make it expire as soon as 1.6 comes out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-113355178033514467?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/113355178033514467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=113355178033514467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113355178033514467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113355178033514467'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/12/make-older-firefox-extensions-work.html' title='Make older Firefox extensions work with 1.5'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-113184467350747631</id><published>2005-11-12T18:09:00.002-07:00</published><updated>2010-04-07T17:08:05.940-07:00</updated><title type='text'>Making Software Update your bitch</title><content type='html'>One of the frequent problems I have with Software Update is the quaint notion that a 32M download never chokes. Instead of breaking these larger updates (usually iPod fixes) into smaller manageable downloads to be reassembled and checksummed later, Apple sincerely believes that their users will robotically sit in front of their Macs and retry these choked downloads.&lt;br /&gt;&lt;br /&gt;In many cases you can bypass the process by going to &lt;a href="http://www.apple.com/support/downloads/"&gt;Apple:Support:Downloads&lt;/a&gt;, and downloading the file directly with your browser (Safari tends to have better luck with resuming large downloads).&lt;br /&gt;&lt;br /&gt;Trouble is, not every update is visible there. SU seems to think I need an iPod updater from 9/23/05, but there isn't an equivalent download I can grab it from. What to do, what to do.&lt;br /&gt;&lt;br /&gt;Open the Console app, is what. Not Terminal, but Applications/Utilities/Console.app, and attempt the download once more. In all likelihood you'll find the following type of error:&lt;br /&gt;&lt;code&gt;2005-11-12 17:49:02.582 Software Update[2493] session:product:061-2099 didFailWithError:NSError "timed out" Domain=NSURLErrorDomain Code=-1001 UserInfo={&lt;br /&gt;NSErrorFailingURLKey = http://swcdn.apple.com/content/downloads/63/63/061-2099/ FT96wN8RF2sM3TL@FpDNGm9RjbdCfj/iPod2005-09-23.tar; &lt;br /&gt;NSErrorFailingURLStringKey = "&lt;span style="color: rgb(255, 0, 0);"&gt;http://swcdn.apple.com/content/downloads/63/63/061-2099/ FT96wN8RF2sM3TL@FpDNGm9RjbdCfj/iPod2005-09-23.tar&lt;/span&gt;"; &lt;br /&gt;NSLocalizedDescription = "timed out"; &lt;br /&gt;}&lt;br /&gt;Nov 12 17:55:15 Andrew-Roazens-Computer mDNSResponder: ERROR: read_msg - client version 0x32303035 does not match daemon version 0x00000001&lt;br /&gt;Mac OS X Version 10.4.3 (Build 8F46)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Irritating, eh? But notice now that you have an actual URL to attempt a direct download from. Select the URL, right-click it and a context menu will give you the option of going directly to that URL in your default browser. Perfect, no. Doable, yes.&lt;br /&gt;&lt;br /&gt;Edit: Unless Apple's running Apache 2.0 with mod_deflate enabled, this isn't even being sent as a gzip but a regular tarfile. (If you're a *nix n00b, most patches and software that you have to compile yourself tend to be .tar.gz/.tgz files.) OTOH if the file is being compressed server-side live as a gz, that isn't terribly smart either. Right-click, open the tarfile with BOMArchiveHelper and you'll get a folder with another tarfile inside and a signature file; ignore the signature and right-click the second tarfile to unpack it with BOMArchiveHelper. Voila, your update package.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-113184467350747631?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/113184467350747631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=113184467350747631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113184467350747631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113184467350747631'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/11/making-software-update-your-bitch.html' title='Making Software Update your bitch'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-113108496795075749</id><published>2005-11-03T23:04:00.000-07:00</published><updated>2005-11-03T23:16:07.963-07:00</updated><title type='text'>Obligatory Tiger/SMB gripe and fix</title><content type='html'>Upgrading to Tiger broke one quizzical thing: I couldn't Samba mount the server our library website lives on. I could mount my staff account on another almost identical Solaris server, but not the library server. Extensive research led me down a blind alley thinking that the library server's authentication was being maintained by a W2K3 server using a proprietary SMB digital signing, but when the sysadmin told me this server does its own authentication, this got puzzling.&lt;br /&gt;&lt;br /&gt;I even hunted down the BSD command that OS X uses behind the Apple-K Connect To Server GUI, mount_smbfs, and attempted to tweak every parameter possible in the Terminal. No go.&lt;br /&gt;&lt;br /&gt;Hopefully you're here because of a Google search for "Error -36" or something like that. Here's the link to &lt;a href="http://docs.info.apple.com/article.html?artnum=301580"&gt;Apple's solution&lt;/a&gt;. In a nutshell, passwords can be sent to a server either as plaintext (which other computers on your LAN can packetsniff) or encrypted. Most Samba servers at this point are configured to handle either; the library server (for tech reasons I can't disclose) has to use plaintext.&lt;br /&gt;&lt;br /&gt;Prior to Tiger, OS X's Samba authentication was equipped to deal with either kind; because it posed a security hazard, Tiger disables plaintext (unless you follow their instructions and restart your Mac). Apple's helpful response is that we should all force our sysadmins to go with encrypted only. Good luck on that one.&lt;br /&gt;&lt;br /&gt;If you're not using Tiger, this won't be an issue. If you're using Tiger and your Samba server accepts encrypted passwords, this won't be an issue. But legacy servers (or servers with a specific reason for using plaintext) will require you to do the tweak mentioned before.&lt;br /&gt;&lt;br /&gt;I have no idea whether the code behind this change is open source enough that it could be rewritten so that each entry in the Connect to Server dialog could have a checkmark next to it for encryption and let the software make the connections case by case.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-113108496795075749?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/113108496795075749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=113108496795075749' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113108496795075749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113108496795075749'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/11/obligatory-tigersmb-gripe-and-fix.html' title='Obligatory Tiger/SMB gripe and fix'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-113096227980835699</id><published>2005-11-02T12:47:00.000-07:00</published><updated>2005-11-02T13:11:19.816-07:00</updated><title type='text'>Perl, XML, and XSLT</title><content type='html'>Our website has a thumbnail of a campus photo which rotates randomly and links to a gallery page of all of the student/faculty-submitted photos. In the past, we would have managed this one of two ways:&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;A JavaScript reading an array file, typically a comma-delimited list of filename and metadata, and picking a random array element to output to HTML&lt;/li&gt;   &lt;li&gt;Perl doing the same thing and being SSI included&lt;br /&gt;  &lt;/li&gt; &lt;/ol&gt; Thing is, the amount of metadata we're collecting about our photos is reasonably complex. The thumbnail image URL, the fullsize image URL, the author, their title... and whether the image should only appear in the gallery. This is the kind of data that looks less like a table of columns and more like an XML manifest.&lt;br /&gt;&lt;br /&gt;The translation of the manifest to the gallery is tailor made for XSLT (XML stylesheet transformation), and strictly speaking a modern browser is capable of doing the translation by itself -- as long as that's the only content on the page. Inserted into the middle of an XHTML document, that's another story. So, it makes sense to have the server manage the XSLT.&lt;br /&gt;&lt;br /&gt;In order to that, the Perl we use has to be made aware of XML and XSLT. Good things and bad: first, an XML file really needs a DTD. Why? For one thing, Firefox and IE throw hissies at XML without DTDs even though they don't validate the XML against them. For another, it forces you to define the syntax of your XML. Better yet, XML editors (even Dreamweaver) actually read them and autocomplete your entries. DTDs aren't hard to write once you get used to SGML definition syntax.&lt;br /&gt;&lt;br /&gt;Perl still sucks its thumb and sits in the corner, until you integrate XML parsers into it. XML parsers in turn rely on libexpat, whose installation was covered earlier in this blog. As a non-root user, I have to install the XML modules to a local directory; fortunately, previous experience installing FAQ-O-Matic helps here.&lt;br /&gt;&lt;br /&gt;Why go to all this trouble? The answer's simpler than it seems. It's a database important enough to need server-side manipulation but not important enough to justify an Oracle table. Currently we're manually editing the XML manifest for the gallery, but with a DTD-based framework for this XML, we can construct webapps for maintaining that database that aren't dependent on a particular language.&lt;br /&gt;&lt;br /&gt;With XML::Parser, XML::Simple, and XML::XSLT, we can slurp the database to a Perl dataset, add/edit/remove items and output the resulting dataset back to XML. Should another application need to work with the data, it's there in a friendly, future-extensible format.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-113096227980835699?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/113096227980835699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=113096227980835699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113096227980835699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/113096227980835699'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/11/perl-xml-and-xslt.html' title='Perl, XML, and XSLT'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-112993493571325142</id><published>2005-10-21T15:33:00.000-07:00</published><updated>2006-03-21T12:11:15.500-07:00</updated><title type='text'>Palm: 1992-2006?</title><content type='html'>I got &lt;a href="http://roazen.blogspot.com/2000_05_14_roazen_archive.html"&gt;dragged onto the Palm bandwagon&lt;/a&gt; in 2000, but the sad fact is that its main advantages over a Filofax are the following in descending order of importance:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;fits in my pocket&lt;/li&gt;   &lt;li&gt;holds tons of data without getting larger&lt;/li&gt;   &lt;li&gt;can beep at me to remind me of something&lt;/li&gt;   &lt;li&gt;synchronizes with my desktop computer&lt;/li&gt;   &lt;li&gt;runs software&lt;/li&gt; &lt;/ul&gt; There isn't one of these that doesn't apply to smartphones, and Apple forsaking Newton for iSync was the writing on the wall. While a &lt;a href="http://www.osnews.com/permalink.php?news_id=12350&amp;comment_id=49385"&gt;programmer posting anonymously at OSnews&lt;/a&gt; is correct that PalmOS development is pretty much "compile once, deploy everywhere," he's also evading the other truth: that in order to make PalmOS small and fast, the firmware sacrifices enough characteristics of a conventional platform to make porting apps a chore.&lt;br /&gt;&lt;br /&gt;Platform historians are going to have a hard time resisting the impulse to paint Palm's history as a flawed copy of the Macintosh. As a former Apple employee, Jeff Hawkins never objected to the comparisons made by the press.&lt;br /&gt;&lt;br /&gt;It's an apt parallel to what happened with the original Macintosh, beyond the obvious Motorola 68K/monochrome screen. Design decisions made 10 years before held back the platform, and it took dumping nearly everything that differentiated it in favor of a more standardized OS and hardware to sustain the product name, while carefully maintaining five years' worth of compatibility to make the transition palatable. A faster CPU replaced a 68K and the OS shipping for it was essentially a recompile for the new architecture with a bytecode translator.&lt;br /&gt;&lt;br /&gt;Unfortunately they followed Apple's mistakes as well. Spinning off software divisions, releasing too many new models with incompatible hardware and not enough improvements, and taking their momentum over Microsoft for granted.&lt;br /&gt;&lt;br /&gt;Ultimately PalmSource made the critical mistake Apple avoided: they thought their future lay in BeOS, wasting a year trying to shoehorn its features into PalmOS before realizing they had zero clout with Palm or its hardware licensees. Cobalt died on the vine. Partners like Handera, Symbol and Tapwave either folded or switched alliances to Windows as laptops got cheaper and smaller and SCO's legal troubles made it relatively clear that Linux was a viable alternative for smartphones.&lt;br /&gt;&lt;br /&gt;And Linux is where PalmSource claims PalmOS' future lies, with a new kernel but the same API. Unlike the OS X transition that supplied every Mac user with a fully fledged instance of BSD Unix, the Linux PalmOS won't be a Zaurus running Linux with a recognizable file structure. It's merely an architecture change to make PalmOS easier to port to as-yet-unknown smartphone platforms.&lt;br /&gt;&lt;br /&gt;Nevertheless rumors abound that PalmSource's corporate masters have no use for PalmOS.&lt;br /&gt;&lt;br /&gt;When everyone got on Wifi, Palm lagged until well after every one of their competitors made it a stock feature. The Windows portable platform rides Microsoft's coattails; iPods feed off iTunes' ubiquity. PalmOS lacks an equivalent lifeline, and Palm's decision to stop supporting MacOS cuts the philosophical tie that founded the company.&lt;br /&gt;&lt;br /&gt;The LifeDrive is a solution looking for a problem, and a rushed one at that: a cold restart reformats the hard drive -- and it still can't run any OS except the one burned into it.&lt;br /&gt;&lt;br /&gt;The most important lesson geeks and nerds need to take away from the 90s if they didn't cut their teeth in the 80s is this: the commercial computer business is not a meritocracy and it never was.&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Better products will be steamrolled by cheaper ones.&lt;/li&gt;   &lt;li&gt;Cheaper equal quality products will be ignored in favor of ones with dumbed down interfaces, European designers and flashy ad campaigns.&lt;/li&gt;   &lt;li&gt;Businesses will choose the bigger company over price, quality or dependable standards, every time. &lt;/li&gt; &lt;/ul&gt; If you're an idealist, stick with BSD or Linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-112993493571325142?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/112993493571325142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=112993493571325142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112993493571325142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112993493571325142'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/10/palm-1992-2006.html' title='Palm: 1992-2006?'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-112991293914008404</id><published>2005-10-21T09:32:00.000-07:00</published><updated>2005-10-21T10:46:37.686-07:00</updated><title type='text'>There's no such thing as an HTML comment, and why that's important</title><content type='html'>If a comment contains &lt;b&gt;2 consecutive dashes&lt;/b&gt; &lt;i&gt;and&lt;/i&gt; its document has an XHTML &lt;tt&gt;doctype&lt;/tt&gt; declaration, Gecko-based browsers like NS 7 and Firefox &lt;a href="http://groups.google.com/group/linux.debian.bugs.dist/browse_thread/thread/b6faa7d1863b73a5/7e0893c8500ddcd2%237e0893c8500ddcd2?sa=X&amp;oi=groupsr&amp;amp;start=0&amp;num=3"&gt;will show&lt;/a&gt; the content after the double dashes. The reason is convoluted but understandable:&lt;br /&gt;&lt;ul&gt;  &lt;li&gt;In the SGML spec, &lt;tt&gt;&amp;lt;!--this is a comment--&amp;gt;&lt;/tt&gt; is actually &lt;b&gt;two nested sets of delimiters&lt;/b&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;The &lt;span style="color:red;"&gt;&lt;b&gt;&lt;tt&gt;&amp;lt;!&lt;/tt&gt;&lt;/b&gt;&lt;/span&gt; and &lt;span style="color:red;"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/span&gt; are SGML declaration delimiters. Declarations are usually self-enclosed structural definitions meant for a parser, not content meant for a viewer, and do not look or behave like HTML tags:&lt;br /&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="color:red;"&gt;&amp;lt;!&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;ELEMENT gallery (imagebase*,image+) --an imagebase child element is optional, but there must be at least one image-- &lt;/span&gt;&lt;span style="color:red;"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;/tt&gt;&lt;br /&gt;Declarations abound in other kinds of SGML documents (such as DTDs), but HTML only demonstrates one in action, the doctype: &lt;tt&gt;&lt;b&gt;&lt;span style="color:red;"&gt;&lt;br /&gt;&amp;lt;!&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;/span&gt;&lt;span style="color:red;"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;Inside declarations, &lt;a href="http://en.wikipedia.org/wiki/Comment#Summary"&gt;double-dashes are the actual comment delimiters&lt;/a&gt; (see the example with ELEMENT above).&lt;br /&gt;&lt;/li&gt;  &lt;/ul&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Because HTML comes from SGML, its creators saw no reason to reinvent the wheel. Instead of creating an HTML comment tag, they reused an empty SGML declaration with SGML's own declaration comment syntax. &lt;i&gt;&lt;span style="font-weight: bold;"&gt;There is, in fact, no such thing as an HTML comment tag.&lt;/span&gt; &lt;/i&gt;When the W3C released the HTML spec, they only reiterated this fine grained point &lt;a href="http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.4"&gt;in a separate document&lt;/a&gt; comparing SGML and HTML, because they figured everyone was familiar enough with SGML's 15-year-old standard to understand this already. Double-dashes are comment delimiters in several programming languages, and "dash-dash-space-endofline" is the delimiter used by mail programs to separate your message from your sig.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The authors of NCSA Mosaic, the first browser, likely reasoned that in the absence of any other SGML declaration types besides doctype, there was no need to parse "HTML comments" beyond the predictable &lt;tt&gt;&amp;lt;!-- &lt;/tt&gt;and &lt;tt&gt;--&amp;gt;&lt;/tt&gt; start/end pair. Newcomers to the browser-writing scene unfamiliar with SGML assumed this pair was one set of delimiters, not two. The distinction is &lt;span style="font-style: italic;"&gt;almost &lt;/span&gt;academic.&lt;br /&gt;&lt;br /&gt;Doctypes change the rules. Remember, doctypes are declarations, and declarations define a parser's behavior. In their absence (or in the presence of an HTML 4.0 doctype), browsers typically revert to "quirks mode," which often means they parse HTML using the parser they had in 1999. Add an XHTML doctype, however, and the document will be parsed to stricter guidelines more tightly conforming to XML spec...&lt;br /&gt;&lt;br /&gt;...in theory. Gecko browsers (Mozilla/Firefox/Netscape) currently enforce SGML comment syntax in the presence of an XHTML doctype, IE and Opera do not. For now, there isn't much more incentive than there was in 1999; however, as browser based XML/XSLT web apps take off, parsing the XML datasets' custom DTDs will become more necessary, and as hinted before DTDs are just a laundry list of SGML declarations. Given their common heritage and syntax, it's conceivable that a browser's DTD parser and the XHTML/XML/XSLT parser will merge enough to use the same rule for SGML comments in all contexts.&lt;br /&gt;&lt;br /&gt;You'll see more SGML in web pages in the future, especially when web servers start using XHTML's correct MIMEtype and stop using HTML's "text/html". This change in MIMEtype triggers even stricter XML parsing in Gecko and Opera, which means that XML-nonconformant content such as JavaScript and CSS inside web pages have to be escaped with &lt;tt&gt;&amp;lt;![[CDATA]]&amp;gt;&lt;/tt&gt; blocks. (If you're using external .css/.js files none of this is an issue.)&lt;br /&gt;&lt;br /&gt;Unlike SGML comments, CDATA doesn't &lt;span style="font-style: italic;"&gt;hide&lt;/span&gt; content but tells the XML parser to ignore it as raw character-based data (similar to how the PRE tag works) and thereby allow JavaScript/CSS operators like &lt;tt&gt;&amp;lt; &amp;gt; --&lt;/tt&gt; to exist without triggering the error that started this article.  Remember, this is 2005 and the number of browsers today which still attempt to render the contents of style/script blocks as text is practically nil, even counting microbrowsers, Lynx, and Netscape 4.7. SGML comment hiding of style/script blocks is &lt;a href="http://developer.mozilla.org/en/docs/Properly_Using_CSS_and_JavaScript_in_XHTML_Documents"&gt;unnecessary and deprecated&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-112991293914008404?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/112991293914008404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=112991293914008404' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112991293914008404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112991293914008404'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/10/theres-no-such-thing-as-html-comment.html' title='There&apos;s no such thing as an HTML comment, and why that&apos;s important'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-112969820572951712</id><published>2005-10-18T21:32:00.000-07:00</published><updated>2005-11-10T16:32:05.376-07:00</updated><title type='text'>Fun with SLAX</title><content type='html'>OK, I've been dropping off enough copies of Knoppix to earn my Geek Scout badge for the last year. Since I'm running Debian this isn't too surprising; it's a hardcore live demo of Debian Sarge, a quick way to get Linux under your fingernails without commitments.&lt;br /&gt;&lt;br /&gt;For a change I thought I'd try the latest &lt;a href="http://slax.linux-live.org/"&gt;SLAX&lt;/a&gt; live miniCD image. Slax 5.0.6 is a lot more impressive than the last SLAX distro I checked, 4.2.0. Firstly, the 5.x.y releases are based off the 2.6 kernel, so autoconfiguring your sound is easier. I was impressed to see a good selection of basic Internet apps on it... except the newsreader.&lt;br /&gt;&lt;br /&gt;Thunderbird's a great email program. It replaced Eudora on my work desktop months ago and I've never looked back. As a newsgroup reader, it's pretty unimpressive. I never tested it much at work because my employer disabled NNTP access a few years ago so as to keep the servers from melting. At home, it's a different story. Mac users are largely stuck with &lt;a href="http://www.smfr.org/mtnw/"&gt;MT-NewsWatcher&lt;/a&gt;, which is adequate but not stupendous and not updated often. Windows users are familiar with a collection of shareware and commercial newsreaders, &lt;a href="http://www.forteinc.com/agent/index.php#FreeAgent"&gt;Forte FreeAgent&lt;/a&gt; being a popular choice.&lt;br /&gt;&lt;br /&gt;Where Thunderbird lags as a newsreader, ironically, is the concept "modern standards." Binaries newsgroups in the late 80s relied on something called &lt;a href="http://www.webopedia.com/TERM/U/Uuencode.html"&gt;UUencoding&lt;/a&gt; for attaching binaries to posts, due to the fact that like email, this method of communication was typically a 7-bit medium attempting to carry 8-bit data. One of its better features is the ability to spread one file out across successive posts. Unfortunately, UUencode lacks native file compression. Enter &lt;a href="http://www.yenc.org/"&gt;yEnc&lt;/a&gt;. Newsreaders started handling yEnc encoding as early as the mid90s, but the Mozilla group seems to have ignored it as a standard. Moreover, Mozilla's newsreaders can't handle multipart binaries.&lt;br /&gt;&lt;br /&gt;Enter &lt;a href="http://pan.rebelbase.com/"&gt;Pan&lt;/a&gt;. Pan is an open source newsreader whose best features are familiar to users of FreeAgent. Because it's OSS, it's available for most Linux distros. It's not in SLAX, though, and a "carry all your tools in your pocket" CD is incomplete without it.&lt;br /&gt;&lt;br /&gt;Before this morning, I never customized a liveCD. Knoppix has a method, but it's unpleasant on resources and speed. SLAX, on the other hand, is designed to be modular and comes with both Windows and Linux tools for rebuilding new ISO images once you've tweaked it.&lt;br /&gt;&lt;br /&gt;Pan isn't available as a SLAX 5 module (supposedly SLAX 4 modules are incompatible). However, the SLAX CD comes with a command line utility for converting Slackware .tgz installation files into SLAX .mo modules. The Pan package was converted within a minute, added live to the CD and...&lt;br /&gt;&lt;br /&gt;Poop. Turns out it has a GNOME library dependency (&lt;a href="http://www.gnetlibrary.org/"&gt;gnet&lt;/a&gt;). Well, no prob with "Bob," I got the library .tgz, ran it through the same converter, and added it live to the CD, entered pan at a shell prompt and BAM! Pan was up and running. The two .mo files were moved to my PC's hard drive, I restarted the PC, and followed the SLAX instructions for rebuilding the SLAX ISO using the modules. Instead of reburning it I tried to put it through Bochs for testing.&lt;br /&gt;&lt;br /&gt;Bochs suchs. I'd been told before to get &lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;QEMU&lt;/a&gt; and I wasn't disappointed. Far fewer configuration options required, network emulation automatic, and lo and behold, SLAX 5.0.6 with Pan installed. Only downside was, it wasn't part of the KDE Internet submenu. I added Pan to the submenu and the icon bar, then opened a shell and executed a one-line command to export all updates and changes to another .mo module, saved it to the HD, and rebuilt the image once more. (The ISO compress/build process itself is less than five minutes.)&lt;br /&gt;&lt;br /&gt;This time, the image booted with Pan in the tray and on the menu. For kicks I added it to the equivalent menus in Fluxbox and cooked the image a third time, burning it to a CD/RW I keep around for this kind of last testing.&lt;br /&gt;&lt;br /&gt;Getting a pocket-sized liveCD with basic tools is cool. Getting to customize it without recompiling a kernel is sweet. SLAX takes it one step farther by maintaining a webserver you can log into to save your state to, in case you aren't able to burn customized copies. This pimpslaps Windows "profiles" into last week, folks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-112969820572951712?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/112969820572951712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=112969820572951712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112969820572951712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112969820572951712'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/10/fun-with-slax.html' title='Fun with SLAX'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-112840157435957221</id><published>2005-10-03T21:15:00.001-07:00</published><updated>2010-04-07T17:09:15.153-07:00</updated><title type='text'>MCPAN is for wimps, OR libexpat and I</title><content type='html'>Hi. If you're like me, you spend most of your time trying to do neat things in Perl.&lt;br /&gt;&lt;br /&gt;OK, so no you're not. And frankly, neither am I. However, if you're trying to do XML stuff in Perl, like slurping it into a DOM object and/or doing XSLT transformations, you need XML::XSLT. Unfortunately, it isn't that simple. XML::XSLT depends on XML::Parser, which depends on other modules. XML::XSLT also depends on XML::Parser::Expat, which isn't actually installed by XML::Parser, but libxml. Now, MCPAN will pretend it handles all the dependencies behind the one you're trying to install, but there's a hitch. Two, really.&lt;br /&gt;&lt;br /&gt;One, MCPAN is unavailable to non-root users, because it can't do local installs of Perl modules. At home on a Debian Sarge box or my dual G5, this is not a problem. At work, where I'm using my employer's Solaris box, I don't have the privileges to run MCPAN, so I have to manually discover all the dependencies and &lt;span style="font-family: courier new;"&gt;perl Makefile.PL&lt;/span&gt; install each module in turn, by hand from source, being sure to point the installation at a local location.&lt;br /&gt;&lt;br /&gt;Two, MCPAN is excellent at handling dependencies -- so long as what it needs are &lt;span style="font-style: italic;"&gt;other&lt;/span&gt; Perl modules. The heart of XML work in Perl (and Python, for that matter) is a little tiny non-Perl library called Expat. It's a C library which is usually located under /usr/local.&lt;br /&gt;&lt;br /&gt;Except that it isn't really a default installation on *nixes. Debian Sarge, yes. OS X/BSD, no. Solaris, yes but not necessarily in /usr/local where XML::Parser expects it, and it certainly isn't part of Windows, either. This is annoying enough that PHP's designers reverse-engineered their own expat-compatible library into PHP.&lt;br /&gt;&lt;br /&gt;Moreover, MCPAN ain't apt-get. If it &lt;span style="font-style: italic;"&gt;can't&lt;/span&gt; handle a dependency, it cries and wets its pants, leaving you to dredge through all its reports in hopes of figuring out what to do. At least apt-get tells you what you might need to do, rather than just suggesting you force the install.&lt;br /&gt;&lt;br /&gt;Google "libexpat OS X" to witness the wailing and moaning of the damned (Perl, Python and others) unable to understand how they were left behind. Life is hell.&lt;br /&gt;&lt;br /&gt;If you're one of them and you found this blog, here's what you have to do. First off, log in as root on your Mac and open a browser. Go &lt;a href="http://expat.sourceforge.net/"&gt;here&lt;/a&gt; to get the source code archive for expat. You're going to do this old-school and compile it yourself. Relax, I'll hold your hand through this.&lt;br /&gt;&lt;br /&gt;Now that you have the tar.gz file on your desktop, &lt;span style="font-style: italic;"&gt;resist the impulse to double-click it&lt;/span&gt;. If you have, delete the folder. Open the Terminal:&lt;br /&gt;&lt;pre class="brush: bash"&gt;$ cd ~/Desktop&lt;br /&gt;$ ls&lt;br /&gt;expat-1.95.8.tar.gz&lt;br /&gt;Applications&lt;br /&gt;[yada yada]&lt;br /&gt;$ gunzip expat-1.95.8.tar.gz&lt;br /&gt;$ tar -xvf expat-1.95.8.tar&lt;br /&gt;$ cd expat-1.95.8&lt;br /&gt;$ ./configure&lt;br /&gt;$ make&lt;br /&gt;$ make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That's it. Go back to MCPAN and install XML::XSLT; the rest should fall into place.&lt;br /&gt;&lt;br /&gt;[As nice as the OS X and Stuffit utilities are for decompressing tar.gz, gunzip and tar do what *nixes expect down to the letter, and desktop decompression utilities have been known to do strange things to filenames. WinZip, for example, creates the expat folder seemingly flawlessly, but your shell will insist to high heaven that there's no configure file to ./ even as you see it there.]&lt;br /&gt;&lt;br /&gt;Fink's the OS X version of apt-get. The downside to Fink is that like apt-get, you're stuck with what's available in the current repository, and worse, each new release of OS X has unpleasant repercussions for Fink. When Debian has a new release, the repository tends to be ready; when OS X has a new release, there's endless bitching about what's broken in Fink.&lt;br /&gt;&lt;br /&gt;FWIW, I ran the MCPAN XML::XSLT installs on Debian Sarge and Tiger simultaneously. Debian handled it flawlessly, only occasionally asking yes/no questions to which the Enter key was sufficient. OS X tried to do the same, but gargled on its own vomit until I manually installed expat and started over. Ironically, when I tried to use perldoc to verify that XML::XSLT was installed on Linux, perldoc wasn't there and had to be installed using apt-get.&lt;br /&gt;&lt;br /&gt;It's conceivable that a default install of Debian doesn't have expat, either. Nevertheless, this thing should be integrated into all *nix default installs. MCPAN should be as good as apt-get.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-112840157435957221?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/112840157435957221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=112840157435957221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112840157435957221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112840157435957221'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/10/mcpan-is-for-wimps-or-libexpat-and-i.html' title='MCPAN is for wimps, OR libexpat and I'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-112784330079819719</id><published>2005-09-27T09:39:00.000-07:00</published><updated>2005-10-21T10:03:07.933-07:00</updated><title type='text'>A few observations on Debian Linux</title><content type='html'>About a year ago I bought a campus surplus Dell Optiplex GX1 (PIII) to see how well Debian GNU/Linux would work out as a home PC, and whether I could successfully maintain it as a dual-boot box (NAU staffers can get Windows XP for $10). Sometimes it's good to see how another product performs, even if it's not your preferred platform (like, say, a certain blog platform).&lt;br /&gt;&lt;br /&gt;Knowing that Windows won't install itself into a secondary partition, I let the Windows installer partition the HD using recommendations a Red Hat user had posted somewhere. Roughly speaking, Windows got 40% NTFS with a swapfile partition of 5% and a 5% FAT32 partition and left the rest alone. The Debian Sarge (then the testing release) installer split the remaining 50% into 45% ext2 and 5% swapfile.&lt;br /&gt;&lt;br /&gt;The 5% FAT32 partition was created specifically as Switzerland: a neutral space mounted by both OSes for the purpose of sharing files between them. For example, the login user icon that Windows uses for Administrator and Debian uses for root is the same image file, on this partition. Firefox on both OSes point their bookmarks at this partition; add a bookmark in one and it's visible to the other. Remember, Debian's NTFS support at this point is largely read-only, and putting Windows XP in a FAT32 partition is kinda dumb.&lt;br /&gt;&lt;br /&gt;For the most part, everything just works. Because the Epson inkjet in our household is connected to the Mac, the Mac's printer sharing is done through CUPS. To a Windows PC, this means it has to be mounted as a color PostScript printer. Linux finds it on its own and automagically configures it correctly (because it also uses CUPS). Moreover, it also figured out that the Mac had an internal fax modem.&lt;br /&gt;&lt;br /&gt;Not everything worked out of the box, however. SMB doesn't work until several components are installed: LISA, SMB, etc. This is disappointing because most Debian-based LiveCDs do a much more aggressive job of detecting hardware and network resources at startup (e.g. Knoppix and Ubuntu).&lt;br /&gt;&lt;br /&gt;Yesterday, I went to the local computer shop and picked out a CD-RW/DVD-ROM drive. One thing about the GX1 towers, they come with a lot of empty space and 2 extra bays (which doesn't count the space the two internal HDs use). Everything was in order, the primary CD-ROM's ribbon cable had another connector crimped into it and there were enough power connectors inside to go around. Pull out the sled, screw the drive to it, slide it back in and connect the connectors. Reboot.&lt;br /&gt;&lt;br /&gt;Here's where Debian disappointed particularly. As soon as XP rebooted it discovered the drive and configured it. VLC was playing my homebrewed DVDs peachy-keen (however, until I install PowerDVD, I can kiss CSS-encrypted discs goodbye). I rebooted into Sarge, and -- nothing.&lt;br /&gt;&lt;br /&gt;The startup log indicated that it knew there was a /dev/hdd, at the console entering more /dev/hdd resulted in a binary dump of the DVD's contents, but Debian didn't do the simplest thing: it didn't configure the device as a mounted drive. To make sure it wasn't a kernel issue, I booted the PC from a recent liveCD, and it detected and mounted the drive fine. Totem played the disc, no questions asked.&lt;br /&gt;&lt;br /&gt;Lots of idiot googling suggested it was my responsibility to manually edit /etc/fstab to add the entry. It only worked when I pointed it at /cdrom0 and rebooted. Currently, nothing is writing to the drive, but I'm trying first with FOSS on both platforms (burnatonce on XP).&lt;br /&gt;&lt;br /&gt;When Sarge became stable and I changed the repository info to reflect this, nothing bad happened. However, when I modified the kernel to the latest version available for stable, the GRUB settings conveniently deleted the first entry which boots Windows. I manually edited it back in; everything fine. When I realized the new kernel was still a 386 kernel and my PIII was a 686, I got the 686 kernel -- and the same thing happened.&lt;br /&gt;&lt;br /&gt;After the 686 kernel was installed, the Debian graphical login stopped working. The keyboard was useless except for a few numeric digits and the Caps lock key wasn't toggling the LED indicator. More googling indicated a separate config had been corrupted, and a keyboard option four characters long had to be edited back into the config.&lt;br /&gt;&lt;br /&gt;The Vortex au8820 audio chip was never detected by Debian at install, and all attempts to modprobe/insmod were in vain. After the 2.6 kernel upgrade I installed alsaconf, ran it and it correctly found the hardware. FWIW Knoppix is equally dense about this audio chip and requires the same fix; Ubuntu liveCDs find it automatically.&lt;br /&gt;&lt;br /&gt;I like the challenge of hacking a system to get it to do something. I don't like keeping an internal diary of the things I'd have to do to someone else's PC to make a usable Debian partition, esp. when most liveCDs already do these things, and gracefully.&lt;br /&gt;&lt;br /&gt;It's a nice distro. I prefer KDE to Gnome and so does Knoppix. Gnoppix is cute, but it isn't really the Knoppix distro with a different desktop environment. However, Debian's biggest competition right now is Ubuntu, and a chunk of Ubuntu's advantage is the degree to which it will hold your hand on the basics. More than anything, this is what defines a desktop OS.&lt;br /&gt;&lt;br /&gt;I've been fortunate; I've never had to recompile my kernel to do something, and I have Sarge running on two PCs in different environments. Nevertheless, Sarge is lazy about detecting and configuring peripherals and network resources, beyond finding and making DHCP connections. The installer never tested the audio, and it took four hours on a DSL connections to grab the basic distro. Debian's on to something with the notion that CD-based installs are dead; however, if Klaus Knopper can fit a 9Gb Debian Sarge distro onto a DVD, maybe the writing's on the wall.&lt;br /&gt;&lt;br /&gt;Will I switch to (K)Ubuntu? Probably not. Ubuntu's shtick is making Sid into a usable product, but the price is steep: Debian releases are named after Toy Story characters, and Sid is the name permanently reserved for the unstable release (Sid=Still In Development). Basing a distro on the least fixed, most experimental release just to have the most cutting edge features is a great idea, but it's difficult to dispel internal FUD about incompatibilities. There are stories of people who switched back to Sarge when something went wrong; Ubuntu is in all likelihood going to be the Fisher-Price My First Linux for desktop n00bs who aren't interested in building servers, unless Debian can suck up the pride and integrate Ubuntu's better user experience.&lt;br /&gt;&lt;br /&gt;Someone said it best on OSNews: Ubuntu doesn't fork Debian, it forks Debian's release schedule. Cairo is ready for Sarge, but Sarge isn't ready for Cairo while most other current distros (Ubuntu included) already have it. For the uninitiated, OS X's graphics engine is a combination of Display PostScript and GPU processing; Cairo is Linux's closest equivalent being bound to the various graphic APIs available for Linux. The implications are applications which (like Flash) think in vector-based objects rather than processing bitmaps, exploiting the power of GPUs. If Debian users have to wait a year or more for a new library to be integrated into the next stable release, it could cause defections. Then again, Debian is a distro aimed at the most diverse number of platforms out there; Ubuntu is available in chocolate and vanilla, where the hardware doesn't differ that much.&lt;br /&gt;&lt;br /&gt;I don't want to see Debian turn into Ubuntu, but I would like Debian to be more aware of my resources, esp. if they change after installation. If a major new library is available, and it can be tested across platforms, add it to the repository. Unless Debian can pass itself off as a desktop OS, they're leaving a vacuum for someone else to fill, and Ubuntu seems pretty comfortable in that place.&lt;br /&gt;&lt;br /&gt;[edit: the day after I wrote this blog entry I discovered that Debian Sarge in fact &lt;span style="font-style: italic;"&gt;has &lt;/span&gt;a 2-DVD-based installer, available by &lt;a href="http://www.debian.org/CD/http-ftp/#stable"&gt;http/ftp&lt;/a&gt; or &lt;a href="http://mirrors.usc.edu/pub/linux/distributions/debian-cd/current/i386/bt-dvd/"&gt;torrent&lt;/a&gt;.]&lt;br /&gt;[correction: when I built my dual-boot box, I stupidly made the Debian root partition not only a paltry 6Gb and the share partition 15Gb, but I let the installer put the root partition at the physical end of the disk. This means that QTparted and GNU parted can't grow it backwards even if I shrink the previous partition.]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-112784330079819719?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/112784330079819719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=112784330079819719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112784330079819719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112784330079819719'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/09/few-observations-on-debian-linux.html' title='A few observations on Debian Linux'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-112231699034969670</id><published>2005-07-25T10:58:00.002-07:00</published><updated>2010-04-07T17:10:25.205-07:00</updated><title type='text'>Check All/Uncheck All JavaScript buttons: Take 2</title><content type='html'>The trouble with JavaScript widgets is that they aren't self-aware, and they're typically designed by someone who has minimal assumptions about the page they're on (or the browsers they're compatible with). DHTML magnifiers assume the content they're meant to magnify is safely at the top of the page, and break when it isn't. Check All/Uncheck All button scripts don't account for the possibility of subranges. And so on and so forth.&lt;br /&gt;&lt;br /&gt;One of our upcoming pages on the site redo is a form with several checkboxes all within the same name group, but subdivided into academic disciplines. The CGI is still expecting the same form data it did before these C/U buttons were added.&lt;br /&gt;&lt;br /&gt;The basic script for checking all boxes goes as follows: an onclick handler passes the entire Input collection to a script, which loops over it and sets the input.checked property to true or false, based on a flag which is flipped at the end of the routine, right before toggling the button text. The trouble here is subranges.&lt;br /&gt;&lt;br /&gt;Fortunately, the subdivisions are separate tables which can be given IDs: the onclick handler sends instead the ID, and walking the DOM tree, the script collects just the inputs which are children of that ID.&lt;br /&gt;&lt;pre class="brush: javascript"&gt;function check(ctainer) {&lt;br /&gt;var field = document.getElementById(ctainer).getElementsByTagName("input");&lt;br /&gt;for (i = 0; i &amp;lt; field.length; i++) {&lt;br /&gt;if (field[i].type.toLowerCase()=="checkbox") {field[i].checked = !checkflag;} &lt;br /&gt;}&lt;br /&gt;checkflag = !checkflag;&lt;br /&gt;return (checkflag) ? "Uncheck All":"Check All";&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Here comes the complexity. The Check All/Uncheck All buttons are useless and confusing to scriptless UAs. Being associated with black magic, they should be inserted dynamically using black magic. In The Good Old Days we would merrily employ document.write or innerHTML to insert the content.&lt;br /&gt;&lt;br /&gt;Well, when you serve pages as XHTML, those methods disappear. Poof. And the reason is simple. XHTML is supposed to be valid XML. If a script can insert any text string into a page, it can break the XML. So, instead we create the C/U button by constructing an input element, feeding it the necessary attributes, and finding an appropriate node to insert it into. 'tdid' is the ID for the table, and 'garth' is the ID of the TH element whose contents the button will be appended to.&lt;br /&gt;&lt;pre class="brush: javascript"&gt;function makeButt(tdid,garth) { &lt;br /&gt;var l=document.createElement('input');&lt;br /&gt;l.setAttribute('type','button');&lt;br /&gt;l.setAttribute('value','Check All');&lt;br /&gt;l.onclick = function() { this.value=check(garth); } &lt;br /&gt;document.getElementById(tdid).appendChild(l);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;The theory is that all elements will be manipulated through setAttribute and removeAttribute, and tag specific methods will be deprecated. The reality is that IE 5/6 has a somewhat incomplete model for which attributes this works. People discovered that in IE, setAttribute didn't like events. So, we're attaching the check function directly to the object's onclick method.&lt;br /&gt;&lt;br /&gt;If you were paying attention above, you'll notice the check function could have used setAttribute to check the boxes and removeAttribute to uncheck them, instead of a tag specific method. The reason it doesn't is because IE can't remove the checked attribute. It just can't. It can, however, set the attribute value to "" which unchecks the box... except in every other browser, which follow W3C spec on arguments and formerly collapsed attributes. If any value, even a blank one, is attributed to a collapsed attribute in HTML code, it's considered to be the same as the collapsed attribute in HTML 3. FF and Opera treat setting the value="" as checking the box.&lt;br /&gt;&lt;br /&gt;The only way to do it in JavaScript is to pack both methods into an if/then subroutine, with the IE method first and the DOM method second. Forked code sucks.&lt;br /&gt;&lt;br /&gt;Oh, and why check the input elements for whether they're checkboxes? The C/U buttons are themselves input elements and should be excluded. Currently, no browser complains when you manipulate the checked property of an input element which isn't supposed to have one (even in XHTML mode), but it isn't inconceivable this too will someday break.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-112231699034969670?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/112231699034969670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=112231699034969670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112231699034969670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112231699034969670'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/07/check-alluncheck-all-javascript.html' title='Check All/Uncheck All JavaScript buttons: Take 2'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-112120551061331755</id><published>2005-07-12T12:18:00.000-07:00</published><updated>2005-09-05T16:13:16.216-07:00</updated><title type='text'>Potentially overlooked CSS tips</title><content type='html'>A friend of mine who does vids just bought her first set of CSS primers and plans retooling her website. In honor of her recent birthday I'll pass along a wordy but useful set of tips. If she values the observations of three years dancing in landmines, she'll pay attention.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Prologue:&lt;/span&gt; in 2002, I started an unrequested skunkworks project of redesigning a tables-based, JavaScript-rollover-infested, accessibility hobbled website from HTML4 to XHTML/CSS. The next year a formal call for a makeover was requested and my R&amp;D was implemented; the results of that redesign are the Cline Library website. Links below to the current 2005 revision:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.nau.edu/library/"&gt;Home page&lt;/a&gt; &lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.nau.edu/library/speccoll/index.html"&gt;Colorado Plateau Digital Archives Search&lt;/a&gt; &lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.nau.edu/library/speccoll/coloplateau.html"&gt;Special Collections and Archives Colorado Plateau&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.nau.edu/library/research.html"&gt;Find Articles&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; These are mentioned not to show off, but because the tips refer to them. I did not design this layout, merely made it CSS based and SSI constructed. And now, the tips.&lt;br /&gt;&lt;br /&gt;CSS Padawan 101:&lt;br /&gt;&lt;div&gt; &lt;ul&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;It's natural for a beginning CSS developer to wrap everything in classed DIVs/SPANs&lt;/span&gt;, and to overdo it. Over time, reexamine your code and look for places where specificity would do the job better with less code. Where my pages seemingly diverge from this advice, it's because of complex inheritance issues: list elements on the newblue homepage behave in sometimes radically different ways depending on their section and purpose. The choices are to stick class attributes on all of them (revisiting the HTML4 formatting tag soup and lengthening the page code) or to wrap them in DIVs with IDs which guarantee separate behavior.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;DTDs matter&lt;/span&gt; when it comes to how browsers treat your CSS. Even if you're a diehard HTML 4.0 enthusiast, leaving out any DTD ensures browsers play in 'quirks mode,' a genteel euphemism for 'browser regresses to flaws of previous major version.' I favor XHTML 1.0/Transitional as a good place to work from.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;DTDs affect more than just CSS.&lt;/span&gt; Older DHTML JavaScripts manipulate object size/position values with unit-less integer values (e.g. 'property.style.top=300' instead of 'property.style.top=300px'). Just as you can't do this with CSS values in the presence of a DTD, IE is appropriately fierce about throwing errors in JavaScript when an XHTML/Transitional DTD is present and units are not, and older scripts may have to be rewritten. Better solutions are to find more current, DOM-friendly versions/alternatives or dump JavaScript altogether.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;An XML prolog will bork the DTD in IE 6.&lt;/span&gt; Get rid of it. If your HTML editor automatically inserts an XML prolog at the top of the file, IE 6 will ignore the DTD below it and throw your browser into quirks mode. This didn't matter with the first layout when IE 5 was king, but it matters plenty with newblue: this 3-column liquid layout is a simple bit of CSS, but in quirks mode IE 6 reverts to pretending it's IE 5 which never understood that simple bit of CSS. Until all mainstream browsers expect websites to be served as XML with an XML MIMEtype, that XML prolog is useless and delete it. Even the W3C validator doesn't balk at its absence.&lt;/li&gt; &lt;/ul&gt;Browsers:&lt;br /&gt;&lt;ul&gt;  &lt;li&gt;&lt;span style="font-weight: bold;"&gt;"It works in IE"&lt;/span&gt; is a terrible fucking excuse for anything. I test against several browsers knowing full well their combined marketshare is less than 15% of our users(although it's a growing share), because coding to standards is a smaller headache longterm than coding to browsers. From experience I speak, padawan. In order for IE 7 to get through &lt;a href="http://www.nefkom.net/g.piesche/ie/"&gt;this&lt;/a&gt; they will have to rewrite a lot more of their renderer than I think they have the will, brains or balls to do.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Opera isn't the yardstick it used to be&lt;/span&gt; on web standards. When they entered the business they made themselves felt as a company more concerned with standards than IE emulation: their insistence that the correct alternative to BODY MARGIN="0" is body{padding:0px;} rather than the {margin:0px;} all other browsers use is still the case with Op8. OTOH Firefox is killing their marketshare outside embedded and certain niche markets, and their product which once had IE UA spoofing as an option now defaults to it, and more critically, slavishly imitates IE's default HTML rendering and proprietary JavaScript properties. They took being shut out of MSN hard. Don't get me wrong, it's still a damn fine browser, with probably the best accessibility integration for Windows (and free integration at that), but at this point the best their fans can say is "Look at the beautiful pluma--er, mouse gestures!" It's still important to test against, since they still claim to use the same render engine in all their products (including embedded).&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Mozilla/FF/NS isn't God either.&lt;/span&gt; Form elements like buttons and checkboxes should be resizable, colorable, etc. with CSS, and IE gets it. The Gecko engine does not. But as of this writing it's still the first place to test modern technologies like CSS2.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;No matter what Apple tells you, &lt;span style="font-weight: bold;"&gt;Safari and KHTML (Konqueror) are not interchangeable&lt;/span&gt; terms. Safari relies more and more heavily on WebKit technology which is not open source, and Dave Hyatt is unapologetic about it. Major improvements in either product's renderer should appear in the other eventually, but only if they're in the KHTML portion. Speaking as someone who uses Konqueror, it's an excellent file browser. As a Web browser, it's an excellent argument for bundling Firefox in Linux distros. And no matter what the Safari user-agent string says, KHTML is NOT "Gecko-like." The Apple tech who put that into Safari is part of the witless protection program now.&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Current screen readers do not respect 'media=' attributes.&lt;/span&gt; This means that the content you meant to hide from visual browsers using display:none; in a stylesheet aimed at media="screen" won't get spoken in aural browsers either, even if you have a separate aural stylesheet overriding the selector. Those of us who deal with the vendors of these "solutions" are livid that &lt;span style="font-style: italic;"&gt;the one sole attribute in HTML meant for their consumption and processing&lt;/span&gt; is ignored, and we fervently pray Freedom Scientific finds itself sued by the Australian/British courts for flouting it. It's not much of a secret that FS is run by Visual Basic hackers cocksure that Microsoft will buy them out and integrate it into Windows. Again, visibility:hidden means "render a blank space the same size as the content." Display:none according to W3C specs actually means "&lt;span style="font-style: italic;"&gt;remove&lt;/span&gt; content from HTML stream" (although not the DOM).&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Lynx &lt;/span&gt;is not a bad choice for crude accessibility testing, and it's still a decent choice for mobile device testing.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Just as you're being told to avoid using fixed (e.g. px) units for fonts, &lt;span style="font-weight: bold;"&gt;consider eliminating them for paddings and margins&lt;/span&gt; on a case by case basis. Page margins are a good place for fixed units; paddings between LI elements are not, no matter how many years of Microsoft word stylesheet have told us (then again, we never had scalable units as an option). Ems make good neighbors.&lt;/li&gt; &lt;li&gt;This is old hat by now, but &lt;span style="font-weight: bold;"&gt;Navbars should be the bottom of your HTML document&lt;/span&gt;. People with screenreaders detest hearing them repeated at the beginning of every page, and skip links are a holdover from purely linear HTML rendering. Moreover, people reading your site on mobile devices will thank you for putting content first. All the above examples on our site use absolute positioning to move the navbar where the sight-unimpaired expect it (top and/or left). BION, there was a time when &lt;a href="http://archivist.incutio.com/viewlist/css-discuss/16568"&gt;this technique was considered controversial&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;CSS hacks suck&lt;/span&gt; for several reasons. First, they presuppose that the parsing errors they exploit will not be patched inside a major release. Secondly, they screw with validators. Thirdly, they screw with integrated web development packages which treat CSS files as valid data structures. Most serious IE hacks are aimed at IE 5.x problems, and local/national stats on 5.x usage are somewhere around that of Netscape 4 users. Pages should degrade gracefully, but if they can't because one end-of-life browser has a seriously broken model, cut your losses.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;IE and Opera arbitrarily default to sizing the text inside text-based form controls at 85% the container font-size whereas Gecko and others use 100%. This means that if those form elements have padding defined in scalable units (ems/exes) that spacing is calculated on the size of the text in those elements, not the parent container's. Without devoting three paragraphs to explain why, it's a good idea for accessibility and consistency to formally declare INPUT,SELECT {font-size:100%;} if you plan to design CSS form layouts which gracefully scale for visual disabilities. Trust me on this one.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Join css-discuss&lt;/span&gt;. It's as much for n00bs as pros, and you'll get exposed to some cutting-edge stuff. Before you know it, you'll be helping people, too.&lt;br /&gt;&lt;/li&gt;   &lt;/ul&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-112120551061331755?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/112120551061331755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=112120551061331755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112120551061331755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/112120551061331755'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/07/potentially-overlooked-css-tips.html' title='Potentially overlooked CSS tips'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111939250761242686</id><published>2005-06-16T15:19:00.000-07:00</published><updated>2005-06-21T15:21:47.620-07:00</updated><title type='text'>M'man, Barry.</title><content type='html'>In high school I was fortunate enough to take classes under Barry Moser. Read &lt;a href="http://www.underdown.org/moser.htm"&gt;this interview&lt;/a&gt; with him.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111939250761242686?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111939250761242686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111939250761242686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111939250761242686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111939250761242686'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/06/mman-barry.html' title='M&apos;man, Barry.'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111863960502608951</id><published>2005-06-12T22:02:00.000-07:00</published><updated>2005-06-13T16:32:48.903-07:00</updated><title type='text'>Whither Classic?</title><content type='html'>&lt;span style="font-style: italic;"&gt;Edit:&lt;/span&gt; I should have read &lt;a href="http://daringfireball.net/"&gt;Daring Fireball&lt;/a&gt; more closely. Classic is &lt;a href="http://daringfireball.net/2005/06/classic_not_supported"&gt;apparently dead in the water&lt;/a&gt;, according to both the Apple Universal Binary Guidelines and whatever sources JG has. Also, apologies to John Gruber for unintentially pilfering his blog's subtitle. I've changed mine to something interimish.&lt;br /&gt;&lt;br /&gt;One serious implication for OS x86: Classic. Darwin's platform independent, and Rosetta is there to handle PPC code before handing it over to the Darwin/OS X API.&lt;br /&gt;&lt;br /&gt;Classic involves 68K emulation, and up until now it's gotten a free ride because PPCs run 68K code faster than native. How's Classic going to work in Teh New Architecture?&lt;br /&gt;&lt;br /&gt;Apple has three possibilities.&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;Keep the compiled PPC emulation code in OS X as a legacy chunk, and let Rosetta translate PPC code emulating 68K code, praying we don't care about performance. Emulation inside translation; this is asking a lot of a system.&lt;/li&gt;   &lt;li&gt;Assume Apple licensed more than just an x86 translation library from Transitive, and OS x86's Classic mode uses direct 68K to x86 translation. Why shouldn't they? The challenge of emulating 68Ks is nowhere near the heavy lifting PPC emulation entails. Moreover, Classic under OS X is essentially two parts: CPU emulation and hooks to Carbon APIs. The Carbon APIs will still be there in OS x86, and until Apple gets their shit together enough to port the Finder to Cocoa, they don't have a choice. Yes, there'll be endianness issues, but at least they're &lt;span style="font-style: italic;"&gt;consistently&lt;/span&gt; flipped.&lt;/li&gt;   &lt;li&gt;Apple tells everyone that five years of Classic support is long enough, and that their engineers canna poosh the warp core no moore, cap'n. Childhood's end.&lt;/li&gt; &lt;/ol&gt; I'll hope for #2. It would be a feather in Apple's cap to carry two OSes through the transition, and with the loss of 64-bit coding (for now) and AltiVec, jettisoning Classic seems like one more sad goodbye. Classic may be cruft, but it's an occasionally useful bit of cruft.&lt;br /&gt;&lt;br /&gt;Sometimes, Steve, you gotta do something just because it's cool to be able to, and being able to sell potential switchers on a box that runs not just the last five years' worth of apps but the last ten or fifteen is damned sweet. No one much gives a damn how you do it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111863960502608951?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111863960502608951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111863960502608951' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111863960502608951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111863960502608951'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/06/whither-classic.html' title='Whither Classic?'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111844442845722414</id><published>2005-06-10T14:21:00.000-07:00</published><updated>2005-06-10T22:44:43.933-07:00</updated><title type='text'>Stage 5: Acceptance.</title><content type='html'>Bob Cringley &lt;a href="http://www.pbs.org/cringely/pulpit/pulpit20050609.html"&gt;just blew his street cred wad&lt;/a&gt;. While his perspective on Intel pulling Apple's strings in the future has merit, most of his assumptions don't wash. He's fortunate that so many people are spouting nonsense from all directions right now, that in the future he'll be able to say we were all frightened fools.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Question 1:  What happened to the PowerPC's supposed performance advantage over Intel?"&lt;/span&gt;&lt;br /&gt;It's fucking moot if IBM won't develop it any faster or smaller while Intel does both. Three years from now, with 4GHz x86 Intel CPUs on the market, if Apple was still making 2.5GHz Macs and unable to even put those in laptops, sales would flatline.&lt;br /&gt;&lt;br /&gt;IBM decided to play it safe on PPC development by throwing in with console gaming where (for now) form factor's irrelevant, chip heat's irrelevant, developers won't embarrass your platform for not advancing, and the public's demands are modest. And they'll succeed anyway, even if they lost a sizeable chunk of mainstream developers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Question 2:  What happened to Apple's 64-bit operating system?"&lt;/span&gt;&lt;br /&gt;Do your fucking homework, Cringely. OS X is largely 32-bit, and programmer guidelines repeatedly discouraged 64-bit dev, in some cases making it impossible (Objective-C won't compile 64-bit code under XCode).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Question 3:  Where the heck is AMD?"&lt;/span&gt;&lt;br /&gt;You're SJ and you've just been corporately embarrassed for the third time in your company's history by a chipmaker's whims or lack of ability. Time to switch. Your choices are the following:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Blue chip industry leader with zero manufacturing problems and a drooling fascination with your company. Modest current product but secure pipeline.&lt;br /&gt;  &lt;/li&gt;   &lt;li&gt;Company with brilliant ideas but a lot less time in the business, a shaky record and a snarky CEO responsible for one of those embarrassing episodes.&lt;br /&gt;  &lt;/li&gt; &lt;/ul&gt; Do the math, Einstein.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Question 4: Why announce this chip swap a year before it will even begin for customers?"&lt;/span&gt;&lt;br /&gt;Translated: "Osborne effect, Osborne effect, Osborne effect." First off, this announcement was at WWDC, not Macworld (where you debut product about to hit shelves). Even if they've busted ass for five years to make the transition easy, they have to tell the coders/manufacturers soon enough to iron out the bugs. There was no way in hell they could have been making these in secret for a year and then spring them on everyone Monday, and dropping the bomb simultaneous to releasing the product is suicide given the limitations of Rosetta.&lt;br /&gt;&lt;br /&gt;Apple wants this box to sing, not oink, and that'll take reeducation camp for the remaining CodeWarrior developers who figured they'd never have to migrate to XCode. From Apple's perspective, CodeWarrior = Motorola, and the objective fact is that CW's backed off from both Win/Mac development in favor of embedded systems.&lt;br /&gt;&lt;br /&gt;That said, IMO a six month window would have been a smarter compromise; more pressure on small developers, with the implicit assumption that migration isn't all that hard. Given the rumors of how little modding it took Apple to make a G5 box into a Pentium box, it may not take twelve months to retool and go to market.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Question 5: Is this all really about Digital Rights Management?"&lt;/span&gt;&lt;br /&gt;No. Pull your head out of your ass. Apple has much better inside relations with the recording/film industry than Microsoft, and in case you forgot, SJ runs a business which is directly part of the film industry. If the industry demanded that the next gen movie format require a hardware chip to encode and another to decode, there'd be no reason or advantage to make it CPU dependent -- in fact, doing so would make it easier to reverse engineer by crackers, DMCA be damned.&lt;br /&gt;&lt;br /&gt;Cringely goes on to say that Intel hates Microsoft. The only thing Intel hates is not having money, and Microsoft can't exactly turn the screws on Intel beyond ensuring that one particular line of processors continues to generate obscene revenues for Intel.&lt;br /&gt;&lt;br /&gt;Cringely hints that HP could become Apple's "hardware partner." This one's been pulled out of the woodwork for close to a decade, on par with Tandy becoming Apple's OEM. Somehow I don't see the Taiwanese who make Macs giving much of a damn which yellow haired devils are paying their $2/hour wages, or Apple deriving a particular benefit from this partnership. It's debatable what Apple and HP view as the benefit of selling branded iPods, beyond HP's distribution network (why you can buy iPods at Radio Shack).&lt;br /&gt;&lt;br /&gt;Intel has enough money to buy Microsoft, never mind Apple. Antitrust legislation is what keeps them out of the OS market, not missed opportunities or alliances. That doesn't mean they can't milk their relationship with Apple "in Apple's best interest," of course, and it's something SJ expects them to do.&lt;br /&gt;&lt;br /&gt;Expect to see Intel pressuring Apple to come out with smaller and smaller devices, and continually providing the hardware to make it possible. You're laughing now, but right now there are $130 battery-powered Linux-based x86 computers on cards &lt;a href="http://www.gumstix.com/"&gt;small enough to fit inside an iPod Shuffle&lt;/a&gt; (or close enough).&lt;br /&gt;&lt;br /&gt;Jobs was right, if hurried, about ditching the Newton. Palm did an excellent job stewarding the only platform you can't replace with Linux, but after 10+ years the Palm economy is hurting as it becomes further and further removed from general purpose OSes going into smaller and smaller places. OS development there has stagnated considerably, with nothing new to show each year except more expensive models losing ground to laptops. Palm's splitting its own product line into thirds: disposable contacts managers for students, phones for salesmen, and ur-laptops price competitive with nothing.&lt;br /&gt;&lt;br /&gt;Prediction's a fool's game. What I will say is that Jobs saw the trend away from desktops and toward laptops, understood IBM wasn't interested in making that possible for Apple, and Jobs took the only road he could to stay in the game.&lt;br /&gt;&lt;br /&gt;If &lt;span style="font-style: italic;"&gt;you&lt;/span&gt; visualize a 7x10 tablet Mac with a wireless keyboard, a cover that hinges back into an easel for QuickTime 7 theatre DVD playback or Grand Theft Auto pimpin', a more visual jukebox interface for iTunes, and a considerably less junked up Finder, that's your business.&lt;br /&gt;&lt;br /&gt;Me, I have a more specific vision of the next WWDC surprise, but I can't say. Too early.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111844442845722414?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111844442845722414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111844442845722414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844442845722414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844442845722414'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/06/stage-5-acceptance.html' title='Stage 5: Acceptance.'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111827654374793511</id><published>2005-06-08T16:41:00.000-07:00</published><updated>2005-06-10T16:05:38.153-07:00</updated><title type='text'>More like twenty steps backward.</title><content type='html'>&lt;a href="http://www.xlr8yourmac.com/index.html#S19337"&gt;Mac card vendor finds indications x86 Macs likely to use BIOS rather than EFI.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fuck.&lt;br /&gt;&lt;br /&gt;Mac controller card vendor George Rath isn't spelling out his argument clearly enough, so I will. Disclaimer: I'm not a developer, I'm just putting two and two together.&lt;br /&gt;&lt;br /&gt;So far Apple's being real tight-lipped on what firmware the x86 Macs will use. Try googling 'BIOS' site:apple.com and after you've sifted through tons of Biography pages, what you'll mostly find is ancient articles referring to the difference between PowerMac and Intel architecture. Google 'EFI' site:apple.com and you'll get references to a color proofing system that uses the same acronym, and a handful of references to OpenDarwin libraries for Extensible Firmware Interface. Good, right?&lt;br /&gt;&lt;br /&gt;Wrong. For one thing if you google 'extensible firmware' site:apple.com you get zero hits. Nada. Zilch.&lt;br /&gt;&lt;br /&gt;Where the shit hits the fan is here. I'll skip repeating the part in the Apple Universal Binary Specifications which baldly states x86 Macs aren't using Open Firmware (but avoids saying what they are using):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_7.html#//%0Dapple_ref/doc/uid/TP40002217-CH239-283969"&gt;Apple Univ. Binary Tips Ch. 5, Section 7 -  "Disk Partitions"&lt;/a&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;"The partition format of the disk on a Macintosh using an Intel microprocessor differs from that using a PowerPC microprocessor. If your application depends on the partitioning details of the disk, it may not behave as expected. Partitioning details can affect tools that examine the hard disk at a low level."&lt;/blockquote&gt;Let's compare this with Amit Singh's older article explaining the difference between OF and BIOS for kernelthread.com, &lt;a href="http://www.kernelthread.com/publications/firmware/"&gt;More Power to Firmware&lt;/a&gt; (emphasis mine):&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;The PC partitioning scheme is tied to the BIOS&lt;/span&gt;, and is rather inadequate, particularly when it comes to multibooting, or having a large number of partitions. PC partitions may be primary, extended, or logical, with at most 4 primary partitions allowed on a disk. The first (512-byte) sector of a PC disk, the Master Boot Record (MBR), has its 512 bytes divided as follows: 446 bytes for bootstrap code, 64 bytes for four partition table entries of 16 bytes each, and 2 bytes for a signature. Thus, the size of a PC partition table is rather limited, hence the limit on the number of primary partitions. However, one of the primary partitions may be an extended partition, and an arbitrary number of logical partitions could be defined within it. Note that Apple's partitioning scheme is much better in this regard.&lt;/blockquote&gt;Or rather, it used to be. About the only sunny side to this is Intel's &lt;a href="http://developer.intel.com/technology/efi/agree.htm"&gt;EFI specification&lt;/a&gt; (PDF) which indirectly mentions backwards compatibility to "PC-AT" partitioning schemes.&lt;br /&gt;&lt;br /&gt;We're left with the following possibilities.&lt;br /&gt;&lt;br /&gt;Hopeful: Rushes have led to developer boxes using BIOS, but consumer Macs will use EFI.&lt;br /&gt;Taking a long view: Developer boxes are using EFI but even EFI's advances still require Apple to spell out non-OF partitioning differences.&lt;br /&gt;Pessimistic: Developer boxes are using BIOS, consumer boxes are using BIOS and ultimately we're fucked.&lt;br /&gt;&lt;br /&gt;To some extent the die's already cast. A PPC Mac is two things at the same time: GUI Unix and hot iron. An x86 Mac is a pretty OS in a sea of pretty x86 OSes struggling with legacy hardware issues -- except for the other two, most of their apps aren't also spending the next 2 years running at 70% under software emulation. Longhorn can afford to hamstring its performance until IA64 is the norm. Linux sells itself on local compiles and generous variety of readymade builds.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111827654374793511?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111827654374793511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111827654374793511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111827654374793511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111827654374793511'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/06/more-like-twenty-steps-backward.html' title='More like twenty steps backward.'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111847609222745216</id><published>2005-06-07T20:45:00.000-07:00</published><updated>2005-06-11T00:48:12.233-07:00</updated><title type='text'>Shiny epaulets.</title><content type='html'>After careful lobbying on my part, I have been reclassed from Library Specialist to Applications Systems Analyst. The former is a general description which could apply to virtually any clerical/paraprofessional in the building, and in five years I haven't learned dick about librarianship or for that matter worked close to librarians outside of the web development team.  As one of my co-workers introduced me to a new hire and tried to explain to her what I did compared to what Brian does, I said, "Brian writes the music, I create the instruments we play it on." Seems pretty accurate to me. After several years doing graphic design, I'm continually surprised with Brian's aptitude with no formal experience or training.&lt;br /&gt;&lt;br /&gt;And yes, it comes with a raise, which is good since Ruth plans to stay at home with Maryalee this year. In late 2002, we moved out of the apartment into a house, and this spring we refinanced. No mean feat; my piss turned to ice when I read this week that over 1 in every 3 Arizona mortgages are now interest-only (in 2000 that figure was closer to 1 in 100). FWIW there are apartments in Flagstaff whose rent is higher than our refi'd mortgage payment. It's obscene. Literally, morally obscene.&lt;br /&gt;&lt;br /&gt;My duties won't really be changing; what I've been doing for the last few years has fit the new job description better, and it's not arrogant to ask for formal recognition. As in previous jobs, I've piloted innovations and improvements in this position which have benefited everyone and made less work for us down the road. I am fortunate to work with people who appreciate it; I know people who have improved their skills only in spite of being treated badly at work, but they only do so with an eye on their next job elsewhere. Tacked on the corkboard behind my monitor at work is a worn, folded, hand-told half sheet of LaserWriter paper from 1992, handed to me with a job offer for a graphic designer/resume writer position (mentioned in this blog's first entry). 13 years later, I keep that printout as a pointed reminder; in good times it reminds me of how far I've gone. In bad times it reminds me how much tougher things were at one point, and that I survived.&lt;br /&gt;&lt;br /&gt;Web standards have come a long way since I started working at Cline Library, and I've striven to adhere to them and maintain browser compatibility, when management would have let me get away with coding the site for IE, with table-based layouts and JavaScript widgets everywhere. Paradoxically as I continue doing my work better, the result gets more and more invisible to the end user. Random content like images used to be hand-coded JavaScripts inlined on the pages, then was refined and externalized and finally replaced altogether with server-side includes harvesting Perl CGIs. Even image-based rollover links are now possible with CSS rather than JavaScript, due to a technique I haven't yet seen elsewhere. The programming component of the job is still there, but it's become a lot subtler.&lt;br /&gt;&lt;br /&gt;A current (and ongoing) frustration is with accessibility. My chief motivation for abandoning table based layouts is the amount of extra work it takes to make a complex table layout render in a logical fashion by screen readers. Check out our website in a screen reader or Lynx or a web phone -- it just works. To CSS unaware browsers, the content renders first and the navigation last. It's a common solution now; it wasn't when I suggested it to CSS-discuss 3 years ago.&lt;br /&gt;&lt;br /&gt;And yet, screen readers are still hideously primitive. JAWS still refuses to honor the only HTML tag specifically aimed at it, to prevent it from importing screen-only stylesheets, and limits you to using IE. Apple's VoiceOver only works with Safari, and gives every impression of being rushed to market. Opera's reader doesn't automatically read pages when they load, and Opera's designers sincerely believe we're going to return to designing separate XML-based pages requiring a different extension and MIMEtype, only to serve one browser for one platform. All three largely ignore label tags when encountering forms. Despite the label tag being designed as a wrapper for form elements, WAI insists on labels being outside those elements and declared with FOR=ID, and prebuilt sample text in all fields.&lt;br /&gt;&lt;br /&gt;The simpler we try to make things for ourselves, the more complex they get. A simple CSS pseudo-selector, :hover, which by W3C spec should be available to all elements, is only available to A links in IE. This limitation is what's kept CSS/unordered list-only dropdown menus off web pages for the last 3 years. A German developer discovered an elegant HTC-based solution which essentially rewrites IE's own handler code to behave according to spec. No alteration of your existing CSS, except for a line of non-spec code all non-IE browsers will ignore.&lt;br /&gt;&lt;br /&gt;But if the stylesheet loading the behavior is on a different server than the page requiring it, IE refuses to load the behavior for security reasons -- even though both servers are within the same domain and Microsoft's own documentation is clear that the security restriction is supposed to only apply between domains. After some guessing I found a line of JavaScript which relaxes this restriction.&lt;br /&gt;&lt;br /&gt;My predecessor was three times the graphic designer I am. But I think faced with the same problem, he would have stuck with a 3 year old, accessibility unfriendly, 30K noncacheable DHTML solution.&lt;br /&gt;&lt;br /&gt;We're doing a retread of the site soon. It won't have the same technical hurdle the prior retread had; abandoning tables, developing CSS layouts, migrating boilerplate to SSI includes... But it refines the prior commitment to CSS and accessibility, with a more hierarchical, centralized and flexible stylesheet, and exploits fluid layouts not possible with IE 5.0 (the leading version during the prior retread). All visible telephone and fax numbers are silently becoming tel: and fax: links, restyled for screen browsers to look like plain text. Anyone browsing with phones now will see the links; selecting them will dial the numbers. We're also making some tougher decisions about graceful degradation across all browsers as Netscape 4 becomes a distant memory and IE 5.0 is nearly unheard of; I detest CSS hacks and those which exploit parser bugs especially. Older online exhibits for Special Collections and Archives are being duplicated and the offline versions converted to CSS and checked against the originals.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111847609222745216?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111847609222745216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111847609222745216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111847609222745216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111847609222745216'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/06/shiny-epaulets.html' title='Shiny epaulets.'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111808732811430883</id><published>2005-06-06T11:17:00.000-07:00</published><updated>2005-06-06T12:48:48.120-07:00</updated><title type='text'>Apple: The Road Ahead</title><content type='html'>Christ almighty. Keynote speech is over, and the worst has been confirmed. PPC is effectively dead and &lt;a href="http://www.eweek.com/article2/0,1759,1656622,00.asp"&gt;Marklar&lt;/a&gt; is the future of the Mac platform. Tiger demoed on a stock x86, not a word about proprietary hardware.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.apple.com/pr/library/2005/jun/06intel.html"&gt;Apple&lt;/a&gt;'s and &lt;a href="http://www.intel.com/pressroom/archive/releases/20050606corp.htm"&gt;Intel&lt;/a&gt;'s press release pages are glowing. I don't think my brother who just bought a Powerbook is going to be glowing. The $2500 I sunk 18 months ago into a dual G5 isn't leaving me glowing. I can't imagine the salesfloor staff at Apple stores are cheering, either. Even with a 2 year transition period and all the promises in the world that apps will ship with fat binaries, I can't see PPC Mac sales remaining positive before the Intel boxes are shipping.&lt;br /&gt;&lt;br /&gt;Here's what I can't understand.&lt;br /&gt;&lt;br /&gt;Apple's entire business model is selling turnkey &lt;span style="font-style: italic;"&gt;systems&lt;/span&gt;. Computers you don't need to be smart to use, music players an idiot could load and play. Note the emphasis on nouns referring to hardware, hardware that doesn't have clones. In other words, you want the Apple experience, you have to buy the Apple hardware to run it on. And Apple turns a tidy profit selling that hardware, and effectively killed the clone market when it started to dilute their sales.&lt;br /&gt;&lt;br /&gt;So, if Leopard is going to run on generic x86 hardware, how does Apple make money when their OS can run on Joe Schmuck's Alienware box and Joe's busy getting Leopard off P2P? Apple's only current software revenue stream is OS upgrades and niche video editing software.&lt;br /&gt;&lt;br /&gt;Presumably Intel's recent news about chip level DRM could make it impossible to pirate Longhorn/Leopard, but I don't know.&lt;br /&gt;&lt;br /&gt;Second thing: this is putting Apple's feet to the fire on the matter of whether OS X is actually more secure than Windows. Now that OS X will run on stock x86es, how many existing x86 virii will be retooled slightly for it? Is the gamble that virus authors won't bother trying to crack a niche OS, and by the time that its market share is significant enough to be attractive, the OS will be so robust as to make the prospect daunting?&lt;br /&gt;&lt;br /&gt;Nothing makes sense any more.&lt;br /&gt;&lt;br /&gt;By predicting the future based on what's reasonable, I seem to consistently alter it for the worse. So, here's my "bad rice" prediction.&lt;br /&gt;&lt;br /&gt;To Apple's dismay, the mainstream media will not trumpet this as a Good Thing. The blogosphere will be filled with hate, fear and confusion, and the mocking laughter of Apple-bashers. Angry, embittered Mac loyalists will divide between flocking to Windows and Linux, where their financial investments are minimal.&lt;br /&gt;&lt;br /&gt;Without any regulation from Republicans in Washington, Microsoft will continue patenting everything and start using the courts to effectively destroy open source. Our future trade agreements with the EU will not-so-thinly imply that not following suit will be considered an act of war. Linux will disappear outside of China.&lt;br /&gt;&lt;br /&gt;Within five years Steve Jobs will get on stage and wax about Apple's bright future, right before Bill Gates walks out of the curtains and they jointly tell us MS bought them out, but not to worry, "we have a firm commitment to the future of OS X." Within another twelve months MS management decisions will convince Apple developers to jump ship, and MS stockholders will  snuff Apple.&lt;br /&gt;&lt;br /&gt;Overnight, Microsoft will "purchase" System V UNIX from their holding company SCO. Congress will pass murkily-worded IP legislation further putting the nails in the coffins of non-commercial licenses, and Microsoft will exploit it to effectively criminalize the existence of FreeBSD, and most likely extort a promise from OpenOffice that it no longer read or write Microsoft formats. The EFF will bankrupt itself trying to defend cases like these; the few that make it to SCOTUS will see Bush appointees ruling solidly in favor of the ownership society.&lt;br /&gt;&lt;br /&gt;With naysayers telling us that it couldn't happen, everything will become a monoculture: processors, formats, OS. Windows will transition to a POSIX infrastructure, but they'll have free rein to bastardize its compliance beyond recognition.&lt;br /&gt;&lt;br /&gt;This is supposed to be my 12th wedding anniversary. I feel utterly fucked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111808732811430883?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111808732811430883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111808732811430883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111808732811430883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111808732811430883'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/06/apple-road-ahead.html' title='Apple: The Road Ahead'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111766330407283537</id><published>2005-06-01T09:59:00.000-07:00</published><updated>2005-06-01T15:31:04.313-07:00</updated><title type='text'>Open Letter To Dreamweaver Development Team</title><content type='html'>As a general rule I think Dreamweaver rules. I've been using it since 3.0 and it's still the best Win/Mac site development tool there is. It won't arbitrarily rewrite your code like Netscape Composer/Nvu or FrontPage, and it doesn't default to creating browser-centric code like FP. Its JavaScript based framework (preceding Firefox's conception by years) has allowed many useful extensions to be added (disclaimer: I wrote some &lt;a href="http://www.macromedia.com/cfusion/exchange/index.cfm?view=sn101#loc=en_us&amp;view=sn103&amp;amp;viewName=Uploads%20by%20Author&amp;authorid=18965848&amp;amp;page=0&amp;scrollPos=0&amp;amp;subcatid=0&amp;snid=sn103&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;itemnumber=-1&amp;extid=0&amp;amp;catid=0"&gt;rather modest extensions&lt;/a&gt; myself). They worked most of the kinks out of the FTP problems.&lt;br /&gt;&lt;br /&gt;It still hits the brick wall on one issue. Site-root-relative URLs. URLs typically fall into three types:&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;&lt;span style="font-weight: bold;font-family:trebuchet ms;" &gt;Absolute&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;img src="http://www.nau.edu/library/images/doggy.png" /&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Upside:&lt;/span&gt; Excellent for guaranteeing stable links; can be used everywhere in your site.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Downfall:&lt;/span&gt; Dependent on you never changing your domain. DW's Display View won't resolve them and shows you broken image links (or in the case of stylesheets, they aren't applied).&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;font-family:trebuchet ms;" &gt;Document-relative&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;img src="../images/doggy.png" /&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Upside:&lt;/span&gt; short, easy for DW to understand and display correctly in DV. Portable if you change a site's server/domain.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Downfall:&lt;/span&gt; unless you only move pages inside DW's own file manager these links break.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;font-family:trebuchet ms;" &gt;Site-root-relative&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;img src="/library/images/doggy.png" /&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Upside:&lt;/span&gt; all the stability of absolute links, with document-relative's domain agnosticism.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Downfall:&lt;/span&gt; DW is incredibly stupid about resolving these in Display View because it considers that URL to be relative to the top of your local site root instead of resolving it relative to server.domain.tld like every browser on the planet since the beginning of the internet.&lt;br /&gt;&lt;/li&gt; &lt;/ol&gt; Macromedia's aware of the problem. Or rather, they're not aware of it &lt;span style="font-style: italic;"&gt;as &lt;/span&gt;a problem, suggesting you maintain a local directory structure parallel to the entire server you're working with, and going so far as to say only massive content aggregators like ESPN truly need site-root-relative URLs.&lt;br /&gt;&lt;br /&gt;In a campus environment we're a lot less likely to use a local/remote FTP model for site management and a lot more likely to map the servers to local drives.&lt;br /&gt;&lt;br /&gt;My personal space on the campus staff server is &lt;kbd&gt;/webhome/ar24/public_html/&lt;/kbd&gt; which equates to &lt;kbd&gt;http://www2.nau.edu/~ar24&lt;/kbd&gt;. I have privs to map my &lt;kbd&gt;public_html&lt;/kbd&gt; to a drive, &lt;kbd&gt;G:\&lt;/kbd&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;[No sysadmin in their right mind would give me privs to map &lt;kbd&gt;/webhome/&lt;/kbd&gt; directly, and even if they did, every time I opened DW's Files tab it would slow down to a crawl trying to refresh its internal listing.]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I create a site in DW using &lt;kbd&gt;G:\clockwork\&lt;/kbd&gt; as the Local Root Folder and &lt;kbd&gt;http://www2.nau.edu/~ar24/clockwork/&lt;/kbd&gt; as its HTTP address just as I should. Inside my site are the following:&lt;br /&gt;&lt;br /&gt;&lt;kbd&gt;http://www2.nau.edu/~ar24/clockwork/pages/yarbles.html&lt;br /&gt;http://www2.nau.edu/~ar24/clockwork/images/alex.gif&lt;br /&gt;http://www2.nau.edu/~ar24/clockwork/moloko.css&lt;/kbd&gt;&lt;br /&gt;&lt;br /&gt;&lt;kbd&gt;yarbles.html&lt;/kbd&gt; links to the stylesheet at &lt;kbd&gt;src="/moloko.css"&lt;/kbd&gt; and has an image link where &lt;kbd&gt;src="/~ar24/clockwork/images/alex.gif"&lt;/kbd&gt;.&lt;br /&gt;&lt;br /&gt;In Display View, the stylesheet will be applied but the image comes through as a broken link. When I view the page in a browser using &lt;kbd&gt;http://www2.nau.edu/~ar24/clockwork/pages/yarbles.html&lt;/kbd&gt; the exact opposite happens; the image comes through but the stylesheet is not applied. Why?&lt;br /&gt;&lt;br /&gt;Because DW's Display View pseudo-browser renderer only understands your local site topology.&lt;br /&gt;&lt;br /&gt;It doesn't see a &lt;kbd&gt;~ar24&lt;/kbd&gt; directory below &lt;kbd&gt;G:\&lt;/kbd&gt; so it assumes the URL is incorrect. It &lt;span style="font-style: italic;"&gt;does&lt;/span&gt; see a &lt;kbd&gt;moloko.css&lt;/kbd&gt; at the "root" of &lt;kbd&gt;G:\&lt;/kbd&gt; so it wrongly imports the stylesheet.&lt;br /&gt;&lt;br /&gt;Second real-world example: the Cline Library website at &lt;kbd&gt;http://www.nau.edu/library&lt;/kbd&gt;. In reality &lt;kbd&gt;www.nau.edu&lt;/kbd&gt; is on one server (mutt) and &lt;kbd&gt;www.nau.edu/library&lt;/kbd&gt; is on another (jeff), where &lt;kbd&gt;/library&lt;/kbd&gt; redirects to jeff's root-level &lt;kbd&gt;/public_html&lt;/kbd&gt;. This is far more common than you might think.&lt;br /&gt;&lt;br /&gt;In this case we've mapped &lt;span style="font-style: italic;"&gt;jeff's entire root&lt;/span&gt; to a local drive &lt;kbd&gt;H:\&lt;/kbd&gt; and created the DW site at &lt;kbd&gt;H:\public_html\&lt;/kbd&gt;, being sure to define &lt;kbd&gt;http://www.nau.edu/library/&lt;/kbd&gt; as the site URL. However, remember that valid SSR URLs must start with &lt;kbd&gt;/library/&lt;/kbd&gt; because the server delivering the pages is still using this bit of redirection.&lt;br /&gt;&lt;br /&gt;So, a page with a correct SSR link to an image at &lt;kbd&gt;/library/images/logo.png&lt;/kbd&gt; will fail in Design View because &lt;kbd&gt;H:\&lt;/kbd&gt; doesn't have a &lt;kbd&gt;/library&lt;/kbd&gt;. An incorrect link to &lt;kbd&gt;/images/logo.png&lt;/kbd&gt; will show the image in Design View but fail in the real world.&lt;br /&gt;&lt;br /&gt;In both cases DW's Design View fails because it can't conceive of a site root corresponding to anything except a URL directory coming immediately after the domain name. And strictly speaking, it doesn't have enough information to reliably make that call.&lt;br /&gt;&lt;br /&gt;All it would require of DW to correctly resolve SSR URLs is one more site definition field: the relative SSR URL equivalent to the local root folder. Prototype below:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www2.nau.edu/%7Ear24/images/dwsd.gif" /&gt;&lt;br /&gt;&lt;br /&gt;Note to engineers: I'm aware that this means parsing work for "Preview in Browser," since PiB serves &lt;kbd&gt;file:&lt;/kbd&gt; rather than &lt;kbd&gt;http:&lt;/kbd&gt; tempfiles to browsers, and SRR URLs are unreliable inside &lt;kbd&gt;file:&lt;/kbd&gt;-browsed pages. However, the above dialog gives DW everything it needs to replace SRR URLs with relative URLs in the tempfile. Considering that PiB routinely simulates server behaviors by inserting/substituting content, this isn't exactly asking you to forge new territory.&lt;br /&gt;&lt;br /&gt;I respect completely that DW gives a lot of support to relative linking, e.g. moving files around in the File browser automatically updating those links. I also think this functionality is being used as a crutch to avoid implementing a &lt;span style="font-weight: bold;"&gt;standard&lt;/span&gt; many web developers have asked for, and whether or not Macromedia likes it, the future of content management includes pages being moved around, independently of Dreamweaver.&lt;br /&gt;&lt;br /&gt;More importantly, if a site has a clear definition of the relationship between URL and local site root, there aren't any more excuses why resources inside the site root linked to with an absolute URL cannot display in Design View. This is string comparison, not DNS resolution, and a 7 year old product should be expected to understand it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111766330407283537?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111766330407283537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111766330407283537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111766330407283537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111766330407283537'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/06/open-letter-to-dreamweaver-development.html' title='Open Letter To Dreamweaver Development Team'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111733115011582359</id><published>2005-05-28T17:08:00.000-07:00</published><updated>2005-05-28T20:32:48.933-07:00</updated><title type='text'>Making DVDs without pro apps revisited</title><content type='html'>In a previous post I learned the hard way that making compilation DVDs with Final Cut from source movies has the unwanted time/disk space baggage of reprocessing, and FC's highly finicky nature about the KHz of the clips. I also learned that QT Pro does a jim-dandy job of snipping out commercials and saving short reference movies for iDVD.&lt;br /&gt;&lt;br /&gt;Which brings me to the next challenge. By default iDVD considers separate movie clips dropped into it as, well, &lt;span style="font-style: italic;"&gt;separate&lt;/span&gt;. Click one and it plays, but at the end it returns to the main menu instead of continuing to the next, the way you'd expect chapters to play on a theatrical DVD. And there's no "play all" option.&lt;br /&gt;&lt;br /&gt;In order for iDVD to consider clips as being linear chunks of a sequence, they have to &lt;span style="font-style: italic;"&gt;be&lt;/span&gt; linear chunks in a sequence &lt;span style="font-style: italic;"&gt;when dropped into iDVD&lt;/span&gt;. If iDVD doesn't see chapter markers in a file dropped into it, it considers them self-contained, unsubdividable sequences.&lt;br /&gt;&lt;br /&gt;If you don't have Final Cut, you've got two options for making chapter markers. Prior to iMovie HD, you had to have QT Pro, a text editor, an understanding of QT's caption markup language, and the patience of a saint. And enough time and disk space to export a separate, self-contained movie of the original movies put together in order. It's time consuming and may crash at the 98% complete point. Oh, and there's a pretty good chance iDVD won't recognize the chapter titles if anything's amiss. Suddenly FC's razorblade icon starts suggesting its other popular connotation.&lt;br /&gt;&lt;br /&gt;iMovie HD offers a simpler solution. As before, edit your source clips in QT Pro, save reference movies, and then open a new iMovie project. Drop the reference movies into iMovie's timeline in your preferred order, then click the iDVD button. A list window appears; click each movie clip then click "Add Chapter." Then click "Create iDVD Project" and iMovie does the dirty work for you, silently building a chaptered reference movie and dropping it into a new iDVD project. Main menu title screen with "Play All/Select Chapter" options, and a second page with the default chapter metaphor (&lt;span style="font-style: italic;"&gt;e.g.&lt;/span&gt; freezeframes of the chapter beginning).&lt;br /&gt;&lt;br /&gt;As a test I did this reusing the clips from the last DVD project I built. The first three movie clips came in lickety split... ...then the fourth sprung the dreaded "Importing Files" dropdown, with an import time longer than the clip. I cancelled it and tried the fifth clip. Same result. Why? Is there some "honeymoon" limit of roughly 60 minutes before imports go to hell? I doubt it.&lt;br /&gt;&lt;br /&gt;As it so happens the first three clips were 20-minute reference movies saved from original 32-minute movies. The fourth and fifth were 20-minute reference movies saved from the same original 62-minute movie. I suspect iMovie's import speed is proportional to the number of edits from the source movie. Interestingly enough, after import the aspect ratio on the two clips is squashed with black TV-safe margins above and below.&lt;br /&gt;&lt;br /&gt;We'll see how the final movies come out. If this technique works I have a vastly improved workflow for my MST3K conversion process.&lt;br /&gt;&lt;br /&gt;Unusual note: I was testing how well the H.264 codec performs when I noticed shit-awful levels of flicker. At first I was inclined to blame the codec itself, but when getting info on the samples I saw they had fps rates of 11 and 14 instead of the 29.97 AlchemyTV was told to capture. The clearly visible frame overlap in freeze frames proves it.&lt;br /&gt;&lt;br /&gt;So, the question of the day is what's changing the framerate?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111733115011582359?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111733115011582359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111733115011582359' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111733115011582359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111733115011582359'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/05/making-dvds-without-pro-apps-revisited.html' title='Making DVDs without pro apps revisited'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111691051488949181</id><published>2005-05-23T20:52:00.000-07:00</published><updated>2005-05-23T22:59:07.700-07:00</updated><title type='text'>Gentrification</title><content type='html'>It's one thing to crow about the virtues of designing web sites using XHTML/CSS instead of HTML4 tables and JavaScript. It's another to go back to one of your own Frankenstein jobs and fix it.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.nau.edu/library/speccoll/exhibits/lauzon"&gt;Bert Lauzon exhibit&lt;/a&gt; was one of two I inherited midstream from my predecessor, a talented graphic designer named Bob Lunday. Bob set the tone for what exhibits could look like. However, when he left NAU for W.L. Gore in late 1999, Dreamweaver 3 was teh hotness, and Web design was largely a matter of building tables.&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Websites were designed in Photoshop, chopped in ImageReady into tables and given over to DW for cleaning up the aftermath. &lt;/li&gt;   &lt;li&gt;JavaScript rollovers were everywhere, along with image preloaders. At a time when most people still had dialup connections I can't explain what we were &lt;s&gt;smoking&lt;/s&gt; thinking.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;We were just beginning to figure out that using the LAYER tag wasn't such a good idea.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;CSS was used mainly for link text rollover effects in IE since Netscape wouldn't support it until 6.0 came out, and Netscape 4's CSS model was eight kinds of broken.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;We duplicated everything across every page — scripts, rudimentary CSS, BODY formatting, everything. Possible exception for long script modules.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;JavaScripts were written for Netscape 4 or IE 4, both of which used dialects soon to be obsolete, and browser sniffing and code forking was everywhere. DHTML authors were the only ones working on universal wrapper functions, which as they metastasized from functions into entire libraries, eventually became more of a problem than a solution.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Most JavaScripts looked more like BASIC-Plus than object-oriented code because conceptually most script authors weren't coming from C++ or Java backgrounds and didn't recognize the potential or good programming practices.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; While designing the exhibit, I was confronted with a handful of images too large for the screen but whose details zoomed in took the subject out of context. I opted for what was then a hot JavaScript item — a sliding magnifier pane. Superimposed over a thumbnail image is a pane you can drag around the screen to see a closeup of what's below. It's a combination of mouse event capturing and CSS image clipping that typically uses a separate image for the magnifier pane.&lt;br /&gt;&lt;br /&gt;The magnifier pane is an excellent example of a concept not ready for the real world. Invariably the demos are on pages which aren't long enough to scroll, so the issue of dynamically calculating the offset of the pane from the thumbnail never comes into play.&lt;br /&gt;&lt;br /&gt;Typically when I find a JS widget from someone else, there's a honeymoon period followed by the stark truth of how easily it breaks when just a few basic assumptions in the original design are challenged with real world requirements. Recently a charming little script for automatically checking/unchecking all the boxes in a form met the real-world problem of what happens when half those boxes are divided &lt;em&gt;visually&lt;/em&gt; from the other half, but share the same NAME value (&lt;abbr title="for example"&gt;e.g.&lt;/abbr&gt; separate fieldsets). The code had to be rewritten to take a container ID and use a different method for collecting the INPUT objects.&lt;br /&gt;&lt;br /&gt;Back to the magnifier pane. With the thumbnail in an unknown position, I had to rewrite the code to account for the pane's location. At the time, the 4.0 browsers were dominant. It would be nostalgic to say the differences in the dialects were mostly semantic; the truth is the object models diverged unpleasantly, and the dialects reflected different paradigms. My "force relative position" script in the body onload discovered each thumbnail's coordinates, then repositioned the pane relative to the thumbnail. This was complicated by the limitation that IE 4 only returned the coordinates of an HTML element relative to its container element, not the page, so if the image was in a table (like all of them are in the exhibit), the script had to be modified to take the container ID as well. If IE was detected the &lt;em&gt;table's&lt;/em&gt; coordinates were determined instead and then the thumbnail's offset from the table was fudged to create the image coordinates.&lt;br /&gt;&lt;br /&gt;In its 2000 incarnation, the magnifier pane breaks in all modern browsers, whose script engines expect DOM models for event capture, object referencing and style property names. This is actually a good thing. The challenge was finding a modernized version of the magnifier pane, since the original author seems to have forsaken it. Thankfully &lt;a href="http://libweb5.princeton.edu/visual_materials/hb/cases/earlysewing/1.magnifier.html"&gt;someone at Princeton&lt;/a&gt; either wrote or found a fix which cooperates in IE/Moz/Opera/Safari (but not in Konqueror). Its only drawback is that in IE under W2K the pane blanks while you drag it—most likely due to its method of overloading all BODY drag behaviors (thinking like OOP rather than procedural code). Under XP it's fine.&lt;br /&gt;&lt;br /&gt;The rest of the Lauzon exhibit still requires reworking. Completed so far:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;2-row, 1-column image/caption tables have been changed to 1-cell tables with CAPTION elements (not a perfect solution, but until HTML has rendered caption metadata for image tags this is it).&lt;/li&gt;   &lt;li&gt;JavaScript rollover image buttons are now completely CSS, utilizing a transparent IMG trick I recently developed (and haven't seen duplicated elsewhere). The default button image is a transparent single-pixel GIF stretched to the background image's dimensions; a hover behavior on the link overrides the background image. Cross browser compatible without csshover.&lt;/li&gt;   &lt;li&gt;The remaining table formatting is mostly replaced with CSS and more syntactically meaningful code. Bert Lauzon's diary entries are BLOCKQUOTEs.&lt;/li&gt;   &lt;li&gt;The &lt;a href="http://www.nau.edu/library/speccoll/exhibits/lauzon/images/wwbassad.gif"&gt;image of W.W. Bass' classified newspaper advertisement&lt;/a&gt; has been given a LONGDESC pointing to &lt;a href="http://www.nau.edu/library/speccoll/exhibits/lauzonredo/pages/bassad.html"&gt;a separate web page&lt;/a&gt; containing a reasonable simulation in CSS. I haven't seen any formal declarations stating that LONGDESC pages are supposed to avoid any CSS markup, so for now it isn't cheating.&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111691051488949181?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111691051488949181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111691051488949181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111691051488949181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111691051488949181'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/05/gentrification.html' title='Gentrification'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111671627377478354</id><published>2005-05-21T14:59:00.000-07:00</published><updated>2005-05-21T16:08:28.553-07:00</updated><title type='text'>How not to make DVDs of your favorite TV shows</title><content type='html'>What I've been doing for close to a year now is capturing shows with AlchemyTV DVR to .MOVs on my hard drive, then editing out commercials in Final Cut Express 1.0.1, exporting .MOV and dropping into iDVD.&lt;br /&gt;&lt;br /&gt;For a while it seemed to work great. However, we began to notice that the audio sync was slightly off in a few places. Doing some tech searching it was strongly suggested that drift could be caused by capturing video to your startup HD.&lt;br /&gt;&lt;br /&gt;So, we bought a second internal ATA Maxtor and changed all of AlchemyTV's and Final Cut's settings to do nothing with the startup disk and do everything in the second disk. For a while that worked, too, but soon we began to see the same problem in our DVDs.&lt;br /&gt;&lt;br /&gt;So, I optimized the second HD before all DVD projects. No go. Out of curiosity I looked at the FC export .MOV (which QT 6 could not play, but QT 7 can) -- the drift was there. In the export. The original .MOVs were fine. So, I experimented with different recording codecs. No dice. Some movies came into FC fine, others came in with noticeable sync problems, even before export.&lt;br /&gt;&lt;br /&gt;After bothering FC experts in a forum, they gave several suggestions:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;FC isn't meant to work with anything other than pristine DV straight out of a DV-cam.&lt;/li&gt;   &lt;li&gt;QT movies not from DV-cams don't guarantee 48.000KHz recording rates and FC, unlike QT Player, isn't capable of dealing with less than perfection. The irony here is that Linux developers have known for years that consumer Canon DV-cams don't output perfect 48.000 and Apple's had to write code to compensate for it for years.&lt;/li&gt; &lt;/ul&gt; We came to the mutual conclusion that if QT Pro could do the edits and export reference movies to iDVD's satisfaction, that this was the best solution. QT Pro costs $29.99; FCE HD's upgrade was $99 with no guarantee it would deliver the results I needed.&lt;br /&gt;&lt;br /&gt;If I needed professional video effects this would be a real problem. But for the home user who's just making DVDs of their favorite shows or dubbing from old VHS, QT Pro is all the tool you need, and you'll avoid an unnecessary extra transcoding before burning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111671627377478354?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111671627377478354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111671627377478354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111671627377478354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111671627377478354'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/05/how-not-to-make-dvds-of-your-favorite.html' title='How not to make DVDs of your favorite TV shows'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-114970136836540695</id><published>2005-03-07T15:03:00.002-07:00</published><updated>2010-04-07T17:12:50.697-07:00</updated><title type='text'>Retrieving random table rows from Oracle 8+ without stored procedures</title><content type='html'>This was a bear to find explained simply and by example. To retrieve six rows randomly from your table, WITHOUT using PL/SQL procedures (i.e. doable easily from a ColdFusion CFQUERY):&lt;br /&gt;&lt;pre class="brush: sql"&gt;select courseid from &lt;br /&gt;(select courseid from mastercourse order by dbms_random.value) &lt;br /&gt;where rownum &amp;lt;=6;&lt;/pre&gt;(courseid is the primary key.)&lt;br /&gt;The &lt;a href="http://www.oracle.com/technology/oramag/oracle/04-jan/o14asktom.html"&gt;original example code&lt;/a&gt; was more ornate because it was demonstrating generating random numbers rather than random rows, through a bit of trickery involving counting all objects within your instance of Oracle.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;dbms_random.value&lt;/code&gt; and &lt;code&gt;rowid&lt;/code&gt; are Oracle-specific (the former as of Oracle 8); Google searches on &amp;quot;SQL random row&amp;quot;/variants show no generic SQL query which can do this. Please prove me wrong.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-114970136836540695?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/114970136836540695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=114970136836540695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114970136836540695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/114970136836540695'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2005/03/retrieving-random-table-rows-from.html' title='Retrieving random table rows from Oracle 8+ without stored procedures'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-94475935</id><published>2003-05-16T16:40:00.000-07:00</published><updated>2003-05-16T18:43:44.000-07:00</updated><title type='text'></title><content type='html'>People keep asking how I'm doing, especially after we learned my pancreas is a conversation piece. I figure this is easier than bulk mailing the same answer.&lt;br /&gt;&lt;br /&gt;January 1st I was in an ugly car wreck which mercifully did not seriously injure anyone. We're still dickering with the insurance companies over whether the at-fault party owned his vehicle or had coverage, but that's another entry altogether. The Saturn was totaled and I got a rug burn on my right shin from over-tight calf socks, along with a bruised side where the driver's side armrest collided with me. No big deal.&lt;br /&gt;&lt;br /&gt;Two weeks later, what should have scabbed over lightly and then healed was now a swollen, unpleasant area on my leg. On the advice of my chiropractor, I was sent to the ER to have my spleen checked where the bruise was. To shorten the story, a routine urine test revealed I was diabetic. The ER doctors and my primary care physician paid little attention to my low weight and pronounced me Type II, probably because they still think in terms of "adult-onset" versus "juvenile." &lt;br /&gt;&lt;br /&gt;To shorten the story further, I went behind my primary physician's back and saw a local doctor who's an adult-onset Type I himself, and he ordered a more comprehensive set of blood tests which proved conclusively that I'm Type I, my pancreas is nonfunctional, and I am insulin dependent. Oral meds will not cut it. My primary physician reacted to finding out about seeing another doctor by dumping me as a patient (in the successive week he dropped other "noncompliant" patients and his only assistant quit on him). Good riddance.&lt;br /&gt;&lt;br /&gt;Blue Cross anted up for the Medtronic insulin pump I now wear. It's the size of a pager, looks like a pager, and holds 3 days' worth of insulin in it (which coincides neatly with having to change the insertion set on my body every 3 days). If you're Type I and you don't have a pump, get one. The Medtronic Paradigm I have cost five grand, but the actuaries at BCBS finally figured out that the complications of a simple wound and the weekend hospital stay cost three times that. An ounce of prevention... &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-94475935?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/94475935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=94475935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/94475935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/94475935'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2003/05/people-keep-asking-how-im-doing.html' title=''/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-116101773320266202</id><published>2003-02-05T09:45:00.001-07:00</published><updated>2009-11-19T12:33:24.021-07:00</updated><title type='text'>Converting font SIZE attributes to CSS</title><content type='html'>&lt;table width="100%" border="1"&gt;&lt;tr&gt;&lt;th scope="col"&gt;&amp;lt;font size=&amp;quot;F&amp;quot;&amp;gt; &lt;/th&gt;&lt;th scope="col"&gt;font-size:em;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&amp;nbsp;&lt;/td&gt;&lt;td&gt;.6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;.8 &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;1.1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;1.5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-116101773320266202?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/116101773320266202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=116101773320266202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/116101773320266202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/116101773320266202'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2003/02/converting-font-size-attributes-to-css.html' title='Converting font SIZE attributes to CSS'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111844495589145565</id><published>2000-09-06T16:07:00.000-07:00</published><updated>2005-06-10T16:09:15.896-07:00</updated><title type='text'>Alpha, Omega.</title><content type='html'>&lt;p&gt;Well, not too much has been going on since the last journal.&lt;/p&gt;Not too much, that is, if you don't count my mother's funeral and my wife's positive pregnancy test.&lt;br /&gt;      &lt;p&gt;Mom's situation deteriorated after moving back to Westfield. Nevertheless, she was happier there, where her friends and memories were. Toward the end I don't think there was much difference between the two. Matthew gave a remarkable eulogy, I rediscovered old friends and powerful mid-June allergies, and my brother and I harvested our friends' memories of the woman who raised and influenced us and not the confused, deceptive, tired old person I tried to save.&lt;br /&gt;     &lt;/p&gt;&lt;p&gt;Two weeks later we were back at the Phoenix airport, escorting Ruth to a plane to Raleigh-Durham this time. Our friend Sandy, who had gone to library school with Ruth, had had enough of North Carolina and found a tech job in Provo. Sandy needed a Thelma to her Louise for the road trip and we spent the night near the airport in Tempe (that's pronounced tem-PEE, not tempeh).&lt;br /&gt;     &lt;/p&gt;&lt;p&gt;Seven weeks later Ruth couldn't understand why she was sick to her stomach and dizzy all the time. Understand, we'd been trying for the better part of five and a half years to conceive, with medical intervention and no success. Boxer underwear, no hot tubs, mineral supplements, complicated physical positions worthy of the Kama Sutra excepting the 'enjoyable' component, repeated visits to do it with a plastic cup and drive halfway across town...&lt;br /&gt;     &lt;/p&gt;&lt;p&gt;And in the end it took nothing more than a hotel bed.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111844495589145565?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844495589145565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844495589145565'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2000/09/alpha-omega.html' title='Alpha, Omega.'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111844527298862874</id><published>2000-05-18T16:10:00.000-07:00</published><updated>2005-06-10T23:25:49.186-07:00</updated><title type='text'>Geek Chic</title><content type='html'>&lt;p&gt;Well, I've successfully avoided owning a palmtop computer for at least five years. There's an unusual idiosyncrasy about technology in my family: we always want to know what's best, but we won't buy into something half-baked. Everything is an investment in the future, I guess. &lt;/p&gt;      &lt;p&gt;At the age of eight or nine, I recall seeing the Radio Shack insert in the Sunday paper and goggling my eyes over their Color Computer, which only cost about as much as a color TV then. My father wasn't impressed with the cost to value ratio. When I wanted the $6.98 Steve Austin action figure, (the &lt;b&gt;&lt;a href="http://www.scifi.com/bionicrod/bionic1.htm"&gt;real&lt;/a&gt;&lt;/b&gt;, bionic SA, not that bald-headed thinly-veiled homoerotic sex object) I had to convince Harvey I would continue to play with it past Christmas day. This probably explains why at 32 I still stubbornly hold onto it. (That and the amazing likeness of Lee Majors -- if anyone out there knows who the artist for Kenner was please contact me). Maybe he was concerned about his son playing with dolls...&lt;/p&gt;      &lt;p&gt;Anyway, as peeved as I was with his attitude I soon found myself marching in step. When I bought my first computer, a Sinclair ZX81, it was after geek-like precision reviewing against the other offerings of 1982. Bought a crappy secondhand b&amp;amp;w TV for $10 from a repairman who stated that he never wanted to see me bring it back, and I was well on my way.&lt;/p&gt;      &lt;p&gt;A touchpad computer not much heavier than a pack of cards, with monochrome display and a whopping 16K added on. Needless to say I was in heaven: a computer of my &lt;i&gt;very own&lt;/i&gt;, not a terminal hooked to a PDP somewhere. Before long I passed BASIC and started messing with Z80 machine language.&lt;/p&gt;      &lt;p&gt;To make a long history short, I went from ZX81 to Atari 800XL, to the earliest days of Macintosh, and currently own a G4 7500. All carefully picked. In fact, too carefully. When we bought our first Mac Classic, Ruth suggested we get the 80M hard drive. I said, "C'mon, 40M is enough." I'm still mentally bitch-slapping myself over that one.&lt;/p&gt;      &lt;p&gt;I wasn't even an instant Mac convert until I went to college and had to use them, back in the dark days of 1985. You remember then, back when copying a MacPaint graphic and pasting it into the KeyCaps desk accessory would bomb the machine out...&lt;/p&gt;      &lt;p&gt;So when the Newton arrived on the scene, my feelings were mixed. Incompatible with Mac, but fits in your hand, dude. In retrospect, I'm glad I didn't go that route, but I was miffed when a tech I knew defined the fledgling PalmPilot as "a Newton that doesn't suck."&lt;/p&gt;      &lt;p&gt;The Palm &lt;i&gt;didn't&lt;/i&gt; suck. But most of the applications for it made it look like a four hundred dollar datebook, and nearly every demonstration model in stores was broken. If you're a college student (or recent escapee from whence) it may not be the most practical use of that much money.&lt;br /&gt;   &lt;/p&gt;      &lt;p&gt;Also, I'm a devotee of the non-computerized method. Not really a neoLuddite, but concerned with recognizing the value of the genius that went into movable type, two sliding pieces of plastic that calculate logarithms, and paper time management tools that creatively challenge you to organize your thoughts. One of the people I worked under in college as a &lt;s&gt;geek&lt;/s&gt; computer support person spends his weekends farming, raising chickens and getting to know the dirt around him. Weekdays he runs an ISP. He and I both believe technology should know its place and we shouldn't become hopelessly dependent on it.&lt;/p&gt;      &lt;p&gt;Last week Ruth made me an ultimatum. She said that I had two choices. Buy two Handspring Visors or she'd buy one for herself and I could suffer not getting to play with it.&lt;/p&gt;      &lt;p&gt;Note to young, unmarried men: &lt;i&gt;when chicks fight, they fight dirty. Expect this.&lt;/i&gt;&lt;/p&gt;      &lt;p&gt;I gave in, and $250 isn't that much to pay for something that can spreadsheet, send and receive mail, control your TV, let you compose music, play games, store novels, and oh yes, keep track of your appointments. It has the three prerequisites of a real computer:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Addictive games available&lt;/li&gt;        &lt;li&gt;Limitations to whine about&lt;/li&gt;        &lt;li&gt;"My brand X platform is better than your Y platform" flamewars&lt;br /&gt;       on Usenet&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If it's worth arguing fiercely over, it's probably worth having. Go visit the soporific discussions on &lt;a href="http://developer.webtv.net/wwwboard/webd/Default.htm"&gt;WebTV's own forums&lt;/a&gt; if you don't believe me.&lt;/p&gt;     &lt;table align="left" border="0" cellpadding="0" cellspacing="12" width="100"&gt;&lt;br /&gt;     &lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;       &lt;td&gt;&lt;img src="http://jan.ucc.nau.edu/%7Ear24/nrz/images/lara.gif" height="146" width="160" /&gt;&lt;/td&gt;&lt;br /&gt;     &lt;/tr&gt;&lt;br /&gt;   &lt;/tbody&gt;&lt;/table&gt;Mainly, one of the reasons I love this gadget is because it keeps me from being bored when I have some free time. I like to write. I like to draw. This lets me do either or both, and upload the results later. Ms. Croft, here, is a good example of how to kill some time, even if it does bring me back to 1985, tools-wise.&lt;br /&gt;   &lt;p&gt;So, here I am again, the owner of a touchpad computer not much heavier than a pack of cards, with monochrome display. Go figure.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111844527298862874?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111844527298862874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111844527298862874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844527298862874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844527298862874'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2000/05/geek-chic.html' title='Geek Chic'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111844533719888549</id><published>2000-05-03T16:14:00.000-07:00</published><updated>2005-06-10T16:25:06.076-07:00</updated><title type='text'>Potsherds</title><content type='html'>&lt;p&gt;The weather here's beautiful, as usual.&lt;/p&gt; &lt;p&gt;This morning, the news awoke me to let me know that the next likely tsunami strike is along the midAtlantic coast, between Virginia and North Carolina. Since I just sold a house in that area and moved away four months ago, I can't say I regret the change of location. &lt;/p&gt;&lt;p&gt;North Carolina is a beautiful state, excepting Charlotte, Durham, Winston-Salem and Raleigh. The coastal region never drops below 40, the western Blue Ridge Mountains contain the highest peaks east of the Mississippi, and I'd never lived somewhere before where even the weeds are pretty. Wilmington enjoys an interesting tourist synergy with Myrtle Beach: Wilmington passes itself off as historical and well-mannered, and Myrtle Beach is South Carolina's conception of Sodom and Gomorrah: amusement parks, titty bars, outlet shopping and one of every theme restaurant. 70 miles of rural US 17 separates the two; the perfect day trip or even dinner jaunt. &lt;/p&gt;&lt;p&gt;Flagstaff is more isolated. Phoenix is the nearest city in any direction, three hours to our south, and Flagstavians consider Phoenix the way the Amish see us. Phoenix TV news is an education: I've never seen so many creative forms of murder and manslaughter before moving west; my original conception for this site was to be an index of the baby killings, high speed freeway chases and automotive homicide, pitbull maulings... The times I'm disappointed at being so far away from a metro center are ameliorated by ten minutes driving through Phoenix. &lt;/p&gt;&lt;p&gt;Phoenix, down in the flatlands, is the imitation potted ficus plant of cities. The streets are proudly lined with obviously non-native palm trees, which looked amusing in the Cape Fear border islands, but just plain vulgar in the middle of Arizona. Competing with the palms are beautiful citrus trees bordering the yards of the homes, except that the plump orange fruit are bitter ornamentals, to prevent the homeless from picking and eating them. The air is referred to by the locals there as "hazy," the same sort of "haze" that typified Los Angeles a decade back. Before long you realize the intense whitebread perspective of "The Family Circus," whose creator has been a Phoenix local for some time, isn't a caricature. Still, Phoenix is enjoyable to visit, and shop for stuff you can't find here. &lt;/p&gt;&lt;p&gt;The first thing about Flagstaff that took me by surprise is how small it is. Perhaps twelve miles at its widest axis, it constitutes the seat of and largest city within Coconino county, the largest county in the United States (San Ber'dino subdivided last year, losing the title). &lt;/p&gt;&lt;p&gt;A longtime native took us out on a road trip a few weeks back, to a large but secluded portion of the country just twenty miles out. Atop one of the hills, we could see for seventy miles in one direction, and no signs of civilization in any direction save a dusty car trail in the scrub. In another nearby location we stood in Hopi ruins, vividly-colored potsherds at our feet that were baked before William the Conqueror set face on England. As we heard nothing around us but the wind blowing, a potsherd caught my eye and I picked it up. On the inside of the rim was a small crack the potter had tried to fill in with slip, and suddenly I realized I was sharing an artist's secret with someone from another world. Our tour guide, a potter himself, summed it up neatly: "You're looking at a thought from a thousand years ago." &lt;/p&gt;&lt;p&gt;It's one thing to see artifacts in a museum, butterflies pinned to cotton in a window box, but to handle them yourself in their original context, where you are the alien element... &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111844533719888549?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844533719888549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844533719888549'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2000/05/potsherds.html' title='Potsherds'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111844544926766928</id><published>2000-04-24T16:16:00.000-07:00</published><updated>2005-06-10T16:17:29.270-07:00</updated><title type='text'>Site unseen</title><content type='html'>&lt;i&gt;Apologies:&lt;/i&gt; The code inside the last journal routinely said everyone was using an off-brand browser. My bad. It's fixed now.&lt;p&gt;&lt;/p&gt;&lt;p&gt;Also, I've narrowed the column width to something more easy to read. Let me know if you like it or not.&lt;/p&gt;&lt;p&gt;A correspondent recently commented in an email that she felt like putting a journal on her site would be casting pearls before swine. Before you get judgemental on her, understand that she's been running this site since before everyone could get a free googol-gig sitespace on the Net, at personal cost and time, and most of her visitors only want to know if she's putting up more pictures of tits.&lt;/p&gt;&lt;p&gt;I don't agree with her viewpoint, but I understand it. From 1995 to 1997, I edited a SubGenius/humor zine called obloquy, putting out a grand total of five quarterly issues before circumstances interrupted. As far as I'm concerned it rocked, and I'll probably scan the pages as PDFs for this site some day.&lt;/p&gt;&lt;p&gt;Nonetheless, each issue took thirty hours to edit, lay out, format, inkjet print (and burn out a cartridge)... If I hadn't had a background in graphic design it probably wouldn't have taken as long, but it wouldn't've looked as good, either.&lt;/p&gt;&lt;p&gt;In any case it was a labor of love, and there was always the hope for some token of appreciation from those who read it. Credit is due to the fan mail I did receive. But producing a zine, like a site, is an expression first and a call for recognition second. &lt;/p&gt;&lt;p&gt;In the end I put obloquy on hiatus not because the warm fuzzies weren't coming in fast enough, but because I had a series of life events that forced me to redirect my energy elsewhere. The zine would have been pure crap if I'd tried to fit it into fighting an insurance company and a police department, overcoming a depressive episode, and trying to figure out what the hell to do with my life. All told 1997 felt like being Atlas.&lt;/p&gt;&lt;p&gt;It's better now, and I'm doing this site instead of the zine. The work is less grueling, the results more immediate, and the distribution speaks for itself. But I can still hear that voice that tells me to check the hit log, and wishes more people would contribute or at least comment. &lt;/p&gt;&lt;p&gt;If you trip across one of these kinds of sites, please drop the author a line, even if it's just to say "Kilroy was here" and you liked/disliked the site. It won't cost you a thing, and you might wind up making an acquaintance.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111844544926766928?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111844544926766928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111844544926766928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844544926766928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844544926766928'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2000/04/site-unseen.html' title='Site unseen'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111844564347747640</id><published>2000-04-13T16:18:00.000-07:00</published><updated>2005-06-10T16:20:43.486-07:00</updated><title type='text'>Closed due to browser incompatibility...?</title><content type='html'>Since I started working here at NAU I've had the opportunity to dive into a lot of Web technologies. Dynamic HTML, JavaScript, Java, C++, general object-oriented programming principles, CGI scripting with Perl...&lt;br /&gt;&lt;br /&gt;It's pretty fascinating, and challenging at times. One particular challenge that's making news is the matter of crossbrowser compatibility. You're browsing this site with [ancient browser sniffer code deleted] I know this because this page sniffed your browser when it loaded, a piece of code I wrote. Visit this page with other browsers if you don't believe me.&lt;p&gt;&lt;/p&gt;&lt;p&gt;This type of code is becoming increasingly necessary because the companies that author browsers keep "innovating" things which aren't W3C standards. (The World Wide Web Consortium encourages this by taking forever to determine standards: their team on downloadable fonts hasn't put a new paper on their site on the subject since 1996) Netscape pushed through their own version of layers which virtually no other browser supports. Microsoft duplicated Netscape's misnamed JavaScript, but rewrote the object structure of a document and the properties which refer to and control it in several incompatible ways.&lt;/p&gt;&lt;p&gt;The end results of that gap are as follows:&lt;/p&gt;&lt;p&gt;Web designers write code that sniffs the browser and follows a different codepath. More sophisticated designers end up rewriting their own version of the basic functions that compartmentalizes the differing codes and returns the same result. While elegant in its execution, it represents a tremendous waste of salaried time, and time in development. I spent an entire day debugging one such function to ensure compatibility across three browsers, and I expect to see similar roadblocks in the near future.&lt;/p&gt;&lt;p&gt;The EC loses its patience and announces that like HTML, there will be an international standard for JavaScript called ECMAscript, effectively taking the football away from Netscape.&lt;/p&gt;&lt;p&gt;Web designers are faced with the unpleasant choice of implementing proprietary technologies like Microsoft's data binding (which allows the browser, when pointed at a plain ASCII delimited data file, to display it in a formatted table), moving heaven and earth to translate them when possible, or to essentially pretend they don't exist and never use them. Since IE4, Explorer has had an impressive array of visual transition effects, almost none of which I've seen in practice and some of which are duplicated by bandwidth and memory-hogging Java applets.&lt;/p&gt;&lt;p&gt;I think it's great that someone like myself with a dual background in art and programming can feel both halves of the brain humming on the job. But with the increasing gulfs between browsers and lack of support for the standards the W3C can come up with in a human's lifetime, the emphasis has changed from "Look what I can do!" to "Look what I had to do to get it to work."&lt;/p&gt;&lt;p&gt;Some people believe that the browser "wars" are over and Microsoft's model is the de facto standard, and whether it's good or not it's the world we live in and we better get used to it. These are the same people who scrapped six thousand dollars of investment in Macintosh graphic workstations in a previous job of mine because they read something in the Wall Street Journal saying that Apple was circling the drain. Four years later, Apple is still around, at the forefront of technologies like USB and FireWire and showing no signs of slowing down. Did those selfsame people foresee Microsoft's losing struggle with the DOJ, the decline in their stock, and one of the least charismatic CEOs in America making a personal appearance on TV to put a PR spin on those events?&lt;/p&gt;&lt;p&gt;Just to make it clear I'm not gloating, I despised the iMac when it came out and thought it would be the final nail in Apple's coffin during a bad year, an innovation which would be remembered as "Jobs' folly." You see the extent of my oracular powers there.&lt;/p&gt;&lt;p&gt;Basing tactical decisions on longterm predictions of a product's viability is ill-conceived and generally smacks of self-justification for premade decisions. The mindset divides neatly along these lines: end users solely familiar with one product, and executive sheep whose collective memory chants the 1960s slogan "Nobody ever got fired for buying IBM." When was the last time you saw a new IBM-brand PC in the workplace?&lt;/p&gt;&lt;p&gt;I digress. The chief objection I have with Microsoft's contribution to the browser market is that they are not only incompatible with their competitors, and with the W3C, but with the release of IE5, incompatible with IE4, and to some extent with IE5 Macintosh (whose incompatibilities are based off a more correct implementation of those properties). Even assuming 4.0 browsers are a dim memory by the time you read this, the millions of sites based on them are still here.&lt;/p&gt;&lt;p&gt;Netscape's Mozilla project, as well as Opera, has chosen to focus on standards compliance, making the innovations in improving useability. Remember that the root of "innovate" is the Latin for "new." The Gecko web engine in Mozilla is potentially portable to handheld devices in much the same way WindowsCE was intended to entice developers to remain brand loyal. With the backing of America Online (and the implicit promise of bringing that technology to AOL's much-maligned browser), it's safe to say Mozilla won't have to worry about short-term returns on their long-term investment.&lt;/p&gt;&lt;p&gt;Which brings me back to web design. I work in academia, salaried regardless of the "market." My colleagues in the private sector are fiscally dependent on the viability of their code. Sites that stop working because of incompatibilities in a new browser (instead of the expected backwards compatibility) are sites that cost those designers' firms money, time and potentially their reputation. I leave it to you to guess their decision.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111844564347747640?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844564347747640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844564347747640'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2000/04/closed-due-to-browser-incompatibility.html' title='Closed due to browser incompatibility...?'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-5402559.post-111844584034537996</id><published>2000-04-01T16:21:00.000-07:00</published><updated>2005-06-10T16:24:00.350-07:00</updated><title type='text'>I don't wanna grow up, I'm a Toys 'R Us kid...</title><content type='html'>&lt;p&gt;To all the people who've argued with me about my choice of computers over the last five years, I'd like to bring you up to speed on my Mac. &lt;/p&gt; &lt;p&gt;I bought this thing on academic discount back in 1995, I think, when a 603 was still faster than the crop of Pentiums out there. I think I paid about $1800 for it, monitor included. In the intervening years, PCs grew more powerful and Mac applications started demanding more power (like 604 PowerPCs). Having worked in several Windows-dependent businesses since then (and currently), what I've noticed is the necessity of replacing entire systems every three years &lt;s&gt;insofar as Intel decided not to make Pentiums replaceable like they did the earlier x86 chips&lt;/s&gt;.(4.13.00: please excuse the previous brainfart. I have been corrected) A friend of mine who will go nameless has recently entreated her folks to replace hers. &lt;/p&gt; &lt;p&gt;In the space of ten minutes this morning, the 1995-era PowerPC became a 2000-era G4 PowerPC. Five minutes after that the 1992-era mouse (don't get me started on the crappy mice Apple makes now) is replaced by a Wacom Graphire tablet (cordless, batteryless pen and mouse included). Some months back USB capability was one PCI card installation (another five minutes). Total cost, $640, shipping included. Was your last up-to-date Windows machine this cheap? &lt;/p&gt; &lt;p&gt;Don't get me wrong. I like Windows. I use it professionally and NT is one of the most stable OSes I've worked with (95, on the other hand, can suck rocks from my butt). However, it's stuck on a legacy chip that still works off the idea of complex instruction sets, when everything else is using RISC for its unmatchable, naked speed. If Apple could move off the Motorola 68000 series, first by emulation and then by fiat, I can't understand why Bill Gates couldn't retool Windows for the G4--emulating Pentium IIIs at first,then slowly telling the rest of the world to catch up with the times and releasing a G4-native Windows, which would scream compared to the current PIIIs (which are, again, slower than the current Mac microprocessor). &lt;/p&gt; &lt;p&gt;Then again, Microsoft's got competition from Linux to contend with. End users like yourself are snickering while reading this, but Linux powers more servers out there than you'd imagine and the numbers are only rising. And it doesn't cost anything and the source code is open to systems people. Apple is not quite as shaking in their boots over the analogue, the fascinating but experimental BeOS, which still to some extent depends on Apple cooperation to exist. It's up to Mr. Gates to decide how to keep his grip. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5402559-111844584034537996?l=roazen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://roazen.blogspot.com/feeds/111844584034537996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5402559&amp;postID=111844584034537996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844584034537996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5402559/posts/default/111844584034537996'/><link rel='alternate' type='text/html' href='http://roazen.blogspot.com/2000/04/i-dont-wanna-grow-up-im-toys-r-us-kid.html' title='I don&apos;t wanna grow up, I&apos;m a Toys &apos;R Us kid...'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
