<?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-7898615</id><updated>2011-10-12T03:15:43.851-04:00</updated><category term='space'/><category term='reviews'/><category term='PS3'/><category term='security'/><category term='programming'/><category term='politics'/><category term='Ohio'/><category term='parenting'/><category term='games'/><category term='music'/><category term='Windows'/><category term='Apple'/><category term='computers'/><category term='PlayStation'/><category term='Google'/><category term='television'/><category term='iPhone'/><category term='software'/><category term='iPod'/><category term='tips'/><category term='PS2'/><category term='statistics'/><category term='blogging'/><category term='satire'/><category term='ZFS'/><category term='kids'/><title type='text'>Recording Artist</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7898615.post-6485522250995261903</id><published>2011-04-20T16:48:00.001-04:00</published><updated>2011-04-20T16:50:15.762-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Optimization Goals</title><content type='html'>&lt;p&gt;In my day job, I've worked with many different teams of programmers. Game engine, game tools, OS, SDK, middleware, test engineers, you name it. Many of the people I work with are the best in the industry, true world-class programmers. And others, well, aren't... and that's okay too. :-)&lt;/p&gt;

&lt;p&gt;Personally, I find that I've learned a ton from interacting with all of these different groups.&lt;/p&gt;

&lt;p&gt;One of the most important lessons I've learned &amp;mdash; and I'm frankly surprised this isn't more widely talked about &amp;mdash; is that there are many different &lt;b&gt;and equally valid&lt;/b&gt; possible optimization goals in programming.&lt;/p&gt;

&lt;p&gt;When I talk to a new team, that's often the first thing I try to find out: what are your primary goals? What are you looking for?&lt;/p&gt;

&lt;p&gt;The most common definition of optimization involves improving the &lt;b&gt;runtime speed&lt;/b&gt; of the code. For example, game engine programmers are often very focused on this, because they have to cram as much work as they can into one frame &amp;mdash; generally either 1/30th of a second (33.3ms) or 1/60th of a second (16.6ms). Naturally, this leads to a lot of counting cycles and downcoding inner loops into assembly.&lt;/p&gt;

&lt;p&gt;However, game tool programmers tend to be a little more willing to sacrifice speed in favor of optimizing for other goals: &lt;b&gt;development time&lt;/b&gt;, &lt;b&gt;correctness&lt;/b&gt;, and &lt;b&gt;ease-of-use&lt;/b&gt;. For example, it's often OK to use an unoptimized implementation of some algorithm in a tool, since a high-end PC will run it "fast enough". In other cases a tool might only run infrequently or overnight. Or it might be feasible to simply throw more hardware at the problem.&lt;/p&gt;

&lt;p&gt;You also see it among different teams: a studio making a AAA game might be very focused on optimizing &lt;b&gt;runtime speed&lt;/b&gt;, while a small indie team might be focused on optimizing for &lt;b&gt;development cost&lt;/b&gt; &amp;mdash; doing the work as cheaply as possible. These teams will have very different optimization goals, to the point that what the AAA game has downcoded to assembly might be C++ objects and STL in the other.&lt;/p&gt;

&lt;p&gt;Then there are the sports games &amp;mdash; which live in a fascinating alternate world all their own. These guys have to iterate and ship a new version once a year, every single year! Slipping is simply not an option, so they tend to optimize first for &lt;b&gt;reliability&lt;/b&gt;, &lt;b&gt;upgradeability&lt;/b&gt;, and &lt;b&gt;ease-of-maintenance&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;This got me thinking: what are all the possible optimization goals you might have?&lt;/p&gt;

&lt;h3&gt;Possible Optimization Goals&lt;/h3&gt;

&lt;p&gt;Here are some things that you may choose to optimize for in your development. It's impossible to optimize for &lt;i&gt;all&lt;/i&gt; of these things simultaneously, but it's common to target more than one.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;runtime speed&lt;/b&gt; - &lt;i&gt;Run as fast as possible on your target system.&lt;/i&gt; Most of the optimization literature focuses on this. It involves choosing algorithms carefully, choosing your data layout carefully, looking for early exit opportunities, hand-optimizing inner loops, and so on.&lt;br/&gt;&lt;br/&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;development time&lt;/b&gt; - &lt;i&gt;Complete the engineering work as &lt;b&gt;quickly&lt;/b&gt; as possible.&lt;/i&gt; In other words, finish the job in a day or a week, rather than a month. Optimizing for development time may mean that you use the highest-level language available that will do the job, along with whatever third-party frameworks you can pull in to solve the problems you need solved. C#, Python, Ruby, etc.&lt;br/&gt;&lt;br/&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;development cost&lt;/b&gt; - &lt;i&gt;Complete the engineering work as &lt;b&gt;cheaply&lt;/b&gt; as possible.&lt;/i&gt; This is closely related to development time, but slightly different! The primary difference is the choice of who is doing the work: it might be cheaper (and a better investment) to have an intern use a task as a learning project and work on it for three months, than to have a senior programmer crank it out in three weeks.&lt;br/&gt;&lt;br/&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;correctness&lt;/b&gt; - &lt;i&gt;Be absolutely sure there are no mistakes or bugs.&lt;/i&gt; Bug-free code is always a goal, of course, but sometimes it's even more important than usual. There are two common situations I can think of where correctness is your primary goal: (1) when creating a reference implementation of an algorithm, for possible later optimization. (2) when you're making important architectural decisions based on the results of some investigation or other; you'll generally double- and triple-check the investigation, if you're smart.&lt;br/&gt;&lt;br/&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ease-of-use&lt;/b&gt; - &lt;i&gt;Make sure users can grasp your interface quickly and achieve what they need to do.&lt;/i&gt; Funnily enough, this applies to both applications (user interfaces) and to middleware (developer interfaces). In both cases, you need to understand how people will expect to use the product. The fastest or easiest way to do things might not be the most understandable.&lt;br/&gt;&lt;br/&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ease-of-maintenance&lt;/b&gt; - &lt;i&gt;Make the code so straightforward a monkey could maintain it.&lt;/i&gt; Or you, in a few years. ;-) If you've ever had to go back and bug-fix some code that you (or god help you, someone else) wrote more than five years ago, you'll appreciate the value of this. Code that is well-written, easy to read, well-commented, and shaped well to fit the problem is code that is optimized for ease of maintenance. To some extent, this goal can be a cause of "not-invented-here" syndrome; the preference for in-house code is often born from a perfectly rational and reasonable desire to know how to maintain that code.&lt;br/&gt;&lt;br/&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;reliability&lt;/b&gt; - &lt;i&gt;Never fail.&lt;/i&gt; Keep on going in the face of problems. At runtime, if the program gets unexpected input, don't crash: flag it, log it, and continue on with a sensible fallback behavior. At development time, always have a reference implementation to fall back to if the optimized version isn't working. In the extreme, reliability might require a reduction (hopefully small) in average-case performance just to ensure that the code can reliably handle uncommon edge cases. (LibC's &lt;tt&gt;memset&lt;/tt&gt; and &lt;tt&gt;memcpy&lt;/tt&gt; are examples of that.)&lt;br/&gt;&lt;br/&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;upgradeability&lt;/b&gt; - &lt;i&gt;Make sure every subsystem can be upgraded.&lt;/i&gt; This is most commonly achieved with modularity. Good module separation should mean that individual pieces can be swapped out without too much trouble. If you remove modularity in order to run faster with today's situation, then you may be unable to upgrade to handle tomorrow's situation without a full rewrite.&lt;br/&gt;&lt;br/&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;iteration time&lt;/b&gt; - &lt;i&gt;Minimize the time difference between when you make a change and when you are able to view and test the result.&lt;/i&gt; This covers a lot of ground and may include things like build time reduction, file loading, dynamic loading of updated assets, console boot time, and more. This is surprisingly important: the people who write the best software will almost always tell you that rapid iteration is king.&lt;/i&gt;
&lt;/ul&gt;

&lt;p&gt;Did I miss any? What are &lt;i&gt;you&lt;/i&gt; optimizing for?&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-6485522250995261903?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/6485522250995261903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=6485522250995261903' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/6485522250995261903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/6485522250995261903'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2011/04/optimization-goals.html' title='Optimization Goals'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-3448026812566567673</id><published>2010-03-16T16:19:00.001-04:00</published><updated>2010-03-16T16:46:48.063-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Variants of CompareAndSwap</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;I ran across an interesting issue the other day while trying to make a cross-platform atomics header work on Mac OS X.&lt;/p&gt;&lt;p&gt;Compare-and-Swap (hereafter, CAS) is one of the fundamental atomic primitives: given a working CAS you can implement any other atomic operation.&lt;/p&gt;&lt;p&gt;But there are in fact two common variants of CAS:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;    // Returns the old value from *ptr
    int ValueCAS(volatile int *ptr, int compare, int swap);

    // Returns true if a swap occurred
    bool BoolCAS(volatile int *ptr, int compare, int swap);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That's OK, though, because it's theoretically possible to convert either one into the other.&lt;/p&gt;&lt;p&gt;It's trivial to implement BoolCAS in terms of ValueCAS. Here's how you do it:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;    // GOOD: this works correctly.
    bool BoolCAS(volatile int *ptr, int compare, int swap) {
        return compare == ValueCAS(ptr,compare,swap);
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But for what I was doing, I needed to go the other way around. Mac OS X provides BoolCAS functions in &amp;lt;libkern/OSAtomic.h&amp;gt;, and I needed to convert those to ValueCAS functions.&lt;/p&gt;&lt;p&gt;It turns out to be subtly difficult to go the other way around, and I thought I'd share the reasons why.&lt;/p&gt;&lt;h3&gt;First attempt&lt;/h3&gt;&lt;p&gt;My first attempt was fairly simple, using just an extra load and branch:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;    // BAD: do not use! Broken!
    int ValueCAS(volatile int *ptr, int compare, int swap) {
        if (BoolCAS(ptr,compare,swap))
            return compare;
        else
            return *ptr;
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The idea is that if the CAS worked, then the old value of &lt;code&gt;*ptr&lt;/code&gt; must have been the same as &lt;code&gt;compare&lt;/code&gt;, so we can just return that. That's absolutely correct.&lt;/p&gt;&lt;p&gt;However, if the CAS failed, what was the previous value? I was naïvely re-reading &lt;code&gt;*ptr&lt;/code&gt;. But my unit tests (oh yes, this is the kind of thing you unit-test thoroughly) showed that very rarely — once per several million iterations — it would fail to do the right thing. &lt;/p&gt;&lt;p&gt;What was going wrong? &lt;/p&gt;&lt;p&gt;The problem comes down to how callers detect success and failure from ValueCAS. If ValueCAS returns &lt;code&gt;compare&lt;/code&gt;, the CAS is assumed to have succeeded. If ValueCAS returns any other value, the CAS is assumed to have failed. &lt;/p&gt;&lt;p&gt;Once we recognize this, we can see that the naïve implementation above has not one, but two failure cases:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Spurious CAS failure&lt;/strong&gt;. This can happen on nearly any system, for a variety of reasons. I'd rather not get too deep into explanations of CPU behavior here, but the typical example might be if an interrupt occurred at exactly the wrong moment. Even if &lt;code&gt;*ptr == compare&lt;/code&gt; when the CAS runs, a spurious failure might exit the CAS without changing the value of &lt;code&gt;*ptr&lt;/code&gt;. This would cause ValueCAS to incorrectly report success!&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Race between CAS and reload.&lt;/strong&gt; If more than one thread is atomically modifying &lt;code&gt;*ptr&lt;/code&gt;, then there's a window between the CAS and the reload where &lt;code&gt;*ptr&lt;/code&gt; could be changed to anything at all — including getting set back to &lt;code&gt;compare&lt;/code&gt;. Again, this would cause ValueCAS to incorrectly report success!&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Another approach&lt;/h3&gt;&lt;p&gt;One tempting way to fix it is to simply lie about the old value of &lt;code&gt;*ptr&lt;/code&gt;. I didn't actually try this, but I'll admit I considered it for a moment:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;    // BAD: do not use! Semantically incorrect!
    int ValueCAS(volatile int *ptr, int compare, int swap) {
        if (BoolCAS(ptr,compare,swap))
            return compare;
        else
            return (compare-1); // or any value other than compare
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But this is wrong! It breaks the semantics of the CAS. CAS is supposed to return the old value. But the value this function returns is totally bogus, and may &lt;em&gt;never&lt;/em&gt; have existed at &lt;code&gt;*ptr&lt;/code&gt;. To help imagine why this is bad, consider what might happen if the caller is using the value as a bitmask. We might wind up returning an illegal mask with bits that had never been set. This could have unintended, ugly, subtle side-effects.&lt;/p&gt;&lt;h3&gt;Third time's the charm&lt;/h3&gt;&lt;p&gt;As far as I can tell, the best way to fix it is by adding both an extra load and &lt;em&gt;two&lt;/em&gt; branches:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;    // GOOD: works correctly
    int ValueCAS(volatile int *ptr, int compare, int swap) {
        int old;
        do {
            if (BoolCAS(ptr,compare,swap))
                return compare;
            old = *ptr;
        } while (old == compare); // never return compare if CAS failed
        return old;
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And sure enough, it's a little heavy-handed, but it works. Proper branch hinting will help, but I'm still a bit surprised that it's so expensive (relatively speaking) to do this conversion.&lt;/p&gt;&lt;p&gt;Can anyone come up with a better way?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-3448026812566567673?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/3448026812566567673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=3448026812566567673' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/3448026812566567673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/3448026812566567673'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2010/03/variants-of-compareandswap.html' title='Variants of CompareAndSwap'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-5029856172799050509</id><published>2009-12-19T15:12:00.001-05:00</published><updated>2009-12-20T12:37:25.835-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><title type='text'>A Christmas Present to Myself: My New Office</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;I've moved my home office from one room of the basement to another.&lt;/p&gt;&lt;p&gt;I know, how boring, but this has given me a much-appreciated chance to completely rip out &lt;em&gt;everything&lt;/em&gt; and get rid of the mess and abandoned stuff that I don't really use any more. (Heck, back when I moved into my former office, I was still working for Apple.)&lt;/p&gt;&lt;p&gt;As part of the move, I'm making an effort to make everything as wireless and high-speed as I can.&lt;/p&gt;&lt;p&gt;Upgrades include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Tons of electrical outlets&lt;/strong&gt;. Spent several days with an electrician to get this all done. 3 drops, each three feet apart, and each drop has 4 outlets above the desk and 4 outlets below the desk. Plus we put a bonus 4-outlet drop on the side. Grand total: 28. Yes, twenty-eight! I'm &lt;em&gt;incredibly&lt;/em&gt; happy with the result... you have no idea how much I hate power strips. :-)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Clean wired network&lt;/strong&gt;. I still had some older Cat-5 cables which kept me from getting maximum throughput. Now all hubs are 1Gb Ethernet and cables are Cat-6 or Cat-5e. This should scale up to 10Gb Ethernet when the time comes.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Wireless speakers&lt;/strong&gt;.&lt;a href="http://www.rogueamoeba.com/airfoil/"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-airfoil396.png" width="64" height="64" align="right"&gt;&lt;/a&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B0015YJOK2/drewthaler-20"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/amazon/B0015YJOK2.jpg" width="64" height="64" align="right"&gt;&lt;/a&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B0001DBEM4/drewthaler-20"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/amazon/B0001DBEM4.jpg" width="64" height="64" align="right"&gt;&lt;/a&gt; Specifically, &lt;a href="http://www.amazon.com/exec/obidos/ASIN/B0001DBEM4/drewthaler-20"&gt;Harman-Kardon SoundSticks II&lt;/a&gt; attached to an &lt;a href="http://www.amazon.com/exec/obidos/ASIN/B0015YJOK2/drewthaler-20"&gt;AirPort Express&lt;/a&gt;, driven with iTunes and &lt;a href="http://www.rogueamoeba.com/airfoil/"&gt;Airfoil&lt;/a&gt;. Yes, I poked fun at AirTunes when it first came out, but it's become surprisingly useful. I do virtually all of my work on a laptop these days, and when I'm in my office I want good sound without having a cable plugged in.&lt;div style="clear: right" /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B002TLTG9E/drewthaler-20"&gt;&lt;strong&gt;AirPort Base Station with simultaneous dual-band&lt;/strong&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/amazon/B002TLTG9E.jpg" width="64" height="64" align="right"&gt;&lt;/a&gt;. I'm getting a little tired of upgrading base stations, honestly. But since I have a ton of devices on my wireless network, and use it to access other machines on my local net, having 802.11n actually run at 802.11n speed is worth it.&lt;div style="clear: right" /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B000J2XZ1K/drewthaler-20"&gt;&lt;strong&gt;WiEx zBoost YX510-PCS-CEL cellular booster&lt;/strong&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/amazon/B000J2XZ1K.jpg" width="64" height="64" align="right"&gt;&lt;/a&gt;. Properly installed with an antenna on the roof, this has given me 5 bars — in the &lt;em&gt;basement&lt;/em&gt;, with &lt;em&gt;AT&amp;amp;T&lt;/em&gt;. Infinity percent better than what I could get before! Love it!&lt;div style="clear: right" /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B0009PLO0Q/drewthaler-20"&gt;&lt;strong&gt;Hawking HBB1 broadband booster&lt;/strong&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/amazon/B0009PLO0Q.jpg" width="64" height="64" align="right"&gt;&lt;/a&gt;. OK, this provides almost no feedback so I'm not actually sure how I'm supposed to measure its effectiveness. But it's cheap, dead simple to set up, and the network &lt;em&gt;feels&lt;/em&gt; more responsive with it enabled. With so many wireless devices and no QoS in Apple's AirPort, I figured that having some traffic shaping was better than none.&lt;div style="clear: right" /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Wall-mounted shelf&lt;/strong&gt; to hold all the networking gear (DSL modem, base station, cell booster, broadband booster). I prefer to keep things off the desk since (ideally) there should be no need to touch this stuff once it's running. Individual wall mounts are out since the walls are concrete. A simple black shelf from Home Depot did the trick nicely — now everything is elevated and out of the way. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I'm also asking Santa for these extras:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B0002WZRJK/drewthaler-20"&gt;&lt;strong&gt;Atomic wall clock&lt;/strong&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/amazon/B0002WZRJK.jpg" width="64" height="64" align="right"&gt;&lt;/a&gt;, because I enjoy having an analog clock around. And once you've had a clock that automatically sets itself from the &lt;a href="http://tf.nist.gov/stations/wwvb.htm"&gt;WWVB atomic time broadcast&lt;/a&gt;, you can't go back. &lt;div style="clear: right" /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B000KKV16C/drewthaler-20"&gt;&lt;strong&gt;Indoor/outdoor thermometer&lt;/strong&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/amazon/B000KKV16C.jpg" width="64" height="64" align="right"&gt;&lt;/a&gt;. My new desk is right next to a window, so this is easy. I want one with a wired probe, not wireless, because I prefer it to be reliable and low-maintenance. &lt;div style="clear: right" /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;(FYI, some of the above are affiliate links. I only ever do that for products that I use myself and that I'm very happy with.)&lt;/p&gt;&lt;p&gt;Removed, and recycled or craigslisted:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Several 40' runs of cable&lt;/strong&gt; that are no longer needed, since my desk is now much closer to where the services come into the house.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Three power strips&lt;/strong&gt; and &lt;strong&gt;two extension cords&lt;/strong&gt;. Yay!&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Quite a few mystery DC power adapters&lt;/strong&gt;. Often something like a FireWire hub or USB DVD burner that I used to use and now don't, or a charger for something. I'm not a big gadget freak, but after five years in one place these definitely accumulate. (Seriously, wireless power can't get here fast enough.)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Last year's AirPort 802.11n base station&lt;/strong&gt;. Sigh.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;An old 32-bit Gateway PC&lt;/strong&gt; that doesn't meet my needs any more.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;PowerMac G5&lt;/strong&gt; that I no longer use.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;2 Cinema Displays&lt;/strong&gt; with ADC connections. These were really a great investment and they lasted an incredibly long time. But sorry ADC, you're dead, and converting you to DVI is an expensive pain in the ass.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Apple DVI to ADC adapter&lt;/strong&gt; with broken plastic. Huge by modern standards - about the size of a Mac mini.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Ancient software&lt;/strong&gt; and &lt;strong&gt;unread books&lt;/strong&gt; that had piled up on my bookshelf. Yeah, I'm pretty sure that copy of DiskWarrior from 2002 isn't going to do me any good any more. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;My home server&lt;/strong&gt;. I used to maintain a web and file server at home. (It was a PowerMac G4, nearly ten years old now.) I didn't derive a huge benefit from it, but most of the time the cost was minimal too — just a constant-but-small amount of maintenance. But over time, I found that periodically it created an &lt;em&gt;enormous&lt;/em&gt; amount of trouble and expense when a hard drive failed or I needed to upgrade something. I've realized that there's just no value in my messing around with that stuff any more, so I've switched to offsite hosting and online backup.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I've also ordered some new iMacs for work - to use both as a local distributed build cluster, and for local testing. I'm going to put Windows 7 x64 on one, and the other will have OSX 10.6 running a couple of Linux VMs. &lt;/p&gt;&lt;p&gt;One of the nice side benefits is that moving has really given me a chance to clean up the cabling. Every single cable I've installed so far is neat and tidy, either cut to length or neatly bundled with a cable tie — so everything is tangle-free. I'm sure this will only last right up until I need to reconfigure everything in a hurry for some new task, but it's pretty sweet for now. :-)&lt;/p&gt;&lt;p&gt;Done anything nice for &lt;em&gt;your&lt;/em&gt; office lately?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-5029856172799050509?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/5029856172799050509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=5029856172799050509' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/5029856172799050509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/5029856172799050509'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2009/12/christmas-present-to-myself-my-new.html' title='A Christmas Present to Myself: My New Office'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-5685686522309295298</id><published>2009-12-03T11:02:00.001-05:00</published><updated>2009-12-03T12:08:34.066-05:00</updated><title type='text'>The Economics of School Supplies</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;I'm interested in economics for one particular reason: incentives are fascinating.&lt;/p&gt;&lt;p&gt;There's the psychology aspect: how can you influence people's behavior? To really do this well you need to understand how people think. &lt;/p&gt;&lt;p&gt;There's the engineering aspect: human society is an enormously complex system, even more complex than the systems we work with in technology today. We can do things to nudge a complex system in one direction or another, but we can't always predict what will happen to it.&lt;/p&gt;&lt;p&gt;And then there are the results: you provide incentives in order to get people to do what you want. And that's a powerful thing! I don't mean this in a cold-blooded way; everybody does this every day of their lives.&lt;/p&gt;&lt;h2&gt;Incentives in the Classroom&lt;/h2&gt;&lt;p&gt;My wife is a high school teacher, and we had an interesting talk the other day. It was about how she handles providing a classroom supply of extra paper, extra pens, and all that for kids to use when they forget their own.&lt;/p&gt;&lt;p&gt;In years past, she had a system for this. She kept a supply closet, and early in September would give the kids extra credit for bringing in up to two items for the supply closet. Since she did this at the beginning of the year, kids quickly donated all kinds of stuff to get the easy points, and the closet filled up. Before the year had even started she had a year's worth of supplies.&lt;/p&gt;&lt;p&gt;This year, for the first time, she consciously tried &lt;em&gt;not&lt;/em&gt; to do that, because she reasoned that it's not really an academic thing — so it wasn't a good idea to give out points for it. Makes sense, right? And besides, the school provides a certain amount of supplies for the teachers which she might be able to use.&lt;/p&gt;&lt;p&gt;But I'm sure you can guess what happened. With almost 200 kids in and out of her classroom each day, all it takes is a few percent each day to need paper and it'll add up fast. So she very quickly ran through her school-provided allotment, and by November, she was bringing in supplies from home to make up the difference.&lt;/p&gt;&lt;p&gt;And thus the dilemma: should she offer extra credit again? Or stick to her principles and not give out points?&lt;/p&gt;&lt;h2&gt;Three approaches&lt;/h2&gt;&lt;p&gt;As we talked, we came up with basically three approaches to the problem.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Do nothing&lt;/strong&gt;. This is what she had been doing, and she wasn't really happy with it. The kids could borrow from each other — and some did. Or she could provide her own supplies — which she had started to do. Or kids would just fail the day's assignment when they didn't have the supplies for it... but that's very hard on a public school teacher who wants every kid to succeed. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Positive incentives&lt;/strong&gt;. This is the extra-credit approach. She had mixed feelings about this at first, until I pointed out that the extra credit was just a tiny fraction of their grade — something like 1% of a single quarter. That isn't going to turn a failing student into a passing one; it might turn a B into a B+, and so on, but that's all. And then she raised the excellent point that roughly 20% (!!) of their grade is class participation anyway. Providing supplies really helps the community of the classroom, just like class participation does, so that's a fine place to apply the extra credit.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Negative incentives&lt;/strong&gt;. I suggested that another approach would be to penalize the students for coming to class unprepared. Charge kids 1 point (or even just 1/10th of a point) each day that they borrow paper or a pen. The size of the incentive doesn't matter, it just matters that it's negative. &lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Now, different people will have different feelings about each of these. And you can do different variations on them — charging a penny instead of a point for paper, etc. But those are the basic choices.&lt;/p&gt;&lt;h2&gt;Creating an Atmosphere&lt;/h2&gt;&lt;p&gt;In practice, both the positive and negative incentives should work. But I pointed out that the main difference between these two is not the first-order results of the incentive ... the main difference is how she will be perceived after applying each one.&lt;/p&gt;&lt;p&gt;Why? Well, even as you incentivize the students with one of these actions, they in turn give you an incentive back with how they react.&lt;/p&gt;&lt;p&gt;If you're the teacher who is chintzy about paper and deducts fractions of points for every little thing, you'll be a Scrooge and the students won't like you. Negative reinforcement yields negative emotions.&lt;/p&gt;&lt;p&gt;But on the other hand, what if you're the teacher who provides extra-credit and then free paper? Why, then you're the wonderfully generous and nice teacher whom they love. Positive reinforcement yields positive emotions.&lt;/p&gt;&lt;p&gt;It's almost Machiavellian: do you want to be feared or loved?&lt;/p&gt;&lt;p&gt;Knowing my wife as I do, in her classroom she works best when she's loved. And so I told her to go back to what she had been doing — give out extra credit to fill up the supply closet. It's funny that after actually dissecting the problem and analyzing it, we came up with the same solution that she'd done more or less instinctively in the first place.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-5685686522309295298?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/5685686522309295298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=5685686522309295298' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/5685686522309295298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/5685686522309295298'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2009/12/economics-of-school-supplies.html' title='The Economics of School Supplies'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-7697610199048733246</id><published>2009-07-20T01:51:00.001-04:00</published><updated>2009-07-20T01:51:31.997-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='space'/><title type='text'>Remembering Apollo 11</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;Today marks the 40th anniversary of the Apollo 11 moon landing.&lt;/p&gt;&lt;p&gt;I hope you're listening to the &lt;a href="http://www.nasa.gov/externalflash/apollo11_radio/"&gt;mission audio&lt;/a&gt;, or following the JFK Presidential Library's &lt;a href="http://wechoosethemoon.com/"&gt;webcast&lt;/a&gt;. The landing itself will be replayed at 4:17pm EDT, and Neil Armstrong's first steps should be at 10:56pm EDT. NASA has been doing a &lt;a href="http://www.nasa.gov/mission_pages/apollo/40th/"&gt;number of things&lt;/a&gt; for the occasion, including releasing some very cool &lt;a href="http://www.nasa.gov/mission_pages/LRO/multimedia/lroimages/apollosites.html"&gt;photos&lt;/a&gt; from orbiters which show the Apollo landing sites as they exist today.&lt;/p&gt;&lt;p&gt;The anniversary is getting a lot of attention this year. It's on magazine covers, it's on TV, and there's an undercurrent of buzz among my geek friends about it.&lt;/p&gt;&lt;p&gt;So I figured I'd take a break from my usual hectic schedule of "not blogging" to share some thoughts.&lt;/p&gt;&lt;h3&gt;The first-time cost&lt;/h3&gt;&lt;p&gt;Going to the moon was fantastically expensive.&lt;/p&gt;&lt;p&gt;Just think: landing on the moon required an absolutely &lt;strong&gt;&lt;em&gt;unparalleled&lt;/strong&gt;&lt;/em&gt; effort. It required the US to bring together technology, manufacturing, research, money, management, a boatload of sciences (psychology, physiology, physics, chemistry, materials, culinary, more), training, politics, leadership, public relations, the military, hard work, and a bottomless amount of determination. &lt;/p&gt;&lt;p&gt;The men who walked on the moon did so at the pinnacle of an enormous pyramid of marshaled resources — virtually the entire resources of a nation, bent to a single purpose. And they did it all with 1960's technology, in a spacecraft that had less computational power than your phone does today. (Heck, probably less than your &lt;em&gt;refrigerator&lt;/em&gt;.) This is the stuff of which legends are made.&lt;/p&gt;&lt;p&gt;That pyramid of resources was amazing — and fragile.&lt;/p&gt;&lt;p&gt;We got to the moon and it was pretty freakin' cool. But it wasn't cool enough.&lt;/p&gt;&lt;h3&gt;Snapping back&lt;/h3&gt;&lt;p&gt;After getting there the first time, we just kind of stopped. The last mission that landed on the moon was Apollo 17 in 1972, just a few short years after the first one. &lt;/p&gt;&lt;p&gt;Why? Well, the moon just wasn't that interesting.&lt;/p&gt;&lt;p&gt;Hang on, I'd like to clarify that. In fact there's a &lt;em&gt;ton&lt;/em&gt; of interesting stuff on the moon. But it's probably fair to say the cost of that vast, overreaching pyramid of resources was greater than the return we were getting back.&lt;/p&gt;&lt;p&gt;The truth is that the moon really didn't have anything that 1970's America really needed; no useful minerals, no water, no oil, and we can't even live there. So it makes sense that after briefly overreaching ourselves just to get there, that there would be a period of time where the pendulum swung back: where we'd stop going entirely.&lt;/p&gt;&lt;p&gt;But there is one key thing to remember. It's not 1970 any more.&lt;/p&gt;&lt;h3&gt;What a difference 40 years makes&lt;/h3&gt;&lt;p&gt;The cost of everything trends downward over time. Or you can put it another way: our civilization gets comparatively wealthier over time, so that a constant cost eventually becomes much more affordable. It doesn't really matter which way you want to look at it, since they're two sides of the same coin.&lt;/p&gt;&lt;p&gt;In the 1960's the cost of putting a man into space — not just the raw materials and rockets, but the entire infrastructure — was so large that it could only be attempted by the world's largest industrial powers.&lt;/p&gt;&lt;p&gt;In the 2000's we've seen the cost fall to the point where it just takes the resources of a single large corporation. In the next &lt;a href="http://news.bbc.co.uk/2/hi/science/nature/8111243.stm"&gt;&lt;em&gt;two years&lt;/em&gt;&lt;/a&gt; we should see commercial sub-orbital space travel offered by Virgin Galactic. And you can bet Virgin will have competitors before long. &lt;/p&gt;&lt;p&gt;Space travel isn't quite "cheap", but it's getting surprisingly affordable. It won't be long before we're back at the moon. In fact, I'll go so far as to make a few easy predictions:&lt;/p&gt;&lt;p&gt;&lt;em&gt;A man will walk on the moon again by 2019&lt;/em&gt;. That's less than ten years, so on or before the 50th anniversary of Apollo 11. NASA has a plan to do it, and so do the Chinese. Barring bureaucratic screwups, another Great Depression, or the singularity, it seems very likely.&lt;/p&gt;&lt;p&gt;&lt;em&gt;A &lt;strong&gt;woman&lt;/strong&gt; will walk on the moon by 2019&lt;/em&gt;. The title of "first woman on the moon" is still wide open, and there's no shortage of talented female astronauts. It's an easy bet that the first return mission will include one.&lt;/p&gt;&lt;h3&gt;What can the moon offer us now?&lt;/h3&gt;&lt;p&gt;Why would we go back, anyway? Science-fiction fans will have no shortage of ideas about the long-term future, but I find it more interesting to consider the short term — because that's really where the rubber meets the road.&lt;/p&gt;&lt;p&gt;What are the &lt;strong&gt;&lt;em&gt;realistic, short-term benefits&lt;/strong&gt;&lt;/em&gt; that we might get from the moon when we go back?&lt;/p&gt;&lt;p&gt;A few thoughts:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Tourism&lt;/em&gt;. We already have space tourism, where rich people pay millions of dollars simply to go into space. Once commercial spaceflight takes off — and Virgin Galactic plans its inaugural flight within just &lt;a href="http://news.bbc.co.uk/2/hi/science/nature/8111243.stm"&gt;two years&lt;/a&gt; — how long do you think it'll be until someone wants a tour of the moon?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;An outpost&lt;/em&gt;. Rather like &lt;a href="http://en.wikipedia.org/wiki/McMurdo_Station"&gt;McMurdo Station&lt;/a&gt; in Antarctica, an outpost on the moon would be a center for scientific research and exploration, as well as a central base for other activities.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Mining&lt;/em&gt;, and ultimately &lt;em&gt;manufacturing&lt;/em&gt;. Silicon, aluminum, and iron are probably the most useful and easily-extracted resources in the short term. (Many people talk about &lt;a href="http://www.wired.com/science/space/news/2006/12/72276"&gt;Helium-3&lt;/a&gt;, but it's not currently exploitable so I'm leaving it off.) But why would we mine the moon for this stuff instead of getting it from Earth? It's useful, but not exceptionally scarce.&lt;/p&gt;&lt;p&gt;The answer is really that it's about &lt;em&gt;relative&lt;/em&gt; scarcity. These raw materials are not exceptionally scarce here on Earth, but they sure are hard to come by up in orbit!&lt;/p&gt;&lt;p&gt;It's a question of cost again. It's expensive to get things out of the earth's gravity well. If you want something even moderately large on the moon or in space — habitats, satellites, ships, mirrors, radiation shields — it may be cheaper to build it in place, with materials from the moon instead of from Earth. &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I'd guess that these things are likely to happen in roughly that order: Tourism first, because there is a huge pent-up demand. This will be followed soon afterward by a small outpost — mostly for research, but also supporting (and partially funded by) tourism. And finally the mining and manufacturing, which can then can be used to build up the outpost even more.&lt;/p&gt;&lt;p&gt;Even though we've gotten used to space travel as a NASA thing, it's possible these may not be governmental projects at all, or they may be hybrid ventures which are part commercial and part subsidized. Either way, the feeling that the pendulum is finally swinging back is terrific. I can't wait!&lt;/p&gt;&lt;p&gt;Now it's your turn. What do &lt;em&gt;you&lt;/em&gt; think the moon will have to offer us during the 2020's?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-7697610199048733246?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/7697610199048733246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=7697610199048733246' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/7697610199048733246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/7697610199048733246'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2009/07/remembering-apollo-11.html' title='Remembering Apollo 11'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-543119416717917731</id><published>2007-12-02T02:36:00.001-05:00</published><updated>2007-12-02T02:47:09.988-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZFS'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>The Case Against Insensitivity</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;One of the most controversial parts of my earlier post, &lt;a href="http://drewthaler.blogspot.com/2007/10/don-be-zfs-hater.html"&gt;Don't Be a ZFS Hater&lt;/a&gt;, was when I mentioned off-handedly in the comments that I don't like case-insensitivity in filesystems.&lt;/p&gt;&lt;p&gt;Boy, did that spur a storm of replies.&lt;/p&gt;&lt;p&gt;I resolved to not pollute the ZFS discussion with a discussion of case-insensitivity and promised to make a separate blog post about it. It took a while, but this is that post. I blame a busy work schedule and an even busier travel schedule. (Recently in the span of two weeks I was in California, Ohio, London, Liverpool, London, Bristol, London, Amsterdam, London, then back to Ohio. Phew!)&lt;/p&gt;&lt;h4&gt;Here's Why Case-Insensitive Filesystems Are Bad&lt;/h4&gt;&lt;p&gt;I've worked in and around filesystems for most of my career; if not in the filesystem itself then usually a layer just above or below it. I'm speaking from experience when I tell you:&lt;/p&gt;&lt;p&gt;&lt;em&gt;Case-insensitivity is a bad idea in filesystems&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;And here's why:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;It's poorly defined.&lt;/li&gt;&lt;li&gt;Every filesystem does it differently.&lt;/li&gt;&lt;li&gt;Case-insensitivity is a layering violation.&lt;/li&gt;&lt;li&gt;Case-insensitivity forces layering violations upon other code.&lt;/li&gt;&lt;li&gt;Case-insensitivity is contagious.&lt;/li&gt;&lt;li&gt;Case-insensitivity adds complexity and provides no actual benefit.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I'll expand on each of these below.&lt;/p&gt;&lt;h4&gt;It's poorly defined&lt;/h4&gt;&lt;p&gt;When I say "case-insensitive", what does that mean to you?&lt;/p&gt;&lt;p&gt;If you only speak one language and that language is English, it probably seems perfectly reasonable: map the letter &lt;em&gt;a&lt;/em&gt; to &lt;em&gt;A&lt;/em&gt;, &lt;em&gt;b&lt;/em&gt; to &lt;em&gt;B&lt;/em&gt;, and so on through &lt;em&gt;z&lt;/em&gt; to &lt;em&gt;Z&lt;/em&gt;. There, you're done. What was so hard about that?&lt;/p&gt;&lt;p&gt;But that's &lt;a href="http://en.wikipedia.org/wiki/ASCII"&gt;ASCII&lt;/a&gt; thinking; the world left that behind a long time ago. Modern systems are expected to deal with case differences in all sorts of languages. Instead of a simple 26-letter transformation, "case insensitivity" really means handling all the other alphabets too.&lt;/p&gt;&lt;p&gt;The problem with doing that, however, is that it brings language and orthography into the picture. And &lt;strong&gt;human languages are inherently vague, large, messy, and constantly evolving&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Can you make a strict definition of "case insensitivity" without any hand-waving?&lt;/p&gt;&lt;p&gt;One way to do it is with an equivalence table: start listing all the characters that are equal to other characters. We can go through all the variants of Latin alphabets, including a huge list of &lt;a href="http://www.everything2.com/index.pl?node=Accent%20marks%20used%20with%20the%20Latin%20alphabet"&gt;accents&lt;/a&gt;: acute, grave, circumflex, umlaut, tilde, cedilla, macron, breve, dot, ring, ogonek, hacek, and bar. Don't forget to find all the special ligatures and other letters, too, such as &lt;em&gt;Æ&lt;/em&gt; vs &lt;em&gt;æ&lt;/em&gt; and &lt;em&gt;Ø&lt;/em&gt; vs &lt;em&gt;ø&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;Okay, our table is pretty big so far. Now let's start adding in other alphabets with case: &lt;a href="http://en.wikipedia.org/wiki/Greek_alphabet"&gt;Greek&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Armenian_alphabet"&gt;Armenian&lt;/a&gt;, and the &lt;a href="http://en.wikipedia.org/wiki/Cyrillic_alphabet"&gt;Cyrillic alphabets&lt;/a&gt;. And don't forget the more obscure ones, like &lt;a href="http://en.wikipedia.org/wiki/Coptic_alphabet"&gt;Coptic&lt;/a&gt;. Phew. It's getting pretty big.&lt;/p&gt;&lt;p&gt;Did we miss any? Well, for any given version of the Unicode standard it's always possible to enumerate all letters, so it's certainly possible to do all the legwork and prove that we've got all the case mappings for, say, &lt;a href="http://www.unicode.org/versions/Unicode5.0.0/"&gt;Unicode 5.0.0&lt;/a&gt; which is the &lt;a href="http://www.unicode.org/versions/latest/"&gt;latest&lt;/a&gt; at the time of this writing. But Unicode is an evolving standard and new characters are added frequently. Every time a new script with case is added we'll need to update our table.&lt;/p&gt;&lt;p&gt;There are also some other hard questions for case insensitivity:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Digraph_%28orthography%29"&gt;Digraph&lt;/a&gt; characters may have three equivalent mappings, depending on how they are being written: all-lowercase, all-uppercase, or title-case. (For example: &lt;em&gt;&amp;#499;&lt;/em&gt;, &lt;em&gt;&amp;#497;&lt;/em&gt;, or &lt;em&gt;&amp;#498;&lt;/em&gt;.) But this breaks some case-mapping tables which didn't anticipate the need for an N-way equivalence.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The German &lt;a href="http://en.wikipedia.org/wiki/ß"&gt;letter &lt;em&gt;ß&lt;/em&gt;&lt;/a&gt; is considered equal to lowercase &lt;em&gt;ss&lt;/em&gt;. Should "Straße" and "STRASSE" be considered equivalent? They are in German. But this breaks some case-mapping tables which didn't anticipate the need for an N-to-M character translation (1:2, in this case).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Capital letters can significantly alter the meaning of a word or phrase. In German, capital letters indicate nouns, so the word &lt;em&gt;Essen&lt;/em&gt; means "food", while the word &lt;em&gt;essen&lt;/em&gt; means "to eat". We make similar distinctions in English between proper nouns and regular nouns: &lt;em&gt;God&lt;/em&gt; vs &lt;em&gt;god&lt;/em&gt;, &lt;em&gt;China&lt;/em&gt; vs &lt;em&gt;china&lt;/em&gt;, &lt;em&gt;Turkey&lt;/em&gt; vs &lt;em&gt;turkey&lt;/em&gt;, and so on. Should "essen" and "Essen", or "china" and "China" really be considered equivalent?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Some &lt;a href="http://en.wikipedia.org/wiki/Hebrew_alphabet"&gt;Hebrew&lt;/a&gt; letters use different forms when at the end of a word, such as &amp;#1508; vs &amp;#1507;, or &amp;#1504; vs &amp;#1503;. Are these equivalent?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;In &lt;a href="http://en.wikipedia.org/wiki/Georgian_alphabet"&gt;Georgian&lt;/a&gt;, people recently experimented with using an obsolete alphabet called &lt;em&gt;Asomtavruli&lt;/em&gt; to reintroduce capital letters to the written language. What if this had caught on?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;What about any future characters which are not present in the current version of the Unicode standard?&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Case is a concept that is built into written languages. And &lt;strong&gt;human language is inherently messy&lt;/strong&gt;. This means that case-insensitivity is always going to be poorly defined, no matter how hard we try.&lt;/p&gt;&lt;h4&gt;Every filesystem does it differently&lt;/h4&gt;&lt;p&gt;Unfortunately, filesystems can't engage in hand-waving. Filesystem data must be persistent and forward-compatible. People expect that the data they wrote to a disk last year should still be readable this year, even if they've had an operating system upgrade.&lt;/p&gt;&lt;p&gt;That's a perfectly reasonable expectation. But it means that the on-disk filesystem specification needs to freeze and stop changing when it's released to the world.&lt;/p&gt;&lt;p&gt;Because our notion of what exactly "case-insensitive" means has changed over the past twenty years, however, we've seen a number of different methods of case-insensitivity emerge. &lt;/p&gt;&lt;p&gt;Here are a handful of the most popular case-insensitive filesystems and how they handle case-mapping:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;FAT-32&lt;/em&gt;: ASCII upper- and lower-case letters, but &lt;em&gt;a&lt;/em&gt;-&lt;em&gt;z&lt;/em&gt; and &lt;em&gt;A&lt;/em&gt;-&lt;em&gt;Z&lt;/em&gt; are considered identical. Also variable IBM code pages in high ASCII.&lt;/li&gt;&lt;li&gt;&lt;em&gt;HFS&lt;/em&gt;: ASCII upper- and lower-case letters, but &lt;em&gt;a&lt;/em&gt;-&lt;em&gt;z&lt;/em&gt; and &lt;em&gt;A&lt;/em&gt;-&lt;em&gt;Z&lt;/em&gt; are considered identical. Also variable Mac encodings in high ASCII.&lt;/li&gt;&lt;li&gt;&lt;em&gt;NTFS&lt;/em&gt;: Case-insensitive in different ways &lt;a href="http://blogs.msdn.com/michkap/archive/2005/01/16/353873.aspx"&gt;depending on the version of Windows that created the volume&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;em&gt;HFS+&lt;/em&gt;: Case-insensitive with a mapping table which was &lt;a href="http://developer.apple.com/technotes/tn/tn1150.html"&gt;frozen circa 1996&lt;/a&gt;, and thus lacks case mappings for any newer characters.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;None of these — except for NTFS created by Vista — are actually up-to-date with the current Unicode specification. &lt;em&gt;That's because they all predate it&lt;/em&gt;. Similarly, if a new filesystem were to introduce case-insensitivity today, it would be locked into, say, Unicode 5.0.0's case mappings. And that would be all well and good until Unicode 5.1.0 came along.&lt;/p&gt;&lt;p&gt;The history of filesystems is littered with broken historical case mappings like a trail of tears.&lt;/p&gt;&lt;h4&gt;Case-insensitivity is a layering violation&lt;/h4&gt;&lt;p&gt;When people argue for case-insensitivity in the filesystem, they almost always give user interface reasons for it. (The only other arguments I've seen are based on contagion, which I'll talk about in a moment.) Here is the canonical example:&lt;/p&gt;&lt;blockquote&gt;My Aunt Tillie doesn't know the difference between &lt;i&gt;letter.txt&lt;/i&gt; and &lt;i&gt;Letter.txt&lt;/i&gt;. The filesystem should help her out.&lt;/blockquote&gt;&lt;p&gt;But in fact this is a &lt;acronym title="user interface"&gt;UI&lt;/acronym&gt; problem. The problem relates to the &lt;em&gt;display&lt;/em&gt; and &lt;em&gt;management&lt;/em&gt; of information, not the &lt;em&gt;storage&lt;/em&gt; of this information.&lt;/p&gt;&lt;p&gt;Don't believe me?&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;When any application displays items in a window, who sorts them case-insensitively? The filesystem? No! The application does it.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;When you type-select, typing &lt;em&gt;b-a-b-y&lt;/em&gt; to select the folder "Baby Pictures" in an application, who does the case-insensitive mapping of the letters you type to the files you select? The filesystem? No! The application again.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;When you save or copy files, who does the case-insensitive test to warn you if you're creating "file.txt" when "File.txt" already exists? The filesystem? Yes!&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Why does the third question have a different answer than the rest?&lt;/p&gt;&lt;p&gt;And we've already talked about how filesystems are chronically out-of-date with their case mappings. If your aunt is a Turkish Mac user, for example, she's probably going to notice that the behavior of the third one is different for no good reason. Why are you confusing your Aunt Tülay?&lt;/p&gt;&lt;p&gt;One last point was summarized nicely by &lt;a href="http://www.mikeash.com/"&gt;Mike Ash&lt;/a&gt; in the comments of &lt;a href="http://drewthaler.blogspot.com/2007/10/don-be-zfs-hater.html"&gt;Don't Be a ZFS Hater&lt;/a&gt;. I'll just quote him wholesale here:&lt;/p&gt;&lt;blockquote&gt;Yes, Aunt Tillie will think that "Muffin Recipe.rtf" and "muffin recipe.rtf" ought to be the same file. But you know what? She'll also think that "Muffin Recipe .rtf" and "Recipe for Muffins.rtf" and "Mufin Recipe.txt" ought to be the same file too.&lt;br /&gt;&lt;br /&gt;Users already don't generally understand how the OS decides whether two files are the same or not. Trying to alleviate this problem by mapping names with different case to the same file solves only 1% of the problem and just isn't worth the effort.&lt;/blockquote&gt;&lt;p&gt;I agree completely.&lt;/p&gt;&lt;h4&gt;Case-insensitivity forces layering violations upon other code&lt;/h4&gt;&lt;p&gt;All too often, pieces of code around the system are required to hard-code knowledge about case-insensitive filesystem behavior. Here are a few examples off the top of my head:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Collision prediction&lt;/em&gt;. An application may need to know if two files would conflict before it actually writes either of them to disk. If you are writing an application where a user creates a group of documents — a web page editor, perhaps — you may need to know when &lt;em&gt;banana.jpg&lt;/em&gt; and &lt;em&gt;BANANA.JPG&lt;/em&gt; will conflict.&lt;br /&gt;&lt;br /&gt;The most common way that programmers solve this is by hard-coding some knowledge about the case-insensitivity of the filesystem in their code. That's a classic layering violation.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Filename hashing&lt;/em&gt;. If you are writing code to hash strings that are filenames, you probably want equivalent paths to generate the same hash. But it's impossible to know which files are equivalent unless you know the filesystem's rules for case-mapping.&lt;br /&gt;&lt;br /&gt;Again, the most common solution is a layering violation. You either hard-code some knowledge about the case-insensitivity tables, or you hard-code some knowledge about your input data. (For example, you may just require that you'll never, never, ever have multiple access paths for the same file in your input data. Like all layering violations, that might work wonderfully for a while ... right up until the day that it fails miserably.)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I'm sure there are more examples out there.&lt;/p&gt;&lt;h4&gt;Case-insensitivity is contagious&lt;/h4&gt;&lt;p&gt;This is the worst part. It's all too easy to accidentally introduce a dependence on case-insensitivity: just use an incorrect path with bad case.&lt;/p&gt;&lt;p&gt;The moment somebody creates an application or other system that inadvertently depends on case-insensitivity, it forces people to use a case-insensitive filesystem if they want to use that app or system. And that's one of the major reasons why case-insensitivity has stuck around — because it's historically been very difficult to get rid of.&lt;/p&gt;&lt;p&gt;I've seen this happen with:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Source code&lt;/em&gt;. Some bozo writes &lt;tt&gt;#include "utils.h"&lt;/tt&gt; when the file is named &lt;tt&gt;Utils.h&lt;/tt&gt;. Sounds innocent enough, until you find that it's repeated dozens of times across hundreds of files. Now that project can only ever be compiled on a case-insensitive filesystem.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Game assets&lt;/em&gt;. A game tries to load &lt;tt&gt;lipsync.dat&lt;/tt&gt; instead of &lt;tt&gt;LIPSYNC.DAT&lt;/tt&gt;. Without knowing it, the artist or developer has accidentally locked that game so that it can only run on a case-insensitive filesystem. (This causes real, constant problems in game pipelines; teams create and test their games on case-insensitive NTFS and don't notice such problems until it's burned to a case-sensitive UDF filesystem on DVD or Blu-Ray.)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Application libraries&lt;/em&gt;. DLLs and shared library references are sometimes generated by a build script which uses the wrong case. When that happens, the application may simply fail to launch from a case-sensitive filesystem.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Miscellaneous data files&lt;/em&gt;. Sometimes an application will appear to run on a case-sensitive filesystem but some feature will fail to work because it fails to load a critical data file: the spell-checking dictionary, a required font, a nib, you name it.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Happily, since Mac OS X shipped in 2001, Apple has been busy solving its own problems with case-insensitivity and encouraging its developers to test with case-sensitive filesystems. Two important initiatives in this direction have been NFS home directories and case-sensitive HFSX.&lt;/p&gt;&lt;p&gt;The upshot of it is that Mac OS X is actually very friendly to case-sensitive disks these days; very little that's bad happens when you use case-sensitive HFSX today. &lt;/p&gt;&lt;h4&gt;Case-insensitivity adds complexity with no actual benefit&lt;/h4&gt;&lt;p&gt;I'm going to make an assertion here:&lt;/p&gt;&lt;p&gt;&lt;em&gt;ONE HUNDRED PERCENT of the path lookups happening on your Mac right now are made with correct case.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Think about that for a moment.&lt;/p&gt;&lt;p&gt;First off, you may think this contradicts the point I just made in the previous section. Nope; I'm simply rounding. The actual figure is something like 99.999%, and I'd probably get tired of typing 9's before I actually approached the real number. There are infinitesimally few path accesses made with incorrect case compared to the ones that are made with the proper case.&lt;/p&gt;&lt;p&gt;Modern computers make hundreds of filesystem accesses per second. As I type this single sentence in MarsEdit on Mac OS X 10.4.11, my computer has made &lt;strong&gt;3692&lt;/strong&gt; filesystem accesses by path. (Yes, really. MarsEdit's "Preview" window is invoking Perl to run Markdown, which loads a handful of modules, and then WebKit re-renders the page. That's a lot of it, but meanwhile there's background activity from Mail, Activity Monitor, iChat, SystemUIServer, iCalAlarmScheduler, AirPort Base Station Agent, Radioshift, NetNewsWire, Twitterrific, and Safari.) &lt;/p&gt;&lt;p&gt;Under Mac OS X you can measure it yourself with this command in Terminal:&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;tt&gt;sudo fs_usage -f filesys | grep / &gt; /tmp/accesses.txt&lt;/tt&gt;&lt;/p&gt;&lt;p&gt;The vast majority of file accesses are made with paths that were returned from the filesystem itself: some bit of code read the contents of a directory, and passed the results on to another bit of code, which eventually decided to access one of those files. So most of the time the filesystem is getting back the paths that it has returned earlier. Very very few accesses are made with paths that come directly from an error-prone human, which is why essentially 100% of filesystem accesses are made with correct case.&lt;/p&gt;&lt;p&gt;But if essentially all filesystem accesses are made with the correct case to begin with, why do we even have case-insensitivity at all?&lt;/p&gt;&lt;p&gt;We've already discussed the problems of &lt;em&gt;contagion&lt;/em&gt;, which is a circular justification: we have to do it because someone else did it first. We've also discussed UI decisions being incorrectly implemented in the bottommost layer of the operating system. Other than those two, what good is it?&lt;/p&gt;&lt;p&gt;I don't have an answer to that. For the life of me I can't come up with any reason to justify case-insensitive filesystems from a pure design standpoint. That leads me to my closing argument, which is...&lt;/p&gt;&lt;h4&gt;A thought experiment&lt;/h4&gt;&lt;p&gt;Suppose case-insensitive filesystems had never been invented. You're the leader of a team of engineers in charge of XYZZYFS, the next big thing in filesystems. One day you tell the other people who work on it:&lt;/p&gt;&lt;p&gt;"Hey! I've got this great idea! It's called case-insensitivity. We'll take every path that comes into the filesystem and compare it against a huge table to create a case-folded version of the path which we'll use for comparisons and sorting. This will add a bunch of complexity to the code, slow down all path lookups, increase our RAM footprint, make it more difficult for users of our filesystem to handle paths, and create a compatibility nightmare for future versions if we ever decide to change the table. But, you see, &lt;strong&gt;it'll all be worth it, because...&lt;/strong&gt; &amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;&amp;#95;."&lt;/p&gt;&lt;p&gt;Can you fill in the blank?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-543119416717917731?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/543119416717917731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=543119416717917731' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/543119416717917731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/543119416717917731'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2007/12/case-against-insensitivity.html' title='The Case Against Insensitivity'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-1570480182576942737</id><published>2007-10-10T06:19:00.001-04:00</published><updated>2007-10-11T13:16:56.037-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZFS'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>ZFS Hater Redux</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;MWJ has responded to my last post, &lt;a href="http://drewthaler.blogspot.com/2007/10/don-be-zfs-hater.html"&gt;Don't Be a ZFS Hater&lt;/a&gt;, with a post of their own: &lt;a href="http://www.macjournals.com/news/2007/10/07.html#a80"&gt;You don't have to hate ZFS to know it's wrong for you&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I don't like the point-by-point quote and response format — it's way too much like an old-school Usenet flamewar. So I will simply try to hit the high points of their arguments.&lt;/p&gt;&lt;h4&gt;Where we agree&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;ZFS is not ready to deploy to the entire Mac OS X user base today&lt;/em&gt;. There's still some work to be done.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;ZFS isn't necessary for most of today's Macintosh computers&lt;/em&gt;. If you have been using your Mac with no storage-related problems, then you can keep on using it that way. Perform regular backups and you'll be just fine.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;It would be an absolutely terrible idea to take people's perfectly working HFS+ installations on existing computers and forcibly convert them to ZFS, chuckling evilly all the while&lt;/em&gt;. Not quite sure where that &lt;a href="http://www.fallacyfiles.org/strawman.html"&gt;strawman&lt;/a&gt; came from.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;ZFS fatzaps are expensive for small files&lt;/em&gt;. If it were true that 20% of the files in a Mac OS X installation required a &lt;a href="http://www.opensolaris.org/os/community/zfs/docs/ondiskformat0822.pdf"&gt;fatzap&lt;/a&gt; (pdf link to ZFS-on-disk specification), that would indeed be unnecessarily wasteful.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;A typical Mac OS X 10.4.x installation has on the order of about 600,000 files&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I think that's about it. But of course there are a number of places where we disagree too.&lt;/p&gt;&lt;h4&gt;ZFS would be awfully nice for a small segment of the Mac OS X user base if it were ready today.&lt;/h4&gt;&lt;p&gt;If you spend any amount of time managing storage — if drives have gone bad on you, if you have ever run out of space on a desktop system and needed to add a drive (or two), if you have a RAID array — then you are the sort of user that could see some immediate benefit.&lt;/p&gt;&lt;p&gt;But of course as we already agreed, it's not ready today. You haven't been "cheated" and I'm sure you don't feel that way. But feel free to look forward to it: I sure am.&lt;/p&gt;&lt;h4&gt;ZFS — or something with all the features of ZFS — will be more than nice, it will be &lt;em&gt;necessary&lt;/em&gt; for tomorrow's Macintosh computers.&lt;/h4&gt;&lt;p&gt;Both storage sizes and consumer consumption of storage grow exponentially. I tried to make this point last time, but MWJ seems to have misunderstood and accused me of misquoting. Let's try again.&lt;/p&gt;&lt;p&gt;In 1997, 20GB of storage meant a server RAID array. Ten years later, in 2007, 20GB of storage is considered "not enough" by most people. Across my entire household I have drives larger than that in my computer, in my TiVo, in my PlayStation 3, and even in my iPod. Now let's extrapolate that into the future.&lt;/p&gt;&lt;p&gt;In 2007, 20TB of storage means a server RAID array. Ten years from now, in 2017, 20TB of storage will similarly be considered "not enough". MWJ scoffed at ZFS because it's really pretty good at the problems of large storage. But you know what? A solution to managing that much data will need to be in place in Mac OS X &lt;em&gt;well before 20TB drives become the norm&lt;/em&gt;. Better hope someone's working on it today.&lt;/p&gt;&lt;p&gt;Meanwhile — and this is what scares the pants off me — the reliability numbers for hard drives have improved much more slowly than capacity.&lt;/p&gt;&lt;p&gt;Here's a fairly typical &lt;a href="http://www.windowsmarketplace.com/details.aspx?itemid=3392956"&gt;Seagate drive&lt;/a&gt; with a capacity of ~150GB = ~1.2 x 10&lt;sup&gt;12&lt;/sup&gt; bits. &lt;strike&gt;The recoverable error rate is listed as 10 bits per 10&lt;sup&gt;12&lt;/sup&gt; bits. Let's put those numbers together. That means that if you read the entire surface of the disk, you'll typically get &lt;em&gt;twelve bits&lt;/em&gt; back that are wrong and which a retry could have fixed.&lt;/strike&gt; (&lt;b&gt;Updated Oct 11 2007&lt;/b&gt;: In the comments, Anton corrected me: I should've used the unrecoverable error rate here, not the recoverable error rate. The net result is that in ideal operating conditions bit errors occur over 100x less frequently than I originally suggested. However, &lt;i&gt;it's still not zero&lt;/i&gt;. The net result is still a looming problem when you scale it across (installed base) x (storage consumption) x (time). See the comment thread.)&lt;/p&gt;&lt;p&gt;Yes, really. Did you catch the implications of that? &lt;strong&gt;Silent single-bit errors are happening today&lt;/strong&gt;. They happen much more often at high-end capacities and utilizations, and we often get lucky because some types of data (video, audio, etc) are resistant to that kind of single-bit error. But today's high end is tomorrow's medium end, and the day after tomorrow's low end. This problem is only going to get worse.&lt;/p&gt;&lt;p&gt;Worse, &lt;strong&gt;bit errors are cumulative&lt;/strong&gt;. If you read and get a bit error, you might wind up writing it back out to disk too. Oops! Now that bit error just went from transient to permanent. &lt;/p&gt;&lt;p&gt;Still think &lt;a href="http://blogs.sun.com/bonwick/entry/zfs_end_to_end_data"&gt;end-to-end data integrity&lt;/a&gt; isn't worth it?&lt;/p&gt;&lt;h4&gt;Apple using ZFS rather than writing their own is a smart choice.&lt;/h4&gt;&lt;p&gt;As I hope I made abundantly clear in the &lt;a href="http://drewthaler.blogspot.com/2007/10/don-be-zfs-hater.html"&gt;last post&lt;/a&gt;, extending HFS+ to the future that we can see looming is just not an option — its structure is simply too far removed from these problems. It's really just not worth it. It's pretty awesome that the original HFS design scaled as far as it did: how many people can come up with a 20-year filesystem? But you have to know when to throw in the towel.&lt;/p&gt;&lt;p&gt;So if you accept that the things I described above are real, looming problems, then Apple really does need a filesystem with at least several of the more important attributes of ZFS.&lt;/p&gt;&lt;p&gt;The choices at this point are essentially twofold: (1) start completely from scratch, or (2) use ZFS. There's really no point in starting over. ZFS has a usable license and has been under development for at least five years by now. By the time you started over and burned five years on catching up it would be too late.&lt;/p&gt;&lt;p&gt;And I really do want to reiterate that the shared community of engineers from Apple, Sun, and FreeBSD working on ZFS is a real and measurable benefit. I've heard as much from friends in CoreOS. I can't understand the hostility to this very clear and obvious fact. It's as if Apple suddenly doubled or tripled the number of filesystem engineers it has available, snagging some really brilliant guys at the top of their profession in the process, and then multiplied its testing force by a factor of 10.&lt;/p&gt;&lt;p&gt;(To respond to a query voiced by MWJ, HFS+ never gathered that community when it was open-sourced because the design was already quite old at that point. It frankly didn't have anything new and exciting to offer, and it was saddled with performance problems and historical compromises of various kinds, so very few people were interested in it.)&lt;/p&gt;&lt;h4&gt;ZFS fatzaps are unlikely to be a significant problem.&lt;/h4&gt;&lt;p&gt;&lt;em&gt;This gets a bit technical. Please skip this section if you don't care about this level of detail.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;MWJ really pounded on this one. That was a bit weird to me, since it seemed to be suggesting that Apple would not expend any engineering effort on solving any obvious glaring problems with ZFS before releasing it. That's not the Apple I know.&lt;/p&gt;&lt;p&gt;But okay, let's suppose that we're stuck with ZFS and Mac OS X both frozen as they stand today. Let's try to make an &lt;em&gt;a priori&lt;/em&gt; prediction of the actual cost of ZFS fatzaps on a typical Mac OS X system.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Classic HFS attributes (FinderInfo, ExtendedFinderInfo, etc) are largely unnecessary and unused today because the Finder uses &lt;code&gt;.DS_Store&lt;/code&gt; files instead. In the few cases where these attributes are set and used by legacy code, they should fit easily in a small number of microzaps.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Extended attributes may create fatzaps. Today it seems like extended attributes are typically used on large files: disk images, digital photos, etc. This may provoke squawking from the peanut gallery, but once a file is above a certain size — roughly a couple of megabytes — using an extra 128KiB is negligible. If you have a 4MiB file and you add 128KiB to track its attributes, big deal: you've added 3%. It's not nothing, but it's hardly a significant problem.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Another likely source of fatzaps in ZFS on Mac OS X is the resource fork. But with Classic gone, new Macs ship with &lt;em&gt;virtually no resource forks on disk&lt;/em&gt;. There are none in the BSD subsystem. There are a handful in &lt;code&gt;/System&lt;/code&gt; and &lt;code&gt;/Library&lt;/code&gt;, mostly fonts. The biggest culprits are large old applications like Quicken and Microsoft Office. A quick measurement on my heavily-used one-year-old laptop shows that I have exactly 1877 resource forks out of 722210 files — that's &lt;strong&gt;0.2%&lt;/strong&gt;, not 20%.&lt;/p&gt;&lt;p&gt;(Fun fact: The space that would be consumed by fatzap headers for these resource files comes out to just 235 MiB, or roughly six and a half &lt;a href="http://www.apple.com/support/downloads/keyboardsoftwareupdate12.html"&gt;Keyboard Software Updates&lt;/a&gt;. Again: not nothing, but hardly a crisis to scream about.)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Want to measure it yourself? Amit Singh's excellent &lt;a href="http://www.osxbook.com/software/hfsdebug/"&gt;hfsdebug&lt;/a&gt; utility will show you a quick summary. Just run "&lt;code&gt;sudo hfsdebug -s&lt;/code&gt;" and look at the numbers for "files" and "non-zero resource forks". Or try "&lt;code&gt;sudo hfsdebug -b attributes -l any | less&lt;/code&gt;" to examine the files which have extended attributes on your disk.&lt;/p&gt;&lt;h4&gt;ZFS snapshots don't have to be wasteful&lt;/h4&gt;&lt;p&gt;The cheesesteak analogy was cute. But rather than imagining that snapshots just eat and eat and eat storage until you choke in a &lt;a href="http://en.wikipedia.org/wiki/Mr._Creosote"&gt;greasy pile of death&lt;/a&gt;, it would help if we all actually understand how hard drive storage is actually used in practice, and how ZFS can work with that.&lt;/p&gt;&lt;p&gt;There are three major classes of stored data.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Static data&lt;/em&gt; is data that you want to keep and almost never modify. This is your archive. Photographs, music, digital video, applications, email, etc. Archives are additive: unless you really run out of room, you rarely delete the old — you only add new stuff. You want the contents safe and immediately accessible, but they are essentially unchanging.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Snapshotting static data is close enough to free that you won't notice: the only cost is the basic cost of the snapshot. No extraneous data copies are ever created, because you never modify or delete this stuff anyway.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Dynamic data&lt;/em&gt; is data that you want to keep, but are modifying with some frequency. This is whatever you are working on at the moment. It might be writing a novel, working in Photoshop, or writing code: in all cases you keep saving new versions over the old.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Snapshotting dynamic data is more expensive, because if you do it too much without recycling your old snapshots then you can build up a large backlog.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Transient data&lt;/em&gt; is data that should not be persistent at all. These are your temporary files: local caches, scratch files, compiler object files, downloaded zip files or disk images, etc. These may be created, modified, or deleted at any moment.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Snapshotting transient data is generally a bad idea — by definition you don't care that much about it and you'd prefer it to be deleted immediately.&lt;/p&gt;&lt;p&gt;Got all that? Okay. Now I need to make a couple of points.&lt;/p&gt;&lt;p&gt;First, I assert that virtually &lt;strong&gt;all&lt;/strong&gt; of the data on personal computer hard drives is &lt;em&gt;static&lt;/em&gt; most of the time. Think about that. The operating system is static the whole time you are using it, until you install a system update. (And even then, usually just a few hundred megabytes change out of several gigabytes.) Your &lt;code&gt;/Applications&lt;/code&gt; folder is static. Your music is static. And so on. Usually a few percent of your data is dynamic, and a few more percent is transient. But in most cases well over 95% is static. (Exceptions are easy to come up with: Sometimes you generate a large amount of transient data while building a disk image in iDVD or importing DV footage. That can shift the ratio below 95%. But once that task is complete you're back to the original ratio.)&lt;/p&gt;&lt;p&gt;Second, the biggest distinction that matters when snapshotting is separating persistent data from transient data. Taking snapshots of transient data is what will waste disk space in a hurry. Taking snapshots of dynamic data as a local backup is often valuable enough that it's okay to burn the small amount of disk space that it takes, because remember: that's the &lt;em&gt;actual data that you're actively working on&lt;/em&gt;. And as we already mentioned, snapshots of static data are free.&lt;/p&gt;&lt;p&gt;Now here's where it gets interesting.&lt;/p&gt;&lt;p&gt;With ZFS, snapshots work on the filesystem level. Because it no longer uses the "big floppy" model of storage, new filesystems are very cheap to create. (They are almost as lightweight as directories, and often used to replace them.) So let's create one or more special filesystems just for transient data and exclude them from our regular snapshot process. In fact on Mac OS X that's easy: we have well-defined directories for transient data: &lt;code&gt;~/Library/Caches&lt;/code&gt;, &lt;code&gt;/tmp&lt;/code&gt;, and so on. Link those all off to one or more transient filesystems and they will never wind up in a snapshot of the important stuff. I wouldn't expect users to do this for themselves, of course — but it could certainly be set up that way automatically by Apple.&lt;/p&gt;&lt;p&gt;Once the transient data is out of the picture, our snapshots will consist of 95% or more static data — which is not copied in any way — and a tiny percentage of dynamic data. And remember, the dynamic data is not even copied unless and until it changes. The net effect is very similar to doing &lt;strong&gt;an incremental backup of &lt;em&gt;exactly and only the files you are working on&lt;/strong&gt;&lt;/em&gt;. This is essentially a perfect local backup: no duplication except where it's actually needed.&lt;/p&gt;&lt;p&gt;Will you want to allow snapshots to live forever? Of course not. One reasonable model for taking backup snapshots might be to remember 12 hourly snapshots, 7 daily snapshots, and 4 weekly snapshots. If you are getting tight on storage the system could take new snapshots less frequently and expire them more aggressively. Remember: when nothing is changing the snapshots don't take up any space.&lt;/p&gt;&lt;h4&gt;Wrap-up: Listen to the smart guys&lt;/h4&gt;&lt;p&gt;Some very smart people at Sun started the ball rolling by putting an awful lot of thought into the future of storage, and they came up with ZFS.&lt;/p&gt;&lt;p&gt;After they announced it and started talking about it, other brilliant people at Apple (and FreeBSD, and NetBSD) paid attention to what they were doing. And they listened, and thought about it, and looked at the code, and wound up coming around to the side of ZFS as well.&lt;/p&gt;&lt;p&gt;If you think I'm smart, just know that I'm in awe of some of the guys who've been involved with this project.&lt;/p&gt;&lt;p&gt;If you think I'm stupid, why, I look forward to hearing from you in the comments.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-1570480182576942737?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/1570480182576942737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=1570480182576942737' title='41 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/1570480182576942737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/1570480182576942737'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2007/10/zfs-hater-redux.html' title='ZFS Hater Redux'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>41</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-6085497482603223335</id><published>2007-10-06T03:03:00.002-04:00</published><updated>2008-04-08T10:30:01.598-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZFS'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Don't be a ZFS Hater</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;John Gruber recently &lt;a href="http://daringfireball.net/linked/2007/october#fri-05-zfs"&gt;linked to&lt;/a&gt; — and thus gave credibility to — a &lt;a href="http://www.macjournals.com/news/2007/10/04#a79"&gt;MWJ post&lt;/a&gt; ripping on a fairly reasonable &lt;a href="http://www.appleinsider.com/articles/07/10/04/zfs_to_play_larger_role_in_future_versions_of_mac_os_x.html"&gt;AppleInsider post about ZFS&lt;/a&gt;. Representative quote:&lt;/p&gt;&lt;blockquote&gt;  &lt;p&gt;“We don't find HFS Plus administration to be complex, and we can't tell you what those other things mean, but they sound really cool, and therefore we want them. On the magic unlocked iPhone. For free.”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Har har har. Wait. Hold on a minute. Why is it suddenly fashionable to bash on ZFS?&lt;/p&gt;&lt;p&gt;Part of it is a backlash to the weird and obviously fake rumor about it becoming the default in Leopard, I guess. (No thanks to Sun's CEO &lt;a href="http://blogs.sun.com/jonathan/"&gt;Jonathan Schwartz&lt;/a&gt; here, who as far as I know has never publicly said anything about why he either &lt;a href="http://www.macnn.com/articles/07/06/06/zfs.in.leopard/"&gt;misspoke or misunderstood&lt;/a&gt; what was going on back in June.)&lt;/p&gt;&lt;p&gt;But don't do that. Don't be a ZFS hater.&lt;/p&gt;&lt;h4&gt;A word about my background&lt;/h4&gt;&lt;p&gt;Let's get the credentials out of the way up front. Today I work on a file I/O subsystem for PlayStation 3 games. Before that, I worked in Apple's CoreOS filesystems group. Before that, I worked on &lt;a href="http://www.cocoadev.com/index.pl?DiscRecording"&gt;DiscRecording.framework&lt;/a&gt;, and singlehandedly created the content subframework that streamed out HFS+, ISO-9660, and Joliet filesystems. Before that, I worked on the same thing for Mac OS 9. And before that, I worked on mass storage drivers for external USB/FireWire drives and internal ATA/ATAPI/SCSI drives.&lt;/p&gt;&lt;p&gt;You might say I know a thing or two about filesystems and storage.&lt;/p&gt;&lt;h4&gt;What bugged me about the article&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;ZFS is a fine candidate to replace HFS+ eventually.&lt;/em&gt; It's not going to happen overnight, no. And it'll be available as an option for early adopters &lt;em&gt;way&lt;/em&gt; before it becomes the default. But several years from now? Absolutely.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;The bizarre rants about ZFS wasting processor time and disk space.&lt;/em&gt; I'm sorry, I wasn't aware that we were still using 30MHz machines with 1.44MB floppies. ZFS is great specifically because it takes two things that modern computers tend to have a &lt;em&gt;surplus&lt;/em&gt; of — CPU time and hard disk space — and borrows a bit of it in the name of data integrity and ease of use. This tradeoff made very little sense in, say, 1992. But here in 2007 it's brilliant.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Sneeringly implying that HFS+ is sufficient.&lt;/em&gt; Sure, HFS+ administration is simple, but it's also inflexible. It locks you into what I call the "big floppy" model of storage. This only gets more and more painful as disks get bigger and bigger. Storage management has come a long way since the original HFS was created, and ZFS administration lets you do things that HFS+ can only dream of.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Claiming that RAID-Z is required for checksums to be useful.&lt;/em&gt; This is flat-out wrong. Sure, RAID-Z helps a lot by storing an &lt;a href="http://en.wikipedia.org/wiki/Error_detection_and_correction#Error-correcting_code"&gt;error-correcting code&lt;/a&gt;. But even without RAID-Z, simply recognizing that the data is bad gets you well down the road to recovering from an error — depending on the exact nature of the problem, a simple retry loop can in fact get you the right data the second or third time. And as soon as you know there is a problem you can mark the block as bad and aggressively copy it elsewhere to preserve it. I suppose the author would prefer that the filesystem silently returned bad data?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Completely ignoring Moore's Law.&lt;/em&gt; How dumb do you need to be to willfully ignore the fact that the things that are bleeding-edge today will be commonplace tomorrow? Twenty gigabyte disks were massive server arrays &lt;a href="http://en.wikipedia.org/wiki/Power_Macintosh_G3"&gt;ten years ago&lt;/a&gt;. Today I use a hard drive ten times bigger than that &lt;a href="http://www.engadget.com/2006/09/12/hands-on-with-the-tivo-series3/"&gt;just to watch TV&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Reading this article made me feel like I was back in 1996 listening to people debate cooperative vs preemptive multitasking. In the Mac community at that time there were, I'm ashamed to say, a lot of heated discussions about how preemptive threading was unnecessary. There were some people (like me) who were clamoring for a preemptive scheduler, while others defended the status quo — claiming, among other things, that Mac OS 8's cooperative threads "weren't that bad" and were "fine if you used them correctly". Um, yeah.&lt;/p&gt;&lt;p&gt;Since then we've thoroughly settled that debate, of course. And if you know anything about technology you might be able to understand why there's a difference between "not that bad" and "a completely new paradigm".&lt;/p&gt;&lt;h4&gt;ZFS is cool&lt;/h4&gt;&lt;p&gt;Let's do a short rundown of reasons why I, a qualified filesystem and storage engineer, think that ZFS is cool. I'll leave out some of the more technical reasons and just try to keep it in plain English, with links for further reading.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.tldp.org/HOWTO/LVM-HOWTO/whatisvolman.html"&gt;Logical Volume Management&lt;/a&gt;. Hard disks are no longer big floppies. They are building blocks that you can just drop in to add storage to your system. Partitioning, formatting, migrating data from old small drive to new big drive -- these all go away.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Adaptive_Replacement_Cache"&gt;Adaptive Replacement Caching&lt;/a&gt;. ZFS uses a smarter cache eviction algorithm than OSX's UBC, which lets it deal well with data that is streamed and only read once. (&lt;a href="http://drewthaler.blogspot.com/2006/06/pd-tweaker-10.html"&gt;Sound familiar&lt;/a&gt;? It could obsolete the need for &lt;tt&gt;F_NOCACHE&lt;/tt&gt;.)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29"&gt;Snapshots&lt;/a&gt;. Think about how drastically the &lt;a href="http://www.usabilityfirst.com/glossary/term_583.txl"&gt;trash can metaphor&lt;/a&gt; changed the way people worked with files. Snapshots are the same concept, extended system-wide. They can eliminate entire classes of problems.&lt;/p&gt;&lt;p&gt;I don't know about you, but in the past year I have done all of the following, sometimes more than once. Snapshots would've made these a non-issue:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;installed a software update and then found out it broke something&lt;/li&gt;&lt;li&gt;held off on installing a software update because I was afraid &lt;a href="http://www.macrumors.com/2007/07/10/mac-os-10-4-10-and-macbook-airport-issues/"&gt;something might break&lt;/a&gt;&lt;/li&gt;&lt;li&gt;lost some work in between backups&lt;/li&gt;&lt;li&gt;accidentally deleted an entire directory with a mistyped &lt;tt&gt;rm -rf&lt;/tt&gt; or SCM delete command.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Copy-on-write"&gt;Copy-on-write&lt;/a&gt; in the filesystem makes snapshots super-cheap to implement. No, not "free", just "so cheap you wouldn't possibly notice". If you are grousing about wasted disk space, you don't understand how it works. Mac OS X uses copy-on-write extensively in its virtual memory system because it's both cheap and incredibly effective at reducing wasted memory. The same thing applies to the filesystem.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://blogs.sun.com/bonwick/entry/zfs_end_to_end_data"&gt;End-to-end data integrity&lt;/a&gt;. Journaling is the only thing HFS+ does to prevent data loss. This is hugely important, and big props are due to Dominic Giampaolo for hacking it in. But journaling only protects the write stage. Once the bits are on the disk, HFS+ simply assumes they're correct.&lt;/p&gt;&lt;p&gt;But as disks get larger and cheaper, we're finding that this isn't sufficient any more. The odds of any one bit being wrong are very small. And yet the 200GB hard disk in my laptop has a capacity of about 1.6 trillion bits. The cumulative probability that EVERY SINGLE ONE of those bits are correct is effectively zero. Zero!&lt;/p&gt;&lt;p&gt;Backups are one answer to this problem, but as your data set gets larger they get more and more expensive and slow. (How do you back up a terabyte's worth of data? How long does it take? Worse still, how do you really know that your backup &lt;em&gt;actually worked&lt;/em&gt; instead of just appearing to work?) So far, disk capacity has consistently grown faster than disk speed, meaning that backups will only continue to get slower and slower. Boy, wouldn't it be great if the filesystem — which is the natural bottleneck for everything disk-related — helped you out a little more on this? ZFS does.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Combinations of the above&lt;/strong&gt;. There are some pretty cool results that fall out of having all of these things together in one place. Even if HFS+ supported snapshots, you'd still be limited by the "big floppy" storage model. It really starts to get interesting when you combine snapshots with smart use of logical volume management. And we've already discussed how RAID-Z enhances ZFS's basic built-in end-to-end data integrity by adding stronger error correction. There are other cool combinations too. It all adds up to a whole which is greater than the sum of its parts.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Is any of this stuff new and unique to ZFS? Not really. Bits and pieces of everything I've mentioned above have showed up in many places.&lt;/p&gt;&lt;p&gt;What ZFS brings to the table is that it's the total package — everything all wrapped up in one place, already integrated, and in fact already shipping and working. If you happened to be looking for a next-generation filesystem, and Apple is, you wouldn't need to look much further than ZFS.&lt;/p&gt;&lt;h4&gt;Still not convinced?&lt;/h4&gt;&lt;p&gt;Okay, here are three further high-level benefits of ZFS over HFS+:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Designed to support Unix&lt;/strong&gt;. There are a lot of subtleties to supporting a modern Unix system. HFS+ was not really designed for that purpose. Yes, it's been hacked up to support Unix permissions, node locking, lazy zero-fill, symbolic links, hard links, NFS readdir semantics, and more. Some of these were easy. Others were painful and exhibit subtle bugs or performance problems to this day. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Designed to support modern filesystem concepts&lt;/strong&gt;. Transactions. Write cache safety. Sparse files. Extended metadata attributes. I/O sorting and priority. Multiple prefetch streams. Compression. Encryption. And that's just off the top of my head.&lt;/p&gt;&lt;p&gt;HFS+ is 10-year-old code built on a 20-year-old design. It's been extended to do some of this, and could in theory be extended to do some of the others... but not all of them. You'll just have to trust me that it's getting to the point where some of this stuff is just not worth the engineering cost of hacking it in. HFS+ is great, but it's getting old and creaky.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Actually used by someone besides Apple&lt;/strong&gt;. Don't underestimate the value of a shared standard. If both Sun and Apple start using the same open-source filesystem, it creates a lot of momentum behind it. Having more OS clients means that you get a lot more eyes on the code, which improves the code via bugfixes and performance enhancements. This makes the code better, which makes ZFS more attractive to new clients, which means more eyes on the code, which means the code gets better.... it's a &lt;a href="http://en.wikipedia.org/wiki/Virtuous_circle_and_vicious_circle"&gt;virtuous circle&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Is ZFS the perfect filesystem? I doubt it. I'm sure it's got its limitations just like any other filesystem. In particular, wrapping a GUI around its administration options and coming up with good default parameters will be an interesting trick, and I look forward to seeing how Apple does it.&lt;/p&gt;&lt;p&gt;But really, seriously, dude. The kid is cool. Don't be like that.&lt;/p&gt;&lt;p&gt;Don't be a ZFS hater.&lt;/p&gt;&lt;h4&gt;Updates:&lt;/h4&gt;&lt;p&gt;MWJ's response: &lt;a href="http://www.macjournals.com/news/2007/10/07.html#a80"&gt;You don't have to be a ZFS hater to know it's wrong for you&lt;/a&gt;.&lt;br /&gt;My followup: &lt;a href="http://drewthaler.blogspot.com/2007/10/zfs-hater-redux.html"&gt;ZFS Hater Redux&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-6085497482603223335?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/6085497482603223335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=6085497482603223335' title='63 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/6085497482603223335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/6085497482603223335'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2007/10/don-be-zfs-hater.html' title='Don&amp;#39;t be a ZFS Hater'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>63</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-6076825853470888249</id><published>2007-10-04T16:18:00.001-04:00</published><updated>2007-10-05T00:32:47.168-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>MarsEdit Markdown Scripts updated to 1.0.3</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;No piece of software, &lt;a href="http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html"&gt;however simple&lt;/a&gt;, is bug-free.&lt;/p&gt;&lt;p&gt;Daniel Jalkut was kind enough to point out to me that my &lt;a href="http://drewthaler.blogspot.com/2007/08/markdown-scripts-for-marsedit.html"&gt;Markdown scripts for MarsEdit&lt;/a&gt; didn't deal properly with Unicode text.&lt;/p&gt;&lt;p&gt;Silly me. I'd forgotten that AppleScript (with its very early-1990s roots) still needs to be explicitly told not to lose data when writing out files. He offered a fix — a few «class utf8» coercions in the right place and all was well again. That was 1.0.1.&lt;/p&gt;&lt;p&gt;However, just immediately after release, I discovered that the scripts needed to do some more aggressive transcoding of UTF8 into ASCII in order to get Python to read the file in html2text. So I've added support for that. This slows down the HTML-to-Markdown reverse conversion a little bit, but at least it's correct now. That was 1.0.2.&lt;/p&gt;&lt;p&gt;Finally, later in the evening I realized it was pretty stupid to write AppleScript code to transcode the UTF8 into ASCII, because AppleScript's support for Unicode is so horribly primitive and I was doing it character by character. So I rewrote that whole section as a one-line Perl script. Now it's blazing fast. And that's 1.0.3.&lt;/p&gt;&lt;p&gt;I've updated the scripts. &lt;a href="http://multisolar.com/software/MarsEditMarkdownScripts/"&gt;Download them now&lt;/a&gt;!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-6076825853470888249?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/6076825853470888249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=6076825853470888249' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/6076825853470888249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/6076825853470888249'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2007/10/marsedit-markdown-scripts-updated-to.html' title='MarsEdit Markdown Scripts updated to 1.0.3'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-4214265902484645070</id><published>2007-09-04T02:26:00.002-04:00</published><updated>2008-04-08T10:29:17.387-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Microbenchmarking</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;I want to talk a little about a technique that can be very useful. Like all programming tools, however, it's a double-edged sword and can easily be abused. &lt;/p&gt;&lt;p&gt;I'm talking about &lt;strong&gt;microbenchmarks&lt;/strong&gt;. A microbenchmark is a form of benchmark. Let's quickly define our terms:&lt;/p&gt;&lt;dl&gt;&lt;dt&gt;Benchmark&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;&lt;i&gt;noun:&lt;/i&gt; a relative measure of the performance of an operation (or set of operations) in computer software. Many factors may be used to create this measure, such as memory use or I/O, but when unspecified the measure is usually speed.&lt;/p&gt;&lt;/dd&gt;&lt;dd&gt;&lt;p&gt;&lt;i&gt;verb:&lt;/i&gt; to create or run a benchmark.&lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;h4&gt;Microbenchmarks&lt;/h4&gt;&lt;p&gt;Sometimes the term "benchmark" is too broad. I want to specifically talk about single benchmarks that are limited in scope. One commonly used term for this is "microbenchmark". &lt;/p&gt;&lt;dl&gt;&lt;dt&gt;Microbenchmark&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;&lt;i&gt;noun:&lt;/i&gt; a benchmark that measures the performance of a single operation which is a very small portion of a larger system.&lt;/p&gt;&lt;/dd&gt;&lt;dd&gt;&lt;p&gt;&lt;i&gt;verb:&lt;/i&gt; to create or run a microbenchmark.&lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;p&gt;I would consider each of the following to be an example of a microbenchmark:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Implementation comparisons&lt;/strong&gt;. Suppose you are choosing between multiple implementations of the C standard library routine &lt;code&gt;strcmp()&lt;/code&gt;. You might use a microbenchmark to compare different implementations against each other until you find the one that's right for you.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Equivalent function comparison&lt;/strong&gt;. Sometimes there's more than one way to achieve your goal. If you want to know which is faster, you might use a microbenchmark to compare the different functions.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inter-language primitive comparisons&lt;/strong&gt;. Microbenchmarks are often used to compare programming languages. For example, Java, C++, and C# are often microbenchmarked to see which has the faster string comparison, stack allocation, heap allocation, and so on.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Individual aspects of a large system's performance&lt;/strong&gt;. Examples might include adding a row to a database table, sorting a large list of input files, or even application launch time. These aspects may be measured in isolation (i.e., without a strict performance target) with the presumption that speeding them up is generally useful, since the end user's experience is comprised of lots of these small operations.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I think the last example above is the most generic description of a microbenchmark, because it encompasses the others. When you are benchmarking &lt;code&gt;strcmp()&lt;/code&gt;, you are really measuring an individual aspect of the C library's performance. And when you are comparing language primitives, you are again measuring an individual aspect of the language's performance.&lt;/p&gt;&lt;p&gt;The prefix "micro-" is relative, of course. If your job description is "Chief Programmer: strcmp()", then measuring the performance of &lt;code&gt;strcmp()&lt;/code&gt; is simply benchmarking, not microbenchmarking. But if you are working on a large modern GUI application for a consumer OS, measuring the performance of &lt;code&gt;strcmp()&lt;/code&gt; becomes a microbenchmark because it's such a small part of your overall system.&lt;/p&gt;&lt;h4&gt;Losing Track of the Macro&lt;/h4&gt;&lt;p&gt;Before I start talking about how to do microbenchmarks, there's an important point to be made. Improperly applied microbenchmarks can actually be &lt;em&gt;hazardous&lt;/em&gt; to real-world performance.&lt;/p&gt;&lt;p&gt;Benchmarking goes hand-in-hand with optimization when it's done correctly. You benchmark first, and then optimize. Similarly, microbenchmarking goes hand-in-hand with microoptimization. And microoptimization is &lt;a href="http://en.wikipedia.org/wiki/Optimization_%28computer_science%29#When_to_optimize"&gt;rarely a good idea&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;That's not to say that microbenchmarks are bad. They can be really useful when applied correctly. I remember the competitions at Apple to create the fastest &lt;a href="http://developer.apple.com/documentation/mac/Memory/Memory-103.html"&gt;BlockMove&lt;/a&gt; for PowerPC, which were often repeated with each new generation of processor. Since it was one of the most heavily-used system calls in the Mac OS, each incremental improvement made the OS faster. Many individual benchmarks, such as drawing and text manipulation, got faster whenever BlockMove was improved.&lt;/p&gt;&lt;p&gt;The danger comes not from the microbenchmarking itself. The real problem occurs when you focus so much on the micro that you forget about the big picture. There are three main negative outcomes possible:&lt;/p&gt;&lt;div style="margin:40px; padding:10px 45px 10px 20px; margin:15px; font-size:90%; background:#FFAAAA; border:1px solid black;"&gt;&lt;p style="font-size: 110%; color:#880000"&gt;&lt;b&gt;Dangers of Microbenchmarking and Microoptimization&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wasting development time&lt;/strong&gt;. Newbie programmers sometimes burn weeks optimizing something that doesn't really need optimizing. This doesn't matter much when you're doing it as a hobby, but it matters a lot when you're in a real job.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Making something else slower&lt;/strong&gt;. Sometimes performance can be like a carpet. Push it down over here, and it pops up over there. If the operation that you're microbenchmarking does not crop up often in real-world scenarios, you may find that all your micro-optimizing actually &lt;em&gt;decreases&lt;/em&gt; your real-world performance.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Introducing bugs&lt;/strong&gt;. Sloppy optimization can be worse than no optimization. Your code might work today, but the trick you used might not be future-proof.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h4&gt;Performance is Chunky&lt;/h4&gt;&lt;p&gt;There are two important lessons that I've learned about software performance over the years:&lt;/p&gt;&lt;p&gt;Lesson 1: &lt;strong&gt;Performance is "chunky"&lt;/strong&gt;. Not all parts of the code contribute equally to the software's speed. A small piece of code might turn out to be a very big chunk of the performance, and a big piece of code might be almost immaterial. You need to know what your chunks look like before you can optimize intelligently.&lt;/p&gt;&lt;p&gt;Lesson 2: &lt;strong&gt;Design trumps everything&lt;/strong&gt;. Choosing the right design or algorithm for your code is far more important than almost any microoptimization you can make. If your code calls &lt;code&gt;strcmp()&lt;/code&gt; 4 million times in a loop, you're better off changing your design to call it less often. There's no reason to waste time looking for a faster &lt;code&gt;strcmp()&lt;/code&gt;. &lt;/p&gt;&lt;p&gt;From these two lessons we can pretty easily derive the types of optimizations that work best. Here they are, from most effective to least effective:&lt;/p&gt;&lt;div style="margin:40px; padding:10px 45px 10px 20px; margin:15px; font-size:90%; background:#FFFFCC; border:1px solid black;"&gt;&lt;p style="font-size:110%"&gt;&lt;b&gt;Ordered Rules for Optimization&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Want to make your code faster? Follow these rules in order.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Design for efficiency&lt;/b&gt;. Understand the real task. Eliminate redundancy. Understand how your algorithm is performing, and the ways it might not be optimal. Redesign the whole thing until it &lt;i&gt;is&lt;/i&gt; optimal.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Optimize areas where your code spends a lot of time&lt;/b&gt;. Sometimes there is an inner loop which is repeated millions of times. The first answer is always rule #1: "don't do that" — try to redesign your code to reduce the number of times you perform that operation. But if it truly can't be avoided, then go ahead and expend some effort on speeding it up.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Microoptimization&lt;/b&gt;. Pick a single operation and make it faster in isolation. This is almost always the wrong thing to do.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;Why are microbenchmarking and microoptimization almost always wrong? Because you should be taking care of #1 or #2 first. And the fundamental essence of programming is that the first two are never complete. &lt;/p&gt;&lt;h4&gt;When should you microbenchmark?&lt;/h4&gt;&lt;p&gt;If you are writing part of an operating system, a virtual machine, or the runtime for a programming language. Compiler writers may also microbenchmark the &lt;em&gt;output&lt;/em&gt; of their compiler.&lt;/p&gt;&lt;p&gt;Very occasionally, it might be useful to do it as part of the first two optimization tasks. Perhaps you're choosing between different algorithms, one which involves calling &lt;code&gt;functionA()&lt;/code&gt; a thousand times, and one which involves calling &lt;code&gt;functionB()&lt;/code&gt; a thousand times. Rather than writing two complete implementations and comparing them, it might be instructive to do a quick microbenchmark to see which of the two is faster in isolation.&lt;/p&gt;&lt;p&gt;You can also do it for your own amusement and education, or for a &lt;a href="http://mikeash.com/blog/pivot/entry.php?id=29"&gt;blog entry&lt;/a&gt;. While not terribly useful, it can be informative and teach you a thing or two about your &lt;acronym title="operating system"&gt;OS&lt;/acronym&gt;.&lt;/p&gt;&lt;h4&gt;How to write a microbenchmark&lt;/h4&gt;&lt;p&gt;With all that said, let's get down to the details. Suppose that you eventually find yourself in a position where you really do need to run a microbenchmark.&lt;/p&gt;&lt;p&gt;I use a ten-step process:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consider all the factors that may impact performance.&lt;/strong&gt; There may be non-obvious considerations like memory alignment, cache characteristics, or data set size. Decide exactly how you want to test your operation with those factors in mind.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Write a loop to perform the operation a large number of times.&lt;/strong&gt; Any single measurement might be way off, because your computer is busy doing all sorts of things like processing interrupts in the background that are out of your control. So you need to average over a longish interval. Try starting with about a hundred thousand iterations, then add multiples of ten until you wind up with a total runtime of a second or two.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use a high-resolution timer to record the start and stop time.&lt;/strong&gt; Your data is only as good as your timer. Find the best one available. On Mac OS X that's &lt;a href="http://developer.apple.com/qa/qa2004/qa1398.html"&gt;&lt;code&gt;mach_absolute_time()&lt;/code&gt;&lt;/a&gt;, and on Windows it's &lt;a href="http://msdn2.microsoft.com/en-us/library/ms632592.aspx"&gt;&lt;code&gt;QueryPerformanceCounter()&lt;/code&gt;&lt;/a&gt;. Other platforms usually have an equivalent high-resolution timer. Call it only twice: once before the big loop, and once after.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Write code to compute the result.&lt;/strong&gt; The approximate time it takes for a single operation will be &lt;code&gt;elapsedTime / numberOfIterations&lt;/code&gt;. The &lt;code&gt;elapsedTime&lt;/code&gt; is generally &lt;code&gt;(stopTime - startTime) / timerFrequency&lt;/code&gt;. Watch out for integer overflow and floating-point precision loss: it's easiest to just use double-precision math. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consider whether you should compile your code at the highest optimization level available.&lt;/strong&gt; Compilers generate significantly slower code when optimization is off. You're almost certainly interested in the performance of the fully optimized build rather than the unoptimized debug build, but optimization can introduce its own difficulties. It depends on what exactly you're benchmarking.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Compile, then disassemble your test to make sure it's really doing what you think it's doing.&lt;/strong&gt; This step is &lt;em&gt;non-negotiable&lt;/em&gt;!! If you can't read assembly, you shouldn't be doing microbenchmarking. Compilers can be tricky and there's no guarantee that it's actually doing what you think it's doing until you look. If you are testing &lt;code&gt;strcmp()&lt;/code&gt;, for example, you might find that the compiler has decided to optimize out all ten million calls in your inner loop because you're using a string constant instead of a variable. Or perhaps your ten million iterations of &lt;code&gt;input = input + 1&lt;/code&gt; are being optimized out to &lt;code&gt;input = input + 10000000&lt;/code&gt;. If this is happening to you, you'll need to figure out a way to force the compiler to do what you want. With gcc, for example, you might need to link functions in via separate modules to prevent inlining, or specify additional flags on the command line.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Quiesce your system.&lt;/strong&gt; You don't have to shut everything down, but do make sure that you're not running under abnormally heavy load. Most systems these days have a CPU meter which can tell you what's going on. If you're writing code on an embedded system, make sure that any asynchronous startup operations (like initializing the network stack) have finished before you begin.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run the test and get the results.&lt;/strong&gt; If it runs too quickly or too slowly, you might need to adjust your iteration count and try again. If you get what looks like a good result, there's one more step:&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run the test several more times and make sure your result is reproducible.&lt;/strong&gt; This will also give you an idea of the typical error in your measurement. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;If you support different platforms or processors, run the test on each one.&lt;/strong&gt; Sometimes constructs which work well with one processor are the worst-case for another. Occasionally operating systems will change the implementation of their standard library functions enough to perturb performance. Don't assume that just because it's faster on one configuration that it will always be faster everywhere.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h4&gt;Code Sample&lt;/h4&gt;&lt;p&gt;Here's a piece of sample code I wrote to microbenchmark the speed of a function call on Mac OS X. I've removed the function body in order to simply show the overall technique.&lt;/p&gt;&lt;pre class='sh_cpp'&gt;/* foo.cpp */
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;mach/mach_time.h&amp;gt;

int testfunc(int arg1, int arg2);

int main(int, const char **)
{
    struct mach_timebase_info  tb;
    uint64_t   start, stop, elapsed;
    double     seconds;
    const int  iterations = 300000000;
    int result = 0;

    mach_timebase_info(&amp;amp;tb);

    // Run the test.
    start = mach_absolute_time();
    for (int i=0; i&amp;lt;iterations; ++i)
        result = testfunc(result,i);
    stop = mach_absolute_time();
    elapsed = stop - start;

    // Print results.
    seconds = ((double)elapsed * tb.denom / tb.numer) / (1000*1000*1000);
    printf("%d iterations = %0.9lf seconds\n", iterations, seconds);
    printf("1 iteration = %0.9lf seconds\n", seconds/iterations);
    return 0;
}&lt;/pre&gt;&lt;pre class='sh_cpp'&gt;/* bar.cpp */
int testfunc(int, int)
{
    return 0;
}&lt;/pre&gt;&lt;p&gt;Notice how the function that it's calling is in a completely different source file? That's because on my first attempt gcc's inlining optimizer actually completely eliminated the function call. This was only visible upon inspecting the disassembly (step 6). Putting the target function in another module was the easiest way to stop the function from being inlined. (Yes, I tried &lt;code&gt;-fno-inline&lt;/code&gt; and &lt;code&gt;__attribute__((noinline))&lt;/code&gt;. Neither has the desired effect.)&lt;/p&gt;&lt;p&gt;I've chosen to ignore the overhead of the loop itself in this measurement. It's essentially negligible for most types of microbenchmarks. Furthermore, as long as you wind up comparing the result against another test run with identical loop overhead, it will simply cancel from both sides of the equation.&lt;/p&gt;&lt;p&gt;So that's it. Anyone have any interesting situations where you've found that you needed to run a microbenchmark? Does your technique differ from mine? Found any unexpected results? Let me know in the comments.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-4214265902484645070?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/4214265902484645070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=4214265902484645070' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/4214265902484645070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/4214265902484645070'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2007/09/microbenchmarking.html' title='Microbenchmarking'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-8011602125829659455</id><published>2007-08-31T19:52:00.001-04:00</published><updated>2007-08-31T21:55:22.814-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='television'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>What should TV shows cost?</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;While reading &lt;a href="http://daringfireball.net/linked/2007/august#fri-31-apple_nbc"&gt;Daring Fireball&lt;/a&gt; today, I saw that Apple has posted a &lt;a href="http://www.apple.com/pr/library/2007/08/31itunes.html"&gt;press release&lt;/a&gt; scolding NBC for wanting to more than double the cost of their content.&lt;/p&gt;&lt;blockquote&gt;Apple&amp;#174; today announced that it will not be selling NBC television shows for the upcoming television season on its online iTunes&amp;#174; Store (&lt;a href="http://www.itunes.com/"&gt;www.itunes.com&lt;/a&gt;). The move follows NBC's decision to not renew its agreement with iTunes after Apple declined to pay more than double the wholesale price for each NBC &lt;acronym title="television"&gt;TV&lt;/acronym&gt; episode, which would have resulted in the retail price to consumers increasing to $4.99 per episode from the current $1.99. ABC, CBS, FOX and The CW, along with more than 50 cable networks, are signed up to sell &lt;acronym title="television"&gt;TV&lt;/acronym&gt; shows from their upcoming season on iTunes at $1.99 per episode.&lt;/p&gt;     &lt;p&gt;'We are disappointed to see NBC leave iTunes because we would not agree to their dramatic price increase,' said Eddy Cue, Apple's vice president of iTunes. 'We hope they will change their minds and offer their &lt;acronym title="television"&gt;TV&lt;/acronym&gt; shows to the tens of millions of iTunes customers.'&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;First of all, I'm totally amused that Apple is dragging this dirty laundry out in public to shame NBC. It's a smart business move, and I have no objections to it: I just get a kick out of big corporations fighting.&lt;/p&gt;&lt;p&gt;Second, it brings up an excellent question about the value of content. Particularly content that is sometimes expensive to produce. What exactly do consumers perceive as the "right price" for something like a &lt;acronym title="television"&gt;TV&lt;/acronym&gt; show?&lt;/p&gt;&lt;h4&gt;What Content Producers Think&lt;/h4&gt;&lt;p&gt;I think content producers operate on a couple of different mental models when it comes to pricing their content for digital distribution. Most of these models are terribly flawed, because they're not looking at the consumer's point of view.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;strong&gt;Production Cost&lt;/strong&gt;: "The more expensive it is to produce, the higher the price should be." &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;strong&gt;Length&lt;/strong&gt;: "A one-hour &lt;acronym title="television"&gt;TV&lt;/acronym&gt; show should cost around the same as a one-hour &lt;acronym title="compact disc"&gt;CD&lt;/acronym&gt;."&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;strong&gt;Cross-Media Comparisons&lt;/strong&gt;: (To the most expensive alternative.) "We can sell a full season of &lt;acronym title="digital versatile discs"&gt;DVDs&lt;/acronym&gt; for $60, which works out to $5 per show."&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;strong&gt;Threat of Withholding&lt;/strong&gt;: "You're going to buy it at whatever price we ask, or else you won't get it at all."&lt;/p&gt;&lt;p&gt;These models probably only make sense to you if you're a content producer talking about your own content. As a consumer, they probably make you angry.&lt;/p&gt;&lt;h4&gt;What Consumers Think&lt;/h4&gt;&lt;p&gt;As a consumer, these are the things I think about when I am considering buying content.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;strong&gt;Total Usage Time&lt;/strong&gt;: "How much total time will I spend enjoying this content?"&lt;/p&gt;&lt;p&gt;Total usage time is very different from the length of the content. Total usage time is equal to the length, &lt;em&gt;multiplied by&lt;/em&gt; the number of uses I expect to get from it.&lt;/p&gt;&lt;p&gt;For a &lt;acronym title="compact disc"&gt;CD&lt;/acronym&gt; or album, the total usage time is vastly different from that of a &lt;acronym title="television"&gt;TV&lt;/acronym&gt; show. When I buy music, I expect to listen to it again and again. Most &lt;acronym title="television"&gt;TV&lt;/acronym&gt; shows I only watch once. Sure, if it's a download I &lt;em&gt;could&lt;/em&gt; watch it again and again, but odds are that the 45 minutes of content in your hour-long show is only going to get 45 minutes of my time. Or less. Movies and concert videos are somewhere in the middle: particularly good movies will sometimes get a second or third viewing, but still nothing approaching what a good &lt;acronym title="compact disc"&gt;CD&lt;/acronym&gt; gets.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;strong&gt;Quality and Extras&lt;/strong&gt;: "Is this particularly high-quality content? Does it have something extra that I'm interested in, like commentary or subtitles?"&lt;/p&gt;&lt;p&gt;Although this isn't my primary factor, I'm generally willing to pay a little more for content that goes the extra mile. Sometimes that means higher resolution (Blu-Ray vs &lt;acronym title="Digital Versatile Disc"&gt;DVD&lt;/acronym&gt;, or &lt;acronym title="Super Audio CD"&gt;SACD&lt;/acronym&gt; or &lt;acronym title="Digital Versatile Disc"&gt;DVD&lt;/acronym&gt;-Audio vs &lt;acronym title="compact disc"&gt;CD&lt;/acronym&gt; vs &lt;acronym title="MPEG Layer 3"&gt;MP3&lt;/acronym&gt;), sometimes that means particularly extraordinary special effects, sometimes it's commentary from a director or actor that I admire, sometimes it's a behind-the-scenes "Making Of" featurette. &lt;/p&gt;&lt;p&gt;For example, I almost never buy TV shows on &lt;acronym title="Digital Versatile Disc"&gt;DVD&lt;/acronym&gt; because they're just too expensive. But in the few rare cases where I do, it's because it's a show that I particularly enjoy and would like in a high-quality format with lots of extras. &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;strong&gt;Cross-Media Comparisons&lt;/strong&gt;: (To the least expensive alternative.) "Can I get everything I want somewhere else, for less money?" &lt;/p&gt;&lt;p&gt;Sometimes I simply want to catch up on a show's plot developments. Reality shows are a good example: I sure don't watch them for the quality of the writing. If I'm traveling and I miss a showing of &lt;a href="http://www.americanidol.com/"&gt;American Idol&lt;/a&gt; or &lt;a href="http://www.scifi.com/superhero/"&gt;Who Wants to Be A Superhero?&lt;/a&gt;, I'm not going to spend any significant amount of money at all on finding out who got kicked off this week. I'd rather just look it up online.&lt;/p&gt;&lt;p&gt;If it's a show like &lt;a href="http://www.scifi.com/battlestar"&gt;Battlestar Galactica&lt;/a&gt; that I actually do want to watch and appreciate, well, I own a &lt;acronym title="digital video recorder"&gt;DVR&lt;/acronym&gt; which lets me record the "free" showings from network or cable TV. Chances are unless I'm in a big hurry, I'll just watch the version that was automatically recorded for me once I get home.&lt;/p&gt;&lt;p&gt;This is also where piracy comes in. As Steve Jobs &lt;a href="http://news.bbc.co.uk/2/hi/entertainment/4265434.stm"&gt;has said&lt;/a&gt;, content producers have to compete with piracy as a business model. Video-sharing sites and BitTorrent servers may offer the content at no cost. Piracy is a funny thing. It isn't attractive to most people ... until you start withholding or overcharging for content. Then it spikes. Personally I don't have any qualms about watching all or part of a TV show on &lt;a href="http://youtube.com/"&gt;YouTube&lt;/a&gt; if it isn't available anywhere else. &lt;/p&gt;&lt;p&gt;You can go into great depth parsing the legal arguments around both of those last two, but you'll be wasting your time. Consumers don't. The fact is that in our minds &amp;#8212; yours and mine &amp;#8212; TV show downloads are essentially competing with "free", twice over.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;strong&gt;Convenience vs Importance&lt;/strong&gt;: "Is the price I'm paying (in both money and inconvenience) proportionate to how much I care?"&lt;/p&gt;&lt;p&gt;Sometimes I'm only mildly interested in your content. I think most web browsing falls under this umbrella, which is why it's so difficult to make money by charging for content on the web. If I'm only mildly interested, I'm not going to pay you anything at all for it, but I might spend a few minutes watching it ... &lt;em&gt;if&lt;/em&gt; it's free and easy to do so. &lt;/p&gt;&lt;p&gt;Of course, there are times when I'm &lt;em&gt;extremely&lt;/em&gt; interested in your content. I'm generally more willing to pay money for it in that case. But the number of things that are quite that important to me necessarily has to be kept very small &amp;#8212; because I don't have an infinite amount of money. (&lt;strong&gt;IMPORTANT NOTE&lt;/strong&gt;: If you would like to &lt;em&gt;give&lt;/em&gt; me an infinite amount of money, e-mail me and we'll talk.)&lt;/p&gt;&lt;h4&gt;Resolving the difficulties&lt;/h4&gt;&lt;p&gt;That's it. Those four criteria are what I use to evaluate prices as a consumer, and I would be willing to bet that I'm not alone. Realistically, I think the consumer models are what will ultimately drive the cost. &lt;/p&gt;&lt;p&gt;So what's the fair price for a TV show? If you go by total usage time, the value of a TV show is &lt;em&gt;substantially less&lt;/em&gt; than the value of a single track of music, despite the fact that it costs more to produce. The convenience factor of getting it whenever you want it may bump up the price you're willing to pay, but I think that $2 is actually already too expensive in the minds of many consumers. They'd be better at $1 ... or even free.&lt;/p&gt;&lt;p&gt;What's the fair price of a TV show to you?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-8011602125829659455?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/8011602125829659455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=8011602125829659455' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/8011602125829659455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/8011602125829659455'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2007/08/what-should-tv-shows-cost.html' title='What should TV shows cost?'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-6010684060162857150</id><published>2007-08-26T12:57:00.001-04:00</published><updated>2007-10-04T16:15:54.331-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>Markdown Scripts for MarsEdit</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;I've created a few AppleScripts for &lt;a href="http://red-sweater.com/marsedit"&gt;MarsEdit&lt;/a&gt; to simplify the process of using &lt;a href="http://daringfireball.net"&gt;Markdown&lt;/a&gt; to post to any weblog (like, say, &lt;a href="http://blogger.com/"&gt;Blogger&lt;/a&gt;) that doesn't natively support it. &lt;/p&gt;&lt;h4&gt;Translate Markdown to HTML&lt;/h4&gt;&lt;p&gt;This script takes text written in &lt;a href="http://daringfireball.net/projects/markdown/syntax"&gt;Markdown syntax&lt;/a&gt; and translates it into HTML. Extraneous line breaks are eliminated, because many blog hosts like to translate them into &lt;code&gt;&amp;lt;br /&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;&lt;p&gt;This works particularly well because MarsEdit has native support for previewing content written in Markdown. I normally use the Markdown preview mode while composing a post, then convert it to HTML just before posting.&lt;/p&gt;&lt;p&gt;But wait, you say: what if you need to edit a post?&lt;/p&gt;&lt;p&gt;No problem, says me. Then you use the other script.&lt;/p&gt;&lt;h4&gt;Translate HTML to Markdown&lt;/h4&gt;&lt;p&gt;This script uses Aaron Swartz's &lt;a href="http://www.aaronsw.com/2002/html2text"&gt;html2text&lt;/a&gt; to translate the post from HTML back into Markdown. It works on any HTML post, not just ones that you've created with the other script. Then you're free to edit the post, convert it back to HTML, and repost it.&lt;/p&gt;&lt;h4&gt;Updated: Now with Unicode support&lt;/h4&gt;&lt;p&gt;&lt;em&gt;Update, Oct 4 2007&lt;/em&gt;: MarsEdit's author, Daniel Jalkut, alerted me to the fact that these scripts had problems with non-Roman text and offered a fix. Sure enough, I'd forgotten that AppleScript needs special care to do the right thing and handle text files as UTF-8. I've updated them appropriately.&lt;/p&gt;&lt;h4&gt;Get them now!&lt;/h4&gt;&lt;p&gt;Interested? Download the scripts now!&lt;/p&gt;&lt;p&gt;&lt;a href="http://multisolar.com/software/MarsEditMarkdownScripts/"&gt;MarsEdit Markdown Scripts&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-6010684060162857150?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/6010684060162857150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=6010684060162857150' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/6010684060162857150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/6010684060162857150'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2007/08/markdown-scripts-for-marsedit.html' title='Markdown Scripts for MarsEdit'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-1494772276222952842</id><published>2007-08-19T14:54:00.001-04:00</published><updated>2007-08-27T00:41:47.028-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>BASIC for the iPhone</title><content type='html'>&lt;!-- Generated by Markdown to HTML in MarsEdit --&gt;&lt;p&gt;This year &lt;a href="http://c4.rentzsch.com/1/"&gt;C4[1]&lt;/a&gt; played host to &lt;a href="http://rentzsch.com/c4/ironCoderLive"&gt;Iron Coder Live&lt;/a&gt;. The API was "iPhone" and the theme was "conspiracy". The &lt;a href="http://macdaddyworld.com/?p=38"&gt;winner&lt;/a&gt; was well-deserved. But I had fun doing a hack of my own.&lt;/p&gt;&lt;p&gt;There was just one problem: I don't have an iPhone.&lt;/p&gt;&lt;p&gt;As I was driving from Cleveland to Chicago, I had a lot of time&amp;#8212;about five hours&amp;#8212;to think about what I might do for the contest. Without an actual iPhone it had to be something that could be largely developed offline and only run on the phone at the contest. That meant that I would need to stick to the, ahem, &lt;a href="http://developer.apple.com/iphone/"&gt;"official API"&lt;/a&gt; of the iPhone: &lt;acronym title="HyperText Markup Language"&gt;HTML&lt;/acronym&gt; and JavaScript.&lt;/p&gt;&lt;p&gt;Although the phone is cool, I think it's even cooler that a &lt;a href="http://iphone.fiveforty.net/wiki/index.php?title=Main_Page"&gt;whole community&lt;/a&gt; has built up to create the &lt;acronym title="software development kit"&gt;SDK&lt;/acronym&gt; that Apple failed to provide. After talking with some old friends at the conference I decided that it would be fun to join the conspiracy and create my own &lt;acronym title="software development kit"&gt;SDK&lt;/acronym&gt; for the iPhone, offering the ultimate retro-cool language: &lt;a href="http://en.wikipedia.org/wiki/BASIC_programming_language"&gt;BASIC&lt;/a&gt; for the iPhone.&lt;/p&gt;&lt;p&gt;The version I showed at the conference garnered a very respectable 5th place, which I'm more than satisfied with considering its far more polished competition. I've since cleaned it up, &lt;a href="http://gnu.org/licenses/gpl-2.0.html"&gt;GPLed&lt;/a&gt; it, and rechristened it. And here it is:&lt;/p&gt;&lt;h4&gt;ippleSoft BASIC&lt;/h4&gt;&lt;p&gt;The interface has been scaled for the iPhone, but it works just fine in Safari and Firefox.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://multisolar.com/ipb"&gt;ippleSoft BASIC for the iPhone&lt;/a&gt; - Run it now!&lt;/li&gt;&lt;li&gt;&lt;a href="http://multisolar.com/ipb/HolyBASIC.js"&gt;View the source&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://multisolar.com/ipb/help"&gt;Command reference&lt;/a&gt; - also available by entering HELP at the prompt.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Notes&lt;/h4&gt;&lt;p&gt;&lt;em&gt;Naming&lt;/em&gt;: I tried to pick a name that wouldn't infringe on anyone's existing trademark. That's harder than you might think: "iPhone BASIC" would surely lead to a cease-and-desist letter from the hounds. iBASIC, IP-BASIC, etc were all taken. Then I ran into a stroke of luck: It turns out "AppleSoft" is no longer a registered trademark of Apple. They let it expire in 2001. Thus: &lt;strong&gt;ippleSoft&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Entirely JavaScript, entirely free&lt;/em&gt;. I've made it available under &lt;acronym title="GNU General Public License"&gt;GPL&lt;/acronym&gt; v2. There's no public repository yet, but hey, it's &lt;acronym title="GNU General Public License"&gt;GPL&lt;/acronym&gt;, so you can go and create one yourself. I've released code into the public domain before, but this is the first project I've ever released under &lt;acronym title="GNU General Public License"&gt;GPL&lt;/acronym&gt;.&lt;/p&gt;&lt;p&gt;&lt;em&gt;I'm not a JavaScript programmer&lt;/em&gt;. I learned about the language and tried to follow best practice, though. Well, as much as I could during a single beer-soaked weekend. &lt;/p&gt;&lt;p&gt;&lt;em&gt;Autoscroll&lt;/em&gt;: The output display will autoscroll in Mac Safari, but not iPhone Mobile Safari. You can flick the output display to scroll it, though. If anyone with an iPhone has a suggestion on how to make it autoscroll properly please let me know!&lt;/p&gt;&lt;p&gt;&lt;em&gt;Language&lt;/em&gt;: For now I've kept it pretty close to a strict subset of AppleSoft BASIC. There's a lot it doesn't do yet: graphics and text positioning are not supported, and neither are INPUT or GET. Those are pretty high on the list of priorities though.&lt;/p&gt;&lt;h4&gt;One final thought&lt;/h4&gt;&lt;p&gt;You know what? &lt;strong&gt;Text-based interfaces suck on the iPhone&lt;/strong&gt;. There's just no getting around this. It's not the output so much as the input. The iPhone feels great when you're pushing buttons and flicking the display to scroll. But the keyboard is really lame. &lt;/p&gt;&lt;p&gt;I'm not sure if that's a feature or a bug for &lt;a href="http://multisolar.com/ipb"&gt;ippleSoft BASIC&lt;/a&gt;. Personally I find it kind of perversely amusing to use the iPhone to run a language originally designed for &lt;a href="http://en.wikipedia.org/wiki/Teleprinter"&gt;teletypes&lt;/a&gt;. But it would be interesting to explore ways to take the text out of BASIC.&lt;/p&gt;&lt;p&gt;Loading and running programs from elsewhere on the web would be a natural. A keyword-board like the one on the &lt;a href="http://www.mainbyte.com/ts1000/"&gt;Timex-Sinclair TS1000&lt;/a&gt; might be useful if you really must write code on the iPhone. INPUT and GET may need to be supplemented with some type of dialog interface. Anything else?&lt;/p&gt;&lt;p&gt;What do you think?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-1494772276222952842?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/1494772276222952842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=1494772276222952842' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/1494772276222952842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/1494772276222952842'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2007/08/basic-for-iphone.html' title='BASIC for the iPhone'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-3132753171872819240</id><published>2007-03-23T19:26:00.001-04:00</published><updated>2008-04-08T10:29:39.586-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>Crazy Del.icio.us</title><content type='html'>&lt;p&gt;Do you use &lt;a href="http://del.icio.us/"&gt;del.icio.us&lt;/a&gt;? If not, you might want to. I've been using it for a while now, and the more I use it the more I like it. &lt;/p&gt;

&lt;h4&gt;What is del.icio.us?&lt;/h4&gt;
&lt;p&gt;It's a social bookmarking site. Here's a description &lt;a href="http://del.icio.us/about/"&gt;in their own words&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Why don't you just tell me what social bookmarking is?&lt;/h4&gt;
&lt;p&gt;Okay, fine. Really, it's exactly what it sounds like.&lt;/p&gt;

&lt;p&gt;Just like your web browser's "Bookmarks" menu, you post links that you want to remember to your account. Unlike your web browser's "Bookmarks" menu, the links are &lt;i&gt;shared&lt;/i&gt; and visible to anyone who wants to find them. You can even see what your friends are bookmarking, and turn around and bookmark the same sites yourself if you find them interesting.
&lt;/p&gt;&lt;p&gt;

When you add a bookmark, you can provide a brief comment or excerpt to help remind you what it is. You can also assign &lt;a href="http://del.icio.us/help/tags"&gt;tags&lt;/a&gt; to help categorize links. Since it's public, your list of bookmarks is accessible from &lt;i&gt;any&lt;/i&gt; computer you might be at -- not just your home computer.
&lt;/p&gt;&lt;p&gt;

For example, here's my del.icio.us, containing a bunch of random links that I thought were worth remembering for one reason or another:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/drewthaler"&gt;http://del.icio.us/drewthaler&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Notice the nice, easy to remember URL. That's very typical of del.icio.us. Also, take a look at the links on the right side of that page -- I tag everything, and those links make it easy to find all links with a certain tag. Maybe you're only interested in my &lt;b&gt;Apple&lt;/b&gt; links, or my &lt;b&gt;&lt;acronym title="PlayStation 3"&gt;PS3&lt;/acronym&gt;&lt;/b&gt; links:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/drewthaler/Apple"&gt;http://del.icio.us/drewthaler/Apple&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/drewthaler/PS3"&gt;http://del.icio.us/drewthaler/PS3&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;You can also combine tags. Here are my links that are tagged with both &lt;b&gt;programming&lt;/b&gt; and &lt;b&gt;humor&lt;/b&gt;:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/drewthaler/programming+humor"&gt;http://del.icio.us/drewthaler/programming+humor&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Easy, huh? And the best part (for me) is that if I want to remember a link I saved six months ago, I can do the same thing. I just hop over to my page and zoom down through the categories until I find it. Heck, I don't even have to be on my own computer!&lt;/p&gt;

&lt;h4&gt;Isn't there some other site that does this?&lt;/h4&gt;

&lt;p&gt;Yes and no. According to Wikipedia's entry on &lt;a href="http://en.wikipedia.org/wiki/Social_bookmarking"&gt;social bookmarking&lt;/a&gt; there have been several similar services over the years, going back to 1996 or so. But most of them died in the dot-com boom and bust. &lt;a href="http://del.icio.us/"&gt;del.icio.us&lt;/a&gt; was founded in 2003, and is probably one of the earliest "Web 2.0" sites. It was recently acquired by Yahoo!, so it's not going anywhere.&lt;/p&gt;

&lt;p&gt;You might be thinking of &lt;a href="http://digg.com/"&gt;Digg&lt;/a&gt; or &lt;a href="http://reddit.com/"&gt;Reddit&lt;/a&gt;, which are &lt;a href="http://en.wikipedia.org/wiki/Social_news"&gt;social news&lt;/a&gt; sites. But that isn't quite the same thing. In fact, I find that social news starts out cool but quickly gets annoying. Sites are inevitably biased by the demographics of the top users, and the comment threads are worse than useless. del.icio.us has its own version of social news, in the &lt;a href="http://del.icio.us/"&gt;hotlist&lt;/a&gt; and &lt;a href="http://del.icio.us/popular"&gt;popular&lt;/a&gt; links accessible from the main page. But you can also ignore them entirely.&lt;/p&gt;

&lt;p&gt;You might also be thinking of &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;, but that's more of a lifeblogging site. You could abuse Twitter to create a sort of social bookmarking system, like &lt;a href="http://pbones.com/news/newsitem.php?blobDate=1172253218"&gt;someone I know did&lt;/a&gt;, but that's not really the site's intention. &lt;/p&gt;

&lt;p&gt;It also sounds a little like &lt;a href="http://www.delicious-monster.com/"&gt;Delicious Library&lt;/a&gt;, but there's absolutely no connection. :-)&lt;/p&gt;

&lt;h4&gt;What else makes it cool?&lt;/h4&gt;

&lt;p&gt;You can subscribe to the links of other people -- both via the web and via &lt;acronym title="Really Simple Syndication"&gt;RSS&lt;/acronym&gt;. So if you find interesting people who have accounts, you can see what they're paying attention to. You can &lt;a href="http://del.icio.us/network/drewthaler"&gt;view my network&lt;/a&gt; if you want to.&lt;/p&gt;

&lt;p&gt;People whose links I follow include:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/wearehugh"&gt;Mark Pilgrim&lt;/a&gt;, known for his "Dive Into" series on Greasemonkey, accessibility, and more. Mark also aggregates his links on &lt;a href="http://diveintomark.org/"&gt;diveintomark&lt;/a&gt;, but I follow them on del.icio.us.&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/rentzsch"&gt;Jon Rentzsch&lt;/a&gt;, of &lt;a href="http://redshed.net/"&gt;Red Shed Software&lt;/a&gt; and &lt;a href="http://c4.rentzsch.com/"&gt;C4&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/mezzoblue"&gt;Dave Shea&lt;/a&gt;, web designer and creator of &lt;a href="http://csszengarden.com/"&gt;CSS Zen Garden&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/danieljalkut"&gt;Daniel Jalkut&lt;/a&gt;, another former Apple employee and owner of &lt;a href="http://www.red-sweater.com/"&gt;Red Sweater Software&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/Rosyna"&gt;Rosyna&lt;/a&gt; from &lt;a href="http://unsanity.com/"&gt;Unsanity&lt;/a&gt;, an old friend from #macdev on IRC.&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/gruber"&gt;John Gruber&lt;/a&gt; of &lt;a href="http://daringfireball.net"&gt;Daring Fireball&lt;/a&gt; used to use his account, but stopped using it once he realized he could make people pay him for the RSS feed instead. :-) &lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;What do you like most about it?&lt;/h4&gt;

&lt;p&gt;Three things.&lt;/p&gt;

&lt;p&gt;First, it provides a nice sort of link-blog functionality without having to spam everyone with a ton of small posts. This blog, as I've &lt;a href="http://drewthaler.blogspot.com/2004/11/echo-chamber.html"&gt;said before&lt;/a&gt;, is not a link blog. It's more of an essay blog. If you want random links from me these days, however, you can get them -- just go to &lt;a href="http://del.icio.us/drewthaler"&gt;my del.icio.us&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Second, it gives me a way to offload some of my memory to a computer. It's not as extreme as some of the current experiments in lifeblogging, but it's a good compromise for me. And since my bookmarks are on a public server run by Yahoo! I don't really need to worry too much about backing them up or continually copying them from one machine to another. Someone else handles that.&lt;/p&gt;

&lt;p&gt;Third, I like checking out the bookmarks of other people. It's pretty nifty to fire up my RSS reader and see that Rosyna has posted some crazy &lt;a href="http://www.youtube.com/watch?v=gDh__j3h1qE"&gt;Japanese Spider-Man video&lt;/a&gt;, or that Mark Pilgrim saved an interesting &lt;a href="http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss"&gt;article&lt;/a&gt; about XML , or that Rentzsch just saved a nifty &lt;a href="http://iconfamily.sourceforge.net/"&gt;Mac programming link&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Are you using del.icio.us? If so, post a comment or drop me an email letting me know your username.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-3132753171872819240?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/3132753171872819240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=3132753171872819240' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/3132753171872819240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/3132753171872819240'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2007/03/crazy-delicious.html' title='Crazy Del.icio.us'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-3499247735814238118</id><published>2007-02-05T17:55:00.000-05:00</published><updated>2007-09-04T03:46:24.735-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='parenting'/><title type='text'>Oh, baby baby</title><content type='html'>&lt;p&gt;Please welcome my son &lt;b&gt;Archer Douglas Thaler&lt;/b&gt;, born on Jan 30th 2007 at 5:10am. He was 7lbs 11oz, 20 inches long, and came out pink and screaming -- just the way they're supposed to.&lt;/p&gt;

&lt;a href="http://homepage.mac.com/drewthaler/archer/archer-Images/1.jpg" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/archer/archer-Thumbnails/1.jpg" width="300" height="225" alt="Archer Douglas Thaler, getting weighed for the first time" /&gt;&lt;/a&gt;&lt;a href="http://homepage.mac.com/drewthaler/archer/archer-Images/2.jpg" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/archer/archer-Thumbnails/2.jpg" width="300" height="225" alt="Archer Douglas Thaler, sleeping" /&gt;&lt;/a&gt;
&lt;div style="clear: both"&gt;&lt;/div&gt;

&lt;p&gt;There are a &lt;a href="http://homepage.mac.com/drewthaler/archer/"&gt;few more pictures&lt;/a&gt; available. Today he's exactly one week old. He's been a great kid so far, not fussy at all and often sleeping at night for a good 4-5 hours at a stretch. His name is a tribute to his great-grandfather Orion, as well as just a cool name that we liked.&lt;/p&gt;

&lt;p&gt;I'll be a little busy for a while between work and family, but I hope to get back into posting soon. Lots of good technical stuff to talk about.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-3499247735814238118?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/3499247735814238118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=3499247735814238118' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/3499247735814238118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/3499247735814238118'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2007/02/oh-baby-baby.html' title='Oh, baby baby'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-8454305052644231478</id><published>2007-01-06T13:46:00.000-05:00</published><updated>2007-01-06T16:30:46.557-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='parenting'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Better Food, Just as Fast</title><content type='html'>&lt;p&gt;Do you find yourself going out to dinner a lot, or bringing home takeout food more often than you should?&lt;/p&gt;&lt;p&gt;We sure do. Even though we've been making an effort to eat lighter meals at healthier places -- our faves from around here include &lt;a href="http://www.panera.com/"&gt;Panera&lt;/a&gt;, &lt;a href="http://www.chipotle.com/"&gt;Chipotle&lt;/a&gt;, &lt;a href="http://www.zoup.com/"&gt;Zoup!&lt;/a&gt;, and our local &lt;a href="http://www.heinens.com/"&gt;Heinen's&lt;/a&gt; grocery store -- it's just not the same as cooking and eating at home. There's a real difference in quality, quantity, and healthiness. And it's expensive, too!&lt;/p&gt;&lt;p&gt;Worse yet, it's a slippery slope. Once you get into the habit of getting takeout for dinner, it's easy to slip and start eating less healthy fast food too. (&lt;em&gt;cough&lt;/em&gt; KFC's beautiful-but-deadly &lt;a href="http://www.kfc.com/menu/bowls_potato.asp"&gt;mashed potato bowls&lt;/a&gt;, I'm looking at you.)&lt;/p&gt;&lt;p&gt;My wife Nancy recently came up with a solution. She'd heard about this place nearby called &lt;a href="http://www.simplydonedinners.com/"&gt;Simply Done Dinners&lt;/a&gt;. Apparently -- and I had no idea this even existed -- places like this are a growing trend around the country. It's basically a place where you can come in, put together homemade dinners, bring them home, and toss them in the freezer to cook later. &lt;/p&gt;&lt;a href="http://www.simplydonedinners.com/"&gt;Simply Done Dinners&lt;/a&gt; is local to the Cleveland area, and they have only four stores right now: Parma, North Olmsted, Twinsburg, and Medina. If you're not from around here, don't worry. There's probably a similar store near you. Take a look at this &lt;a href="http://www.easymealprep.com/main/direct02.php"&gt;HUGE directory of easy meal-prep stores&lt;/a&gt;. See? I told you it was a growing trend. :-)&lt;h4&gt;Our First Taste&lt;/h4&gt;&lt;p&gt;The first time we tried it out, Nancy simply ordered six dinners online ($109) and had the store in Twinsburg assemble them ($29) so that all she had to do was pick it up. There was &lt;i&gt;no&lt;/i&gt; preparation involved: she simply walked in and grabbed the prepared dinner packages. We got one of each of the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Apple Pork Chops with Sweet Potatoes&lt;/li&gt;&lt;li&gt;Cheeseburger Noodle Casserole&lt;/li&gt;&lt;li&gt;Cod Provencal&lt;/li&gt;&lt;li&gt;Lemon Garlic Chicken&lt;/li&gt;&lt;li&gt;Pasta Broccoli Bake&lt;/li&gt;&lt;li&gt;Southwestern Meatloaf&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Each dinner package is designed for 4-6 people. For our family of three -- papa bear, mama bear, and baby bear, with proportional appetites -- we found that we got just under two meals per person out of each. Either two dinners from each, or dinner plus a tasty lunch of leftovers the next day. The meatloaf actually lasted much longer: I used it for lunch sandwiches for almost a week, but that was balanced out by the pork chops which got left out for too long and had to be thrown away. All in all, I figure that we got roughly 30 meals from the order.&lt;/p&gt;&lt;p&gt;If you do the math, that works out to $4.60 per meal per person: a little more expensive than buying all the ingredients yourself, but without &lt;i&gt;any&lt;/i&gt; of the hassle. It's also about what you'd pay for a fast food "value meal", and maybe 50 cents to a dollar more than a frozen TV dinner at the grocery store. Really, a surprisingly good value for the kind of quality that you get.&lt;/p&gt;&lt;p&gt;Of course, these are just main courses and don't come with sides. (Some other chains do provide sides, but they also charge a little more.) So we'd add rolls, or a salad, or some veggies as needed. That adds a bit to the cost-per-meal, strictly speaking, but we already had all that stuff around the house anyway so we didn't factor it in.&lt;/p&gt;&lt;p&gt;The dinners come in a big disposable pan, the kind that you can just toss in the oven. There's a sticker with cooking directions on the side. Some needed baking, some needed broiling, and other stuff could be done in a crock-pot. (We avoided the crock-pot ones the first time, since we didn't have one.) In all cases it's pretty much drop-it-in-and-wait; no skills required. A bachelor could do it with one hand tied behind his back. :-) They're all designed to be stored in the freezer, but you have to remember to pull them out into the fridge to thaw 48 hours before you want them. We pulled out one or two a week, and eventually started a rotation where every time we used one we'd move another into the fridge so that it would be ready in a couple of days.&lt;/p&gt;&lt;p&gt;What about the taste? Well, we have a diverse set of tastebuds in our family: I'll eat anything, but Nancy can be a picky eater (to put it mildly). And even though Olivia's pretty darn adventurous for a 10-year-old kid, eating sushi and cow tongue among other things, she doesn't like everything. Sometimes she opts out of dinner and just gets a veggie burger instead.&lt;/p&gt;&lt;p&gt;But even in our divided household everyone unanimously agreed: &lt;b&gt;the food was delicious!&lt;/b&gt; I guess that's the benefit of having a professional chef selecting the recipes.&lt;/p&gt;&lt;p&gt;Better still, it was all stuff that we either wouldn't have made, or something that was a unique flavor that we probably wouldn't have thought of. So it didn't actually conflict with any regular cooking -- we still made our simple family-friendly foods like nachos, pizza, salads, burgers, soup, sandwiches, pasta, etc. It was more like a supplement to our regular meals which pushed the fast food out of our diet for a while.&lt;/p&gt;&lt;h4&gt;Cooking Too: Electric Boogaloo&lt;/h4&gt;&lt;p&gt;Today we received our second order. Nancy is now nine months pregnant (!) and we're anticipating that eating will be a little bit hectic for a while once the baby comes, so we wanted to stock up on easy and nutritious food. This time instead of ordering 6, we ordered 12. And we figured we'd skip the "pick it up" option and try preparing it ourselves. Here's what we chose:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Balsamic Thyme Chicken&lt;/li&gt;&lt;li&gt;2 x Apricot Chicken (Heart Healthy)&lt;/li&gt;&lt;li&gt;Crabmeat and Swiss Cheese Bake&lt;/li&gt;&lt;li&gt;2 x Creamy Potato Soup&lt;/li&gt;&lt;li&gt;2 x Down Under Chicken&lt;/li&gt;&lt;li&gt;Rice Vegetable Cheese Casserole&lt;/li&gt;&lt;li&gt;2 x Tropical Pork Chops&lt;/li&gt;&lt;li&gt;Onion Bacon Crusted Cod&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Preparation was really a lot of fun. Nancy and I went together, and we both agreed: it was all the fun parts of cooking without any of the hard stuff! No chopping, no searching for bowls, no scavenging ingredients or trying to work out what you can substitute because you forgot to buy something, and of course the best part -- &lt;b&gt;NO DISHES&lt;/b&gt;!!&lt;/p&gt;&lt;p&gt;Working together we finished making our twelve dinners in just over an hour -- that's about five minutes each. Here's how it works:&lt;/p&gt;&lt;p&gt;Each store has a fixed menu which changes every month. There are different recipe stations around the room, one station per recipe. Each station has containers of the ingredients you need at waist level, with the appropriate measuring cup for the recipe already in it. Cheese, mayo, chopped onions, chili sauce, apricot jelly, cooked bacon, etc. (If you want a visual, think of the scene behind the counter at a Subway restaurant, but one that is customized for just a single sandwich.) Some ingredients are pre-packaged in containers that are just the right size for the recipe: for example, one casserole had a bag of exactly the right number of bread squares ready to go. Herbs and spices, sugar, oil, seasoning salts, etc for the recipe are all at shoulder height, and each one has the appropriate measuring spoon next to it. The meat is in a big refrigerator on one wall: thawed, pre-cut, and also ready to go. Along the side there's a sink for washing your hands, and a big rack full of all the utensils you could want and all the pans you need. Oh, and there's yet another station with ziploc bags and a big roll of plastic wrap.&lt;/p&gt;&lt;p&gt;To make your order, you simply find an open station (there was only one other couple there, so this wasn't hard) and start working. Since everything is already prepped for you, you basically wind up dumping stuff together. It's not hard at all. You're free to tweak the proportions if you want; we only did this a little bit since the recipes seem to have a good mix to begin with.&lt;/p&gt;&lt;p&gt;I'll admit that our very first one (the Down Under Chicken) was a little intimidating simpy because it was a new experience. We took it pretty slowly to make sure we were doing everything right. But once we figured out how it worked, we got into a groove and it couldn't have been easier -- we banged out the rest without a hitch.&lt;/p&gt;&lt;p&gt;When you're making it yourself you can also split the orders, so that instead of one meal that serves 4-6 you can make two meals of 2-3 each. We did that on many of the orders, in an attempt to reduce the amount of leftovers. We'll see how that works out.&lt;/p&gt;&lt;p&gt;At one point Nancy commented, "Geez, I feel like we're on a TV show!" You know how in cooking shows they just describe what you'd do, and then whip it out already done? And dirty dishes aren't even discussed? It was exactly like that. Almost a magical experience.&lt;/p&gt;&lt;p&gt;Net cost: $197 for twelve dinners, plus about two hours of our time on a Saturday morning. If the previous ratio holds and we get 60 meals out of it, that will come out to $3.28 per meal. &lt;/p&gt;&lt;p&gt;I'd love to tell you how the food tastes, but since we just made it this morning I can't say yet. But boy, did it ever did look good when we made it!&lt;/p&gt;&lt;p&gt;By the way, in case you were wondering: I'm not affiliated with these folks in any way, nor do I know the guy who runs the store. (Although we chatted afterward and he seemed pretty cool.) I just think it's a great service. And it's the kind of place that's just awesome for families, and which I even kind of wish I'd had access to as a bachelor -- because sometimes you just want a nice dinner without a lot of effort. &lt;/p&gt;&lt;p&gt;The verdict? Two thumbs way up. The dinners are cheap, fun to make, delicious, and easy ... and we're back to eating at a table, instead of from a paper bag.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-8454305052644231478?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/8454305052644231478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=8454305052644231478' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/8454305052644231478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/8454305052644231478'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2007/01/better-food-just-as-fast.html' title='Better Food, Just as Fast'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-4236113397687125099</id><published>2006-11-07T01:09:00.000-05:00</published><updated>2006-11-07T02:06:02.768-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PlayStation'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='PS3'/><title type='text'>Japanese PS3 commercials</title><content type='html'>&lt;p&gt;Everyone knows Sony's marketing can be, uh, &lt;a href="http://video.google.com/videoplay?docid=5797108766137110904"&gt;interesting&lt;/a&gt;. Most people have seen the US commercials for the PlayStation 3, but not so many people have seen the Japanese commercials.&lt;/p&gt;&lt;p&gt;Since the Japanese launch of the PS3 is scheduled for November 11th (aka 11/11), most of them involve people seeing 11/11 in odd places. They're short and interesting and there aren't any creepy babies.&lt;/p&gt;&lt;p&gt;Here are some YouTube links for your viewing enjoyment.&lt;/p&gt;&lt;h4&gt;Concent (The Socket)&lt;/h4&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UIluz3H9pcY"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/UIluz3H9pcY" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" alt="Japanese PS3 ad: Concent (The Socket)"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;h4&gt;Foku (The Fork)&lt;/h4&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/eije-NoZ7o8"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/eije-NoZ7o8" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" alt="Japanese PS3 ad: Foku (The Fork)"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;h4&gt;Entotsu (The Smokestack)&lt;/h4&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HVLVFPKhCLc"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/HVLVFPKhCLc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" alt="Japanese PS3 ad: Entotsu (The Smokestack)"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;h4&gt;Taikan (The Sensation)&lt;/h4&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ZDRIMTquPGQ"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ZDRIMTquPGQ" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" alt="Japanese PS3 ad: Taikan (The Sensation)"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-4236113397687125099?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/4236113397687125099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=4236113397687125099' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/4236113397687125099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/4236113397687125099'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/11/ps3-commercials.html' title='Japanese PS3 commercials'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-6732272403143153724</id><published>2006-11-03T16:09:00.000-05:00</published><updated>2006-11-06T20:34:46.660-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>Blogger: Condensed Label List</title><content type='html'>&lt;p&gt;This is a continuation of the series about customizations I made to my Blogger template after switching to the Blogger beta.&lt;/p&gt;&lt;p&gt;This time I'm going to talk about the condensed list of &lt;a href="http://help.blogger.com/bin/answer.py?answer=44498"&gt;labels&lt;/a&gt; that I've put in the sidebar. Synonyms for "labels" used by other blogging tools include "categories" and "sections". For user navigation I like "sections", personally, so that's what the sidebar says.&lt;/p&gt;&lt;h4&gt;Why customize it?&lt;/h4&gt;&lt;p&gt;The default list of labels is a standard bulleted list that displays vertically.&lt;/p&gt;&lt;p&gt;The problem with vertical lists is that, well, they're an inefficient use of vertical space in the sidebar. If you have a lot of labels, you'll wind up with an extremely large portion of your sidebar devoted to this list. The vertical space that the list occupies will be far out of proportion to its importance. &lt;/p&gt;&lt;p&gt;Frankly, the list of labels isn't that important to me. It's a nice touch, and I would like them to be there, but I wouldn't say that it needs an entire screenful in my sidebar. So I set out to fix that.&lt;/p&gt;&lt;h4&gt;Widget modifications&lt;/h4&gt;&lt;p&gt;Here are the modifications I made to the default "Labels" widget to accomplish this.&lt;/p&gt;&lt;blockquote class="code"&gt;&amp;lt;b:widget id='Label1' locked='false' title='Sections' type='Label'&amp;gt;&lt;br /&gt;&amp;lt;b:includable id='main'&amp;gt;&lt;br /&gt;&amp;#160;  &amp;lt;b:if cond='data:title'&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160;     &amp;lt;h2&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;&amp;#160;   &amp;lt;/b:if&amp;gt;&lt;br /&gt;&amp;#160;   &amp;lt;div class='widget-content'&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160;     &amp;lt;ul style='padding-left:10px; margin:0; text-indent:0;'&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160;     &amp;lt;b:loop values='data:labels' var='label'&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;         &amp;lt;li style='display: inline; list-style-type: none; padding-right: 5px; line-height: 140%;'&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160;       &amp;lt;b:if cond='data:blog.url == data:label.url'&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;         &amp;lt;data:label.name/&amp;gt;&amp;amp;#160;(&amp;lt;data:label.count/&amp;gt;)&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160;       &amp;lt;b:else/&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;         &amp;lt;a expr:href='data:label.url'&amp;gt;&amp;lt;data:label.name/&amp;gt;&amp;lt;/a&amp;gt;&amp;amp;#160;(&amp;lt;data:label.count/&amp;gt;)&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160;       &amp;lt;/b:if&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;         &amp;lt;/li&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160;     &amp;lt;/b:loop&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160;     &amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;#160;     &amp;lt;b:include name='quickedit'/&amp;gt;&lt;br /&gt;&amp;#160;   &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/b:includable&amp;gt;&lt;br /&gt;&amp;lt;/b:widget&amp;gt;&lt;/blockquote&gt;&lt;h4&gt;Widget explanations&lt;/h4&gt;&lt;p&gt;Since the styles here are very highly specific to this single list, and unlikely to be re-used, I decided to mix CSS with HTML here by assigning the styles via the &lt;code&gt;style&lt;/code&gt; attribute on the tags. This isn't normally &lt;a href="http://csszengarden.com/" title="CSS Zen Garden"&gt;good practice&lt;/a&gt;, but Blogger templates do it a lot already, and it's actually kind of convenient here. &lt;/p&gt;&lt;p&gt;The &lt;code&gt;display: inline;&lt;/code&gt; style on the &lt;code&gt;LI&lt;/code&gt; tag makes the list horizontal. Adding &lt;code&gt;list-style-type: none;&lt;/code&gt; removes the bullets.&lt;/p&gt;&lt;p&gt;That's almost good enough right there! But during testing I found that the original template used normal spaces in between the label and the numeric post count. Since I am expecting the list to wrap -- it wraps five times at my normal web browser size -- I need it to wrap cleanly. With a normal space, you often get the break in between the label and the post count, which doesn't look right. So I converted the regular space into a non-breaking space (&amp;amp;#160;).&lt;/p&gt;&lt;p&gt;Why '&amp;amp;#160;', rather than something like '&amp;amp;nbsp;'? Because I'm still shooting for XHTML eventually, and XHTML does not recognize '&amp;amp;nbsp;' as an entity. The Unicode code point '&amp;amp;#160;' is the &lt;a href="http://www.dpawson.co.uk/xsl/sect2/nbsp.html" title="nbsp discussion"&gt;direct equivalent&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;After all that was done, padding, margins, and line height were adjusted to my personal preference. Your needs may vary.&lt;/p&gt;&lt;h4&gt;Dead ends&lt;/h4&gt;&lt;p&gt;Although this looks simple, I tried a couple of other things before settling on this solution.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Putting the list in a paragraph&lt;/strong&gt; - I considered this as an option, but was unable to get Blogger's template language to do it. You could do it as a space-separated list, but as soon as you add separators of any sort -- like commas -- there's no apparent way to avoid putting a separator in at the end. Blogger &lt;a href="http://help.blogger.com/bin/answer.py?answer=47270&amp;amp;topic=9084"&gt;supports an "isLast" property&lt;/a&gt; on labels when used in the post widget, but it does not do so in the labels widget. On further consideration I decided that this was probably a bad approach, anyway, since it's not as accessible as &lt;a href="http://diveintoaccessibility.org/day_22_using_real_lists_or_faking_them_properly.html"&gt;using real lists&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Changing font size based on post count&lt;/strong&gt; - This is a relatively new twist in Web design. &lt;a href="http://flickr.com/photos/tags/"&gt;Flickr's tags&lt;/a&gt; are a popular example. However, I couldn't figure out a way to do it without resorting to Javascript. Blogger has a very minimal expression language for templates, but I haven't been able to find any detailed documentation for it. The closest I came was doing something like this:&lt;/p&gt;&lt;blockquote class="code"&gt;&amp;lt;font expr:size='data:label.count'&amp;gt; ... &amp;lt;/font&amp;gt;&lt;/blockquote&gt;&lt;p&gt;But that didn't cap the maximum font size -- potentially leading to problems as I write more posts in each category. For now I've tabled this idea. It would still be interesting, but I think the best way to do it in Blogger would be to leave the base template HTML as-is, then dynamically modify the HTML with Javascript on the client side.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adding some interesting CSS decoration&lt;/strong&gt; - I considered doing this too. But the only decent decoration I could think of was a rounded button look similar to what Safari uses in its Bookmarks toolbar. That would have been possible, but I'd need to create and edit some images and use &lt;a href="http://virtuelvis.com/gallery/css/rounded/"&gt;this method&lt;/a&gt; to get the rounded corners. Worse, it wouldn't display correctly in Internet Explorer so I'd need to do a CSS hack to hide it. So I tabled this idea too. Even so, I might look back into this in the future.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;More template tips&lt;/h4&gt;&lt;p&gt;Other entries in this series:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://drewthaler.blogspot.com/2006/11/blogger-image-as-blog-header.html"&gt;Blogger: Image as Blog Header&lt;/a&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/7898615-6732272403143153724?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/6732272403143153724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=6732272403143153724' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/6732272403143153724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/6732272403143153724'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/11/blogger-condensed-label-list.html' title='Blogger: Condensed Label List'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-8783610805635570154</id><published>2006-11-02T23:30:00.000-05:00</published><updated>2006-11-03T15:44:26.625-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>Blogger: Image as Blog Header</title><content type='html'>&lt;p&gt;I'm going to do a brief series about how I wound up customizing my Blogger template (styles and widgets) after switching to the Blogger beta. First up, how I replaced the header with an image.&lt;/p&gt;&lt;h4&gt;Why customize it?&lt;/h4&gt;&lt;p&gt;Like a lot of people, I prefer to use an image instead of text for the header of my blog. I also want it to be clickable and always be a link back to the "home" page of the blog, which is a widely-adopted convention.&lt;/p&gt;&lt;p&gt;But I do &lt;em&gt;not&lt;/em&gt; want to simply encode an inline image. For reasons of &lt;a href="http://diveintoaccessibility.org/"&gt;accessibility&lt;/a&gt;, I prefer a normal &lt;code&gt;H1&lt;/code&gt; tag that gets translated to an image by CSS.&lt;/p&gt;&lt;p&gt;Since I've been trying to keep the look-and-feel of my old template, I started with &lt;a href="http://homepage.mac.com/drewthaler/images/blog-header.gif"&gt;this image&lt;/a&gt; from my old template. It's 790 pixels wide by 105 pixels high.&lt;/p&gt;&lt;h4&gt;Widget modifications&lt;/h4&gt;&lt;p&gt;Here are the modifications I made to the default "Header" widget to accomplish this. Data that is &lt;b style="color: red;"&gt;specific to my blog&lt;/b&gt;, and which you'll want to change if you copy this code, is displayed in &lt;b style="color: red;"&gt;red&lt;/b&gt;.&lt;/p&gt;&lt;blockquote class="code"&gt;&amp;lt;b:widget id='Header1' locked='true' title='Header' type='Header'&amp;gt;&lt;br /&gt;&amp;#160; &amp;lt;b:includable id='main'&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;lt;div class='titlewrapper'&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;    &amp;lt;h1 class='title'&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160;        &amp;lt;a href='&lt;b style="color: red;"&gt;http://drewthaler.blogspot.com/&lt;/b&gt;'&amp;gt;&amp;lt;span/&amp;gt;&amp;lt;data:title/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;    &amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160;  &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160;  &amp;lt;div class='descriptionwrapper'&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;    &amp;lt;p class='description'&amp;gt;&amp;lt;span&amp;gt;&amp;lt;data:description/&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160;  &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;#160; &amp;lt;/b:includable&amp;gt;&lt;br /&gt;&amp;lt;/b:widget&amp;gt;&lt;/blockquote&gt;&lt;h4&gt;Widget explanations&lt;/h4&gt;&lt;p&gt;The original Blogger template had a conditional so that the header was only a link if we weren't on the main page already. I removed the conditional because I think it makes more sense to always make it a link.&lt;/p&gt;&lt;p&gt;The original template also used 'data:blog.homepageUrl' for the link, but this resolved to 'http://drewthaler.blogspot.com/index.html', which is redundant. I wanted the shorter and more future-proof URL 'http://drewthaler.blogspot.com/' so I changed the link manually.&lt;/p&gt;&lt;p&gt;I left the description code as-is, because I don't use it. You may want to do something different.&lt;/p&gt;&lt;p&gt;You'll notice a single &lt;code&gt;&amp;lt;span/&amp;gt;&lt;/code&gt; tag in the middle. That's required for CSS image replacement.&lt;/p&gt;&lt;h4&gt;Stylesheet modifications&lt;/h4&gt;&lt;p&gt;Here are the CSS additions that go with it. These are additions to the original stylesheet.&lt;/p&gt;&lt;blockquote class="code"&gt;/* Replace the header with a graphic on computer displays */&lt;br /&gt;@media screen, projection, tv {&lt;br /&gt;&amp;#160; h1.title {&lt;br /&gt;&amp;#160; &amp;#160;  width: &lt;b style="color: red;"&gt;750px&lt;/b&gt;;&lt;br /&gt;&amp;#160; &amp;#160;  height: &lt;b style="color: red;"&gt;89px&lt;/b&gt;;&lt;br /&gt;&amp;#160; &amp;#160;  left: 0;&lt;br /&gt;&amp;#160; &amp;#160;  top: 0;&lt;br /&gt;&amp;#160; &amp;#160;  padding: &lt;b style="color: red;"&gt;15px 0 0 40px&lt;/b&gt;;&lt;br /&gt;&amp;#160; &amp;#160;  margin: 0;&lt;br /&gt;&amp;#160; &amp;#160;  border-bottom: 1px solid black;&lt;br /&gt;&amp;#160; &amp;#160;  z-index: 0;&lt;br /&gt;&amp;#160;  }&lt;br /&gt;&amp;#160; h1.title a span {&lt;br /&gt;&amp;#160; &amp;#160;  background: url(&lt;b style="color: red;"&gt;http://homepage.mac.com/drewthaler/images/blog-header.gif&lt;/b&gt;) no-repeat;&lt;br /&gt;&amp;#160; &amp;#160;  position: absolute;&lt;br /&gt;&amp;#160; &amp;#160;         top: 0;&lt;br /&gt;&amp;#160; &amp;#160;         left: 0;&lt;br /&gt;&amp;#160; &amp;#160;         display: block;&lt;br /&gt;&amp;#160; &amp;#160;  width: &lt;b style="color: red;"&gt;790px&lt;/b&gt;;&lt;br /&gt;&amp;#160; &amp;#160;  height: &lt;b style="color: red;"&gt;105px&lt;/b&gt;;&lt;br /&gt;&amp;#160; &amp;#160;         z-index: 1;&lt;br /&gt;&amp;#160;  }&lt;br /&gt;&amp;#160; #sidebar {&lt;br /&gt;&amp;#160; &amp;#160; z-index: 2;&lt;br /&gt;&amp;#160; }&lt;br /&gt;}&lt;/blockquote&gt;&lt;h4&gt;Stylesheet explanations&lt;/h4&gt;&lt;p&gt;The &lt;code&gt;@media&lt;/code&gt; directive means that these styles should only be applied for certain types of media. For screen, projection, and tv renderers I prefer the nicer look. But they will not be applied for screen readers and printing.&lt;/p&gt;&lt;p&gt;I'm using the Gilder/Levin Method for &lt;a href="http://www.mezzoblue.com/tests/revised-image-replacement/"&gt;CSS image replacement&lt;/a&gt;. In this method, the span does all the work: it gets resized and repositioned, and the image is displayed as a CSS background image for it. The image is clickable because it's on the span, and the span is inside the link tag.&lt;/p&gt;&lt;p&gt;The span is given a z-index of 1 so that it sits &lt;em&gt;above&lt;/em&gt; the original &lt;code&gt;H1&lt;/code&gt;. The &lt;code&gt;H1&lt;/code&gt; text is still there, hiding underneath at z-index 0. Then the sidebar is given a z-index of 2 so that it will float above the header image if the two overlap.&lt;/p&gt;&lt;p&gt;The pixel sizes (790px by 105px) are from the size of my image. The padding (15px 0 0 40px) and bottom border are in there to make CSS-on/images-off browsing still look acceptable. It's a personal preference and based on the size of my image and text, so you might need to tweak it for your setup. The &lt;code&gt;H1&lt;/code&gt;'s width of 750px is the image's width (790px) minus the horizontal padding (40px), and the &lt;code&gt;H1&lt;/code&gt;'s height of 89px is the image's height (105px) minus the vertical padding (15px) minus the one-pixel bottom border (1px).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-8783610805635570154?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/8783610805635570154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=8783610805635570154' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/8783610805635570154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/8783610805635570154'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/11/blogger-image-as-blog-header.html' title='Blogger: Image as Blog Header'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-7571704759846212359</id><published>2006-10-31T06:04:00.000-05:00</published><updated>2006-10-31T07:00:13.746-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>When Benchmarks Attack</title><content type='html'>&lt;p&gt;In my professional life I've found myself measured by an external benchmark many times. One time that comes to mind was when I was writing disk drivers for &lt;a href="http://en.wikipedia.org/wiki/Mac_OS_8"&gt;Mac OS 8&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;The disk driver's job in Mac OS 8 was simply to pass requests from the filesystem layer to the underlying storage medium. Requests would come in for such-and-such amount of data at such-and-such an offset from the start of the volume. After some very minimal translation, we'd pass this request onward to the ATA Manager, or USB Manager, or FireWire libraries. &lt;/p&gt;&lt;p&gt;(Sounds easy, right? Well, yes, but the devil was in the details. USB and FireWire supported "hot-plugging", i.e. attaching or removing the drive while the computer was still running. Supporting this in an OS that was never designed for it was a big chore. CD and DVD drives were also much more difficult to handle than regular hard drives, for similar reasons.)&lt;/p&gt;&lt;p&gt;But we ran into a problem as we were preparing our drivers for release. The hardware manufacturers that were buying our drivers wanted to make sure our drivers were "fast". So they ran disk benchmarks against our drivers. Not an unreasonable thing to do, you might say, although as I've stated there really wasn't a lot of code in the critical path. The problem is that most of the &lt;em&gt;disk&lt;/em&gt; benchmarks turned out to be inappropriate as measures of &lt;em&gt;driver&lt;/em&gt; performance.&lt;/p&gt;&lt;h4&gt;Measuring weight with a ruler&lt;/h4&gt;&lt;p&gt;One common disk benchmark of the time was to read sequential 512-byte blocks from a large file. In Mac OS 8 these reads were passed directly down to the disk driver.&lt;/p&gt;&lt;p&gt;Remember, the disk driver's job was supposed to be to simply pass the incoming requests on to the next layer in the OS. The vast majority of the time would be spent accessing the hardware. So no matter what the requests were, in effect this test should have returned almost exactly the same results for all drivers, with code differences accounting for less than 1% of the results. Right? Wrong.&lt;/p&gt;&lt;p&gt;As we ran the tests, we found out that on this particular benchmark, our drivers were much slower than existing third-party drivers (our competition, more or less). Dramatically slower, in fact -- if we ran the test in 100 seconds, they ran it in 10 seconds.&lt;/p&gt;&lt;p&gt;Upon further examination, we found out the reason why they did so well on this benchmark. They had already been optimized for it!&lt;/p&gt;&lt;p&gt;We discovered that the other drivers contained caching logic which would cluster these small 512-byte sequential reads into larger 32KiB or so chunks. Doing so would decrease the number of round-trips to the hardware needed, which increased their performance on this benchmark.&lt;/p&gt;&lt;h4&gt;Do what sells, not what's right&lt;/h4&gt;&lt;p&gt;Now, it's important to understand that this tiny-sequential-read benchmark doesn't even reflect real-world use. The fact that larger I/O requests perform better than smaller I/O requests has been well known for decades, and almost every commercial application out there used large I/O requests for this very reason. Buffered I/O is built into the standard C libraries, for pete's sake. In the real world, requests that came into the disk driver tended to be either large or non-sequential.&lt;/p&gt;&lt;p&gt;Modifying our drivers to do the same thing would basically be pointless -- a lot of work for very little performance difference.&lt;/p&gt;&lt;p&gt;(It only gets worse when you realize that our disk driver was directly underneath the Mac OS disk cache. A driver-level cache was almost completely redundant. And the right place to do this sort of readahead caching would have been there, in the existing OS cache layer, not in each individual disk driver.)&lt;/p&gt;&lt;p&gt;But ... sigh. The real world doesn't always make sense. These small sequential reads were a well-known benchmark, even if it was a disk benchmark and not a driver benchmark. And that simple fact elevated this atypical scenario into the eyes of a lot of people who didn't really understand what it meant. To them, if our driver didn't do the same thing as the competition, we wouldn't measure up.&lt;/p&gt;&lt;h4&gt;De-optimizing to improve the benchmark&lt;/h4&gt;&lt;p&gt;So in order to make sales we were forced to burn another month adding and testing driver-level caching so that we'd perform better on this benchmark.&lt;/p&gt;&lt;p&gt;The irony? The work we did to improve this atypical benchmark actually &lt;em&gt;increased&lt;/em&gt; the amount of time we spent in the driver code, and sometimes &lt;em&gt;increased&lt;/em&gt; the amount of data we read, which in turn &lt;em&gt;decreased&lt;/em&gt; real-world performance by as much as 1-2%.&lt;/p&gt;&lt;p&gt;But hey, at least that benchmark got faster.&lt;/p&gt;&lt;p&gt;And we sold our driver.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-7571704759846212359?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/7571704759846212359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=7571704759846212359' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/7571704759846212359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/7571704759846212359'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/10/when-benchmarks-attack.html' title='When Benchmarks Attack'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-2445948486189585308</id><published>2006-10-30T02:00:00.000-05:00</published><updated>2007-09-04T03:28:06.574-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Switched to Blogger Beta</title><content type='html'>&lt;p&gt;Yesterday I &lt;a href="http://www.blogger.com/migrate-login.g"&gt;moved this blog to the new Blogger Beta&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;

I went whole-hog and switched to a new template as well. I'm still tweaking it, and XHTML compliance is temporarily gone. But for the most part things should be back to normal. RSS readers may see that every post has been modified. This was a side effect of the switch, although in fact I added categories/labels to all posts once I saw that they were going to be touched anyway.
&lt;/p&gt;&lt;p&gt;

Why switch? The mainline Blogger service (1.0) has been &lt;a href="http://buzz.blogger.com/2006/10/blogger-outages-novel.html"&gt;having boatloads of problems&lt;/a&gt; over the past month or two. It hasn't been very well maintained and it seems like it's just barely holding together. All the Google blogs are using the beta now, and in fact there are some very nice features in the beta that I was tempted by.
&lt;/p&gt;&lt;p&gt;

Cool stuff that you get from the switch:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=42659&amp;topic=9084"&gt;MUCH faster publishing&lt;/a&gt;. 1.0 generated a zillion static HTML files, the 2.0 beta uses a database.&lt;/li&gt;&lt;li&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=44498"&gt;Labels&lt;/a&gt;, aka categories.&lt;/li&gt;&lt;li&gt;&lt;a href="http://buzz.blogger.com/2005/10/introducing-backlinks.html"&gt;Backlinks&lt;/a&gt;, aka trackbacks. Better than MT's, since these are automatic. (Presumably filled in by Google crawls?)&lt;/li&gt;&lt;li&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=42663&amp;topic=9084"&gt;Comment feeds&lt;/a&gt;, both global and per-post.&lt;/li&gt;&lt;li&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=46888"&gt;Better template management&lt;/a&gt;. It's more powerful and exposes more, and it's smart enough to let you add and rearrange certain things on your page with no effort.&lt;/li&gt;&lt;li&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=46995&amp;topic=9084"&gt;Widgets&lt;/a&gt;, aka server-side directives in your template.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Downsides of the switch:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;b&gt;RSS reset&lt;/b&gt;. Everything in my RSS feeds got reset when I switched. Not a huge problem.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Porting customizations&lt;/b&gt;. To get some of the nicer features you need to upgrade your template. If you had your blog moderately customized, and change your template like I did, then it can be kind of a chore to port your customizations over. For me it took about a day.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Limited Safari support&lt;/b&gt;. Posting from Safari works just fine. Template editing seems like it has to be done in Firefox.&lt;/li&gt;&lt;li&gt;&lt;b&gt;It's a beta.&lt;/b&gt; And knowing Google, it will probably remain a beta for another &lt;a href="http://www.google.com/press/pressrel/gmail.html"&gt;three years&lt;/a&gt; or so. Dude. Can't you guys commit?&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;I haven't seen any other major downsides yet, but I'll let you know.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-2445948486189585308?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/2445948486189585308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=2445948486189585308' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/2445948486189585308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/2445948486189585308'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/10/switched-to-blogger-beta.html' title='Switched to Blogger Beta'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-8757649066627963356</id><published>2006-10-29T03:34:00.001-05:00</published><updated>2008-04-08T10:28:54.073-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='parenting'/><title type='text'>Video Game Tips for Parents</title><content type='html'>&lt;p&gt;I want to talk a little about a couple of lessons that I've learned from several years of experience with my daughter and video games.
&lt;/p&gt;&lt;p&gt;

If you haven't done so already, I'd also recommend reading &lt;a href="http://drewthaler.blogspot.com/2005/03/great-ps2-games-for-young-kids-part.html"&gt;these other tips&lt;/a&gt; from an earlier post, where I describe the things I went through trying to figure out which PlayStation 2 games would work for my 6 year old daughter.
&lt;/p&gt;&lt;p&gt;

Here's what I've learned:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Never, EVER buy a game without reading a review first.&lt;/b&gt; It's just a bad idea. That brings us to our second rule:&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Never, EVER buy a game without reading a review first.&lt;/b&gt; Seriously. I mean it! If you're new to video games, you might assume that most games are all about the same and it doesn't matter what you buy. Not a chance. Would you say the same for books and movies? There are some steaming pieces of trash out there which have been slapped together with spackle and duct tape, and they still sell a few copies because they're put in the store with fancy box art.&lt;/p&gt;&lt;p&gt;This rule has several corollaries. Here's a list of very bad reasons to buy a game "cold" (i.e., without reading a review) that people can fall victim to:&lt;/p&gt;&lt;p&gt;Bad Reason #1: &lt;i&gt;It uses the name of some great game that you remember.&lt;/i&gt; Many classic video games have been resurrected into horrible zombie caricatures of their former greatness. Frogger is one of the worst offenders.&lt;/p&gt;&lt;p&gt;Bad Reason #2: &lt;i&gt;It's a sequel to a game you or your child liked.&lt;/i&gt; Often the sequel changes the gameplay. And sometimes the rights to a game are transferred to another studio, and when that happens the second studio usually does a ham-handed job with the sequel. (Movies are the same way. Consider &lt;a href="http://www.imdb.com/title/tt0077631/"&gt;Grease&lt;/a&gt; and &lt;a href="http://www.imdb.com/title/tt0084021/"&gt;Grease 2&lt;/a&gt;.)&lt;/p&gt;&lt;p&gt;Bad Reason #3: &lt;i&gt;It's a TV or movie tie-in.&lt;/i&gt; TV and movie tie-ins are very often poorly made. Sometimes they just whip them together with no concern for gameplay or difficulty. There are some terrific games which are exceptions to this rule, of course -- many of Nickelodeon's games are pretty good -- but you won't know unless you read a review.&lt;/p&gt;&lt;p&gt;Bad Reason #4: &lt;i&gt;The box art and description makes it sound interesting.&lt;/i&gt; Um, yeah. Every game is a "great adventure" and "exciting" and "fun" by the time the marketing people are done with it. The box has no relation whatsoever to the actual game.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Look for the Greatest Hits titles.&lt;/b&gt; This is one place where the box can actually tell you something about the game. Sony's "Greatest Hits" are titles that have sold particularly well -- they are the gaming equivalent of a record going platinum. The nice thing is that the games get a lower price when this happens. So even though these games cost around $20, they're often much more fun than newer games which cost $50. Of course, brisk sales don't necessarily mean the game is age-appropriate, so you should still check reviews.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Don't be afraid of older games.&lt;/b&gt; Quality is far more important. The age of the game really doesn't matter: a fun game will always be a fun game. It doesn't matter if the game is "new" or not; it will still be new to your child! Any parent who's watched their kid get hooked on &lt;i&gt;The Cosby Show&lt;/i&gt; or &lt;i&gt;Full House&lt;/i&gt; or some other unexpected sitcom will understand how the same logic applies directly to games. Younger kids aren't hooked on fancy graphics and don't care about what's latest and greatest; they just want a game that's fun. As an extra bonus, older games are cheaper -- often by a lot!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Buy games used, and trade in old games.&lt;/b&gt; Most dedicated game stores, such as &lt;a href="http://www.ebgames.com/"&gt;EB Games&lt;/a&gt;, offer used games for sale and offer you store credit on trade-ins. This is a great way to save a lot of money. The used games will be literally as good as new. Trading in is also a useful lesson for your kids; I've made it a point to help my daughter pick which games she wants to trade in. We keep some old favorites around because she still plays them, or because they are good for sleepovers, but most eventually go back. Then we shop for new games, trying to see how much we can get without spending more than $10.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Consider renting games.&lt;/b&gt; It's up to you to decide whether this approach works for you. I don't do it with my daughter, because she simply doesn't play games enough to justify it, but some people do. It can be a fun way to try out a game without making a $40-$50 commitment. Just watch out for late fees! These days you can avoid them completely. Blockbuster now offers no-late-fee rentals (online and in-store) with their &lt;a href="http://beta.blockbuster.com/stores/gamePass"&gt;GamePass&lt;/a&gt; service, and there are a ton of NetFlix-like online rental services, including &lt;a href="http://gamefly.com/"&gt;GameFly&lt;/a&gt;, &lt;a href="http://gamelender.com/"&gt;GameLender&lt;/a&gt;, &lt;a href="http://gplay.com/"&gt;GPlay&lt;/a&gt;, and others.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Swap games with friends&lt;/b&gt;. Your child might not even consider this unless you suggest it. Loaning games to friends is a nice way to socialize and it saves money, too. And it gives the kids something else to talk about!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Play the games with your child.&lt;/b&gt; Especially with younger kids, but even as your child gets older this is important. It's a lot like reading a book together. It's a way to have fun and share an experience. When your child is particularly young, you might find that he gets stuck and gives up on a game quietly without really saying anything. If you help get past the tricky spots, he can go on having fun for longer. Or perhaps your kid will be like my daughter, and get (happily) scared when you reach the big, intimidating "boss" monster together, and she'll shove the controller over to you and want you to take over for a while. I usually play just long enough to show her how to do it, and then pass it back to her to try. Sometimes, if she asks, I'll get her past the hard part to the point where she wants to take over again. It's fun for both of you, and can be a great confidence builder.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;For big games, consider a hint book / strategy guide.&lt;/b&gt; Don't do this all the time, of course. But there are some larger games (such as Kingdom Hearts) where I found it to be very useful. What's great about these guides for kids ages 5-7 is that it can encourage their reading skills. My daughter wasn't really motivated to read much when she was 6, but the game strategy guide really got her going! It sounds silly, but it worked.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Any tips that you want to share?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-8757649066627963356?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/8757649066627963356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=8757649066627963356' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/8757649066627963356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/8757649066627963356'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/10/video-game-tips-for-parents.html' title='Video Game Tips for Parents'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-116200413027276297</id><published>2006-10-28T13:00:00.001-04:00</published><updated>2008-04-08T10:28:31.599-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PlayStation'/><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='parenting'/><category scheme='http://www.blogger.com/atom/ns#' term='PS2'/><title type='text'>Great PS2 Games for Young Kids, Part Two</title><content type='html'>&lt;p&gt;Well, it's been (ahem) about a year and a half since I promised a "part two" to my earlier post on &lt;a href="http://drewthaler.blogspot.com/2005/03/great-ps2-games-for-young-kids-part.html"&gt;Great PS2 Games for Young Kids, Part One&lt;/a&gt;. And it's time for the next installment. Three more games this time:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="#MonsterRancher"&gt;Monster Rancher 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#DDR"&gt;Dance Dance Revolution&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#KingdomHearts"&gt;Kingdom Hearts&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;[This post used to contain a lengthy list of tips. To trim it to a more manageable size, I've moved it to a new entry: &lt;a href="http://drewthaler.blogspot.com/2006/10/video-game-tips-for-parents.html"&gt;Video Game Tips for Parents&lt;/a&gt;.]
&lt;/p&gt;&lt;p&gt;

Okay. With that out of the way, let's get to the games! Three more good ones here. Although Olivia is now age 10, I'll talk about some games that she loved between the ages of about 7 and 9.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="MonsterRancher"&gt;Monster Rancher 3&lt;/a&gt;&lt;/h3&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=drewthaler-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=B0000AHOOH&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" align="right"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=drewthaler-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=B00005OLX5&amp;amp;fc1=000000&amp;amp;IS1=1&amp;amp;lt1=_blank&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" align="right"&gt;&lt;/iframe&gt;
&lt;p&gt;This is actually a series of games, ranging from Monster Rancher 1 to 4, plus the relatively new (and very different) Monster Rancher EVO. At the time we got it, the fourth game was out but I'd heard more favorable reviews of the third game. Following my own advice -- don't be afraid of old games! -- I went with number three. It might be hard to find the third game these days; I hear that the fourth one is also good, but I can't say for sure since we've only played this one.
&lt;/p&gt;&lt;p&gt;

You play as a monster trainer. The game starts by creating a monster, either from some pre-made guys or -- the better choice -- from a "saucer stone", which is a code name for "any old random CD or DVD you have lying around the house". (You'll have to swap discs manually, at which point you should pause and take a moment to teach your child about how to put CDs away properly when they're done with them.) Each disc will create a unique monster with different looks and abilities, and the same disc will create the same type of monster if used again. Your monster starts as a baby, and you feed it and train it to help it grow stronger. Over time it matures, grows old, and eventually dies, at which point you can start over again. There is a little bit of anime-style story, and there is a tournament where the monsters can optionally fight (without blood, and losers aren't really "killed", but there is cartoonish violence -- monsters chomp each other, whap each other with giant cartoon mallets, etc) to gain levels and prizes. And that's pretty much it.
&lt;/p&gt;&lt;p&gt;

What's fascinating about this game is the way that kids just love it. But it's the kind of game that can drive an adult crazy! Why? Because it's cute, and there's a lot of repetition. Kids that are 10 and under love repetition; just like they enjoy watching the same video over and over, or reading the same book over and over, they don't mind doing the same thing in a game over and over. There is a &lt;i&gt;lot&lt;/i&gt; of repetition in the game as you train your monster. You'll see the same animations over and over (sigh, and over) again. And yet there's still some variety -- you can train in different ways, or use different monsters, or go to a completely new area to train in. 
&lt;/p&gt;&lt;p&gt;

The controls are menu-based, but pretty simple to figure out. There is some text that your child should pay attention to. For example, the game will suggest that it's time to feed your monster, or to let it rest. Perhaps the trickiest part is saving the game and continuing after your monster dies (which is necessary to open up new areas). Olivia had a tendency to just start new games, since she got attached to her monster and didn't want to save over it after it had grown old and died. But doing that meant that she never got to train anywhere other than the first area. 
&lt;/p&gt;&lt;p&gt;

The game can also help build the skills your child needs to keep a pet. Monster Rancher isn't quite a "virtual pet" simulator, like a &lt;a href="http://www.tamagotchi.com/"&gt;Tamagotchi&lt;/a&gt; or &lt;a href="http://www.nintendogs.com/"&gt;Nintendogs&lt;/a&gt;, but it shares some of the same elements. If you treat your monster nicely, he'll be sweet and lovable and grow stronger. If you spoil him too much, he'll get fat and temperamental. If you punish him too much or don't feed him enough, he might get mean. And even though it can be very sad when a monster grows old and dies, that's part of life too. The game handles it well and you can quickly start over with a new baby monster -- which gets a boost from the "heart" left over by the previous one.
&lt;/p&gt;&lt;p&gt;

Kids also really love the "saucer stone" part. Since you don't know what any disc will give you, you'll have to try a bunch of them and see what you get. It's surprisingly entertaining, and kids love it because it's something they never thought might be possible. It's a really unique gameplay mechanism that I've never seen anywhere else. Just be careful: unattended, your kids might quickly make a mess of your CD collection! We gave Olivia permission try lots of CDs but always made sure that she was careful with them and put everything back as soon as she was done.
&lt;/p&gt;&lt;p&gt;

Some people might be concerned about the whole "raising animals to fight" part. That's your call. Personally, this wasn't a problem for us. First, we make sure our daughter is able to distinguish fantasy from reality (always a good thing) and that she knows how to behave in real life. Second, the monster fighting is very much treated as a sport in the game -- just like boxing, karate, or amateur wrestling might be. There are tournaments, prizes, and so on. So it's not as if you're teaching your kids to enjoy cockfights or the WWF. It's an extremely mild game.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="DDR"&gt;Dance Dance Revolution&lt;/a&gt;&lt;/h3&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=drewthaler-20&amp;amp;o=1&amp;amp;p=12&amp;amp;l=st1&amp;amp;mode=videogames&amp;amp;search=Dance%20Dance%20Revolution%20PS2%20Konami&amp;amp;fc1=&amp;amp;lt1=&amp;amp;lc1=&amp;amp;bg1=&amp;amp;f=ifr" marginwidth="0" marginheight="0" width="300" height="250" border="0" frameborder="0" style="border:none;" scrolling="no" align="right"&gt;&lt;/iframe&gt;
&lt;p&gt;This is another game that appeals to people across all ages. You've probably seen the arcade version in a mall. It's the one that has people stepping on four arrows while dance music plays, often drawing a crowd when the better players are "on stage". There's no real gender bias to the game, but my impression is that with younger kids it's more popular with girls, while among teenagers it's more popular among boys. I don't know this for sure; that's just the impression I get. Somebody could probably write a PhD thesis dissecting the relationship of this game to gender roles. :-)
&lt;/p&gt;&lt;p&gt;

First of all, you absolutely need to get the special "mat" controller that lets you dance. Some versions come with it bundled, or you can &lt;a href="http://www.amazon.com/gp/product/B0000AV7GB?ie=UTF8&amp;amp;tag=drewthaler-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B0000AV7GB"&gt;buy it separately&lt;/a&gt;. They sell some very expensive ones, but the regular old cheap one works well. Once you have that the game is very simple, but challenging. You're given a wide variety of songs to choose from, each with its own dance moves. All you need to do is just step on the arrows at the right time.
&lt;/p&gt;&lt;p&gt;

Sounds easy, right?
&lt;/p&gt;&lt;p&gt;

You wish. The guys at the mall may make it look simple, but DDR is very physical and can be challenging both for you and your child. You'll want to start out with the difficulty dialed all the way down to the lowest setting. It's okay to screw up -- and you will -- as long as you keep trying. Stick with it! After a while you'll start getting the hang of it. When you're first starting out, it's not unusual to have to stop after a few songs because you just get too tired and sweaty. I've found that taking turns of either one or three songs works well. 
&lt;/p&gt;&lt;p&gt;

What's great about this game is that it's a very physical thing, and it's something your child will want to practice. It's not very mentally challenging, but it can be tricky trying to figure out how to do all the moves you need to get through a song. It's sort of like puzzle-solving with your feet. It's not a game that you'll "beat" any time soon; you will be able to continue playing and improving for a long time. It's also an easy game to pick up and play; there's no story, and nothing gets in your way. You just start it up and go. And it's great at parties as long as you make sure the kids share. 
&lt;/p&gt;&lt;p&gt;

There are a lot of versions of this game. Some come with the "mat" controller bundled, some don't. As mentioned before, you'll really need the controller. We chose to get the &lt;a href="http://www.amazon.com/gp/product/B0002RQ37U?ie=UTF8&amp;amp;tag=drewthaler-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B0002RQ37U"&gt;Dance Dance Revolution Extreme Bundle&lt;/a&gt;, which included it. (NOTE: The preceding link lists a price of $199.95, which is insane. It should be about $40, which is the price you'll find for the almost equivalent &lt;a href="http://www.amazon.com/gp/product/B0009Z3K1C?ie=UTF8&amp;amp;tag=drewthaler-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B0009Z3K1C"&gt;DDR Extreme 2 Bundle&lt;/a&gt;. I e-mailed the seller and he said, paraphrased, that the price is deliberately high because it's new and unopened and someone stupid might buy it at that price.)
&lt;/p&gt;&lt;p&gt;

The primary difference between the versions is really the song lists. They tend to be techno dance music, and more or less appropriate for everyone. You might hear any of these songs on the radio. Your standards may vary, of course, but we really didn't find anything that we were concerned about in the game.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="KingdomHearts"&gt;Kingdom Hearts&lt;/a&gt;&lt;/h3&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=drewthaler-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=B000066TS5&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" align="right"&gt;&lt;/iframe&gt;
&lt;p&gt;Kingdom Hearts has a special kind of magic. It turns Disney movies into three-dimensional worlds that you can run through and play around in, and that's just fantastic. Since it contains a lot of characters and stories that your child will already know, it really is a lot of fun, and unlocking the game's worlds can be really rewarding. And if you look at the top of the box you'll see that it's now become a "Greatest Hits" title, which is why it's gotten so cheap.
&lt;/p&gt;&lt;p&gt;

This is a tricky one to put on the list, but it's just so good that I had to do it. Despite its Disney theme, this is definitely &lt;b&gt;not&lt;/b&gt; an easy game for a young child. &lt;b&gt;It's very long, complicated, can be very difficult, and has a few scary points.&lt;/b&gt; I would say that it's probably targeted a little more at the tween to teen market. Olivia and I started playing it when she was only 7, but we didn't finish for months and months! &lt;b&gt;It definitely shouldn't be a child's first exposure to video games, and you should be prepared to help your child play it almost the whole way through.&lt;/b&gt; In fact, I would strongly suggest getting a hint book like the &lt;a href="http://www.amazon.com/gp/product/0744001986?ie=UTF8&amp;amp;tag=drewthaler-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0744001986"&gt;Kingdom Hearts Official Strategy Guide&lt;/a&gt; ... these can be a lot of fun, and can encourage your child's reading skills. 
&lt;/p&gt;&lt;p&gt;

You play Sora, a young boy who lives on an island with his friends. After some lengthy training and a series of opening sequences which seem to take forever, eventually your island is ripped apart. You land in a central hub called Traverse Town, and eventually meet up with Donald and Goofy -- who have been sent by King Mickey to find you and then deal with the problem of "Heartless", shadowy monsters which are invading all the Disney worlds. Eventually you'll visit the worlds of (and fight the major villains from) a lot of different Disney movies: Little Mermaid, Hercules, Nightmare Before Christmas, Alice in Wonderland, Aladdin, Peter Pan, and more.
&lt;/p&gt;&lt;p&gt;

There is violence in this game: fighting monsters is most of what you do. Fighting involves swordfights with a "Keyblade" that looks like a giant key. You're rarely fighting people; most of the fighting is against Heartless, who look like shadowy insects. Otherwise the content should be fine for all ages. Not all of the characters are Disney characters; some are Square-Enix characters (from other games made by the same game studio) and some were created just for this game. 
&lt;/p&gt;&lt;p&gt;

The controls are moderately complicated. The basic moves are just running around, jumping, and hitting the attack button -- easily mastered by most kids if they've played a few games before. But there are a lot of menus, and even items that you can optionally buy and use (healing potions, magic, and so on). Saving goes through a menu as well, and must be done at a save point. There's no autosave, so your child must remember to save or else lose her progress.
&lt;/p&gt;&lt;p&gt;

The worlds you run around in can be big and complicated, and it's not always clear what to do next. But I've found that because it's a Disney theme, kids are very highly motivated to explore and look around. They will probably get stuck a lot, and the game makes it worse by creating certain situations where you just can't make forward progress and you have to give up and go to another world. For example, the Colosseum in Hercules isn't open for a long time, and there's no obvious reason why. That's why I'd suggest a &lt;a href="http://www.amazon.com/gp/product/0744001986?ie=UTF8&amp;amp;tag=drewthaler-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0744001986"&gt;hint book&lt;/a&gt;, with maps and strategies. When your child gets stuck, help him figure out how and where to look up the answer. You'll be helping him with his game, and very sneakily teaching him valuable skills like "how to use a reference book"!
&lt;/p&gt;&lt;p&gt;

There is also a sequel, &lt;a href="http://www.amazon.com/gp/product/B0009A4EVM?ie=UTF8&amp;amp;tag=drewthaler-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B0009A4EVM"&gt;Kingdom Hearts II&lt;/a&gt;, which is very similar to the first game. It's also long and complicated, but almost as good as the first game. I found that Olivia's enthusiasm ran out after a while on the sequel, but that might be because it didn't come out until two years after we finished the first one.
&lt;/p&gt;

&lt;h3&gt;Wrap-Up&lt;/h3&gt;
&lt;p&gt;I still believe that the most important thing you can do as a parent is to read reviews of games before you buy them. Games can be expensive, and you don't want to buy bad ones.
&lt;/p&gt;&lt;p&gt;

There are a few places I go to find reviews. &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2F&amp;amp;tag=drewthaler-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Amazon&lt;/a&gt; frequently has reviews written by kids and parents. I like &lt;a href="http://ps2.gamespot.com/"&gt;GameSpot&lt;/a&gt;'s reviews, although as a parent you sometimes need to translate a little: the criticisms of "too short" and "too easy" often mean the game will be just right for kids. &lt;a href="http://ps2.ign.com/"&gt;IGN&lt;/a&gt; also has reviews, but the reviews aren't as well-written; sometimes it feels like they are written for gaming insiders who follow every little bit of news.
&lt;/p&gt;&lt;p&gt;

I hope to write more in this series, but I encourage you to write your own experiences in the comments. Let me know what you've tried, and what worked and didn't!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-116200413027276297?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/116200413027276297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=116200413027276297' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/116200413027276297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/116200413027276297'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/10/great-ps2-games-for-young-kids-part.html' title='Great PS2 Games for Young Kids, Part Two'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-115505914262807461</id><published>2006-08-08T13:30:00.001-04:00</published><updated>2008-04-08T10:28:04.365-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>New Parallels Desktop Beta</title><content type='html'>&lt;p&gt;A new &lt;a href="http://parallels.com/en/products/desktop/update_beta/"&gt;beta update&lt;/a&gt; of Parallels Desktop has been released that updates Parallels Desktop for Mac to Build 1862 Beta.&lt;/p&gt;

&lt;p&gt;This update fixes the disk caching policy problem that &lt;a href="http://www.multisolar.com/software/PDTweaker/"&gt;PD Tweaker&lt;/a&gt; was created for. If you were wondering, PD Tweaker is perfectly safe to run with the new update and doesn't conflict with it at all. But it will be unnecessary once you have configured your VM properly.
&lt;/p&gt;&lt;p&gt;

Curiously, instead of just fixing it they decided to make it an option under the virtual machine settings -&gt; Options -&gt; VM flags:
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Choose virtual hard disk cache policy for better performance of:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;[X]&lt;/tt&gt;  Virtual machine&lt;br /&gt;
&lt;tt&gt;[&amp;nbsp;]&lt;/tt&gt;  Mac OS X&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;"Virtual machine" is the default setting. For the technically-minded among you, this is like having a radio button to select between two behaviors: "incorrect" and "correct", and defaulting to "incorrect".
&lt;/p&gt;&lt;p&gt;

In this case the &lt;b&gt;correct behavior is to select the second option, "Mac OS X"&lt;/b&gt;. There are rare scenarios where you might want the other behavior, for example if you were setting up a dedicated server box that does nothing except run virtual machines. But in almost all other cases the second option is correct. I'll blog more about this later.
&lt;/p&gt;&lt;p&gt;

There are several significant other improvements, including video acceleration -- which completely eliminates the display-update lag when you're typing in Windows, hooray! All in all it seems like a very worthwhile update so far. Remember to re-install the Parallels Tools on your client OS after updating so that you get the new drivers.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-115505914262807461?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/115505914262807461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=115505914262807461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/115505914262807461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/115505914262807461'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/08/new-parallels-desktop-beta.html' title='New Parallels Desktop Beta'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-115171287593361237</id><published>2006-06-30T19:58:00.001-04:00</published><updated>2008-04-08T10:27:42.885-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>CLImax 1.5d2 re-released</title><content type='html'>&lt;a href="http://www.multisolar.com/software/CLImax/"&gt;&lt;img src="http://www.multisolar.com/software/CLImax/icon" width="128" height="128" alt="CLImax" /&gt;&lt;/a&gt;&lt;p&gt;Any old-school scripters out there might be happy to hear that I've re-released CLImax 1.5d2, which I recently rediscovered on a long-lost backup. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.multisolar.com/software/CLImax/"&gt;CLImax&lt;/a&gt; is an AppleScript command-line interface for the Mac OS. It was originally written in 1996 for System 7.5, and development was stopped in 1998. Ten years after its first release, version 1.5d2 can still run under Classic today. It's not as convenient as it was under 9.2.2 natively, but it's not bad either.&lt;/p&gt;

&lt;p&gt;I've received a bunch of positive comments about CLImax from people including Bill Cheeseman (of &lt;a href="http://www.applescriptsourcebook.com"&gt;AppleScript Sourcebook&lt;/a&gt;), Ray Barber (of &lt;a href="http://macscripter.net/"&gt;MacScripter&lt;/a&gt;), and Peter Hosey (of &lt;a href="http://trac.adiumx.com/wiki/boredzo"&gt;Adium X&lt;/a&gt;). Peter was the one who actually got me to re-release it.&lt;/p&gt;

&lt;p&gt;CLImax 1.5d2 is now FREEWARE and available at no charge. Be sure to visit the &lt;a href="http://www.multisolar.com/software/CLImax/"&gt;CLImax homepage&lt;/a&gt; for more information, including screenshots.&lt;/p&gt;

&lt;p&gt;I'm currently soliciting feedback on whether it'd be worth porting it to Mac OS X and creating a modern version. Thoughts?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-115171287593361237?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/115171287593361237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=115171287593361237' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/115171287593361237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/115171287593361237'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/06/climax-15d2-re-released.html' title='CLImax 1.5d2 re-released'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-115098877822760833</id><published>2006-06-22T10:44:00.001-04:00</published><updated>2008-04-08T10:27:24.948-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>PD Tweaker 1.0</title><content type='html'>&lt;a href="http://www.multisolar.com/software/PDTweaker/"&gt;&lt;img display="block" src="http://www.multisolar.com/software/PDTweaker/PDTweaker.png" width="128" height="128" style="float: right; margin-left: 20px; margin-bottom: 20px;" /&gt;&lt;/a&gt;&lt;p&gt;For all you fans of &lt;a href="http://parallels.com/en/products/desktop/"&gt;Parallels Desktop&lt;/a&gt; out there, I've released a quick little hack to fix some problems in their initial release (aka: build 1848). It's called &lt;a href="http://www.multisolar.com/software/PDTweaker/"&gt;PD Tweaker&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It's very simple and only does two things.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Optimizes caching for HDD and SAV files&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Caching large files is actually harmful to your Mac's overall performance. HDD files do not need caching because the client OS will already have a cache layer. SAV files are streamed in and out and don't need to reside in the disk cache.&lt;/p&gt;

&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Always writes HDD and SAV files all the way to disk&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Your data is precious. Especially data like a HDD file that took you hours to install and configure. Shouldn't you treat it that way?&lt;/P&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;I wrote it primarily because although Parallels Desktop is a great product, I got fed up with the way it wasted my entire 2GB of RAM with the HDD file and made my machine virtually unusable. With PD Tweaker installed, you will not only notice greatly improved performance from your Mac as a whole, but your HDD files will be safer from data corruption as well. And best of all, it's entirely free and the source code is available.&lt;/p&gt;

&lt;p&gt;&lt;center&gt;&lt;a href="http://homepage.mac.com/drewthaler/multisolar/sw/PDTweaker-1.0.0.zip"&gt;&lt;img src="http://www.multisolar.com/software/images/DownloadNow.png" width="229" height="45" alt="Download Now!" style="float: none !important"/&gt;&lt;/a&gt;&lt;/center&gt;&lt;/p&gt;

&lt;p&gt;It uses Unsanity's &lt;a href="http://unsanity.com/haxies/ape"&gt;Application Enhancer 2.0&lt;/a&gt; to do its thing.&lt;/p&gt;

&lt;p&gt;More information (including some rationale and a technical explanation) is available on the &lt;a href="http://www.multisolar.com/software/PDTweaker/"&gt;PD Tweaker website&lt;/a&gt;. What are you waiting for? Go there now!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-115098877822760833?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/115098877822760833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=115098877822760833' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/115098877822760833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/115098877822760833'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/06/pd-tweaker-10.html' title='PD Tweaker 1.0'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-114794235736033106</id><published>2006-05-18T04:34:00.001-04:00</published><updated>2008-04-08T10:26:56.733-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Delaying the xnu-x86 source release</title><content type='html'>&lt;p&gt;[&lt;b&gt;Updated Aug 7 2006; see below.&lt;/b&gt;]&lt;/p&gt;

&lt;p&gt;Tom Yager at InfoWorld &lt;a href="http://www.infoworld.com/article/06/05/17/78300_21OPcurve_1.html"&gt;points out&lt;/a&gt; that Apple has released the source code to everything in the x86 build of OSX Darwin except for the kernel, xnu.
&lt;/p&gt;&lt;p&gt;

He also makes what appears to be a completely and utterly unsubstantiated statement about why:
&lt;/p&gt;&lt;p&gt;

&lt;blockquote&gt;&lt;p&gt;Thanks to pirates, or rather the fear of them, the Intel edition of Apple’s OS X is now a proprietary operating system.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;First of all, what? That's a bold statement. Got any source for that claim? That seems like sheer FUD, deliberately sensationalized to create a stir and bring people to the site (and therefore sell ads). From everything I've seen, and I've worked with these people, Apple's security team and upper management know better than to rely on security through obscurity. And to date I don't know of any official or even unofficial statement from Apple about xnu-x86 -- just the fact that several people have noticed that the source still hasn't been released.
&lt;/p&gt;&lt;p&gt;

[&lt;b&gt;Update 5/22&lt;/b&gt; via &lt;a href="http://daringfireball.net/"&gt;John Gruber&lt;/a&gt;: Apple's Product Manager for Open Source reiterates that Apple &lt;a href="http://lists.apple.com/archives/Fed-talk/2006/May/msg00105.html"&gt;has not made any announcement yet&lt;/a&gt;, and drops what sounds like a big hint that xnu-x86 will eventually be released.]
&lt;/p&gt;&lt;p&gt;

Let me offer two guesses at the real reason why we haven't seen source to xnu-x86 yet:
&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;The xnu-x86 source might leak information about a future product.&lt;/b&gt; The obvious candidate is the only missing link in the x86 line, the pro desktops. You know, the ones that will replace the "PowerMac". Let's call them "Mac Pro" for lack of a better name.&lt;/p&gt;&lt;p&gt;For example, if the highest end Mac Pro desktop machines were planned to have, say, 4 CoreDuos packed into them for a whopping 8 CPU cores, then chances are you would see traces of that support show up in several parts of xnu. And when Apple releases a major rev of xnu, there are always some people who pore over it looking at the diffs.&lt;/p&gt;&lt;p&gt;Apple does have ways to keep prerelease stuff out of the source release, of course, but it adds a layer of complication and risk to go back and hack that up after the fact. Maybe this time they decided it was just simpler to drag their feet for a while until the entire new line has been announced.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;The xnu-x86 source might currently contain a small amount of licensed proprietary code that does not belong to Apple.&lt;/b&gt; If that's the case, they simply might not be legally allowed to release it in its current form.&lt;/p&gt;&lt;p&gt;Maybe it's virtualization code from Intel, or some sort of Trusted Computing gobbledygook which is currently dormant. If they can't negotiate terms to release it, then they might have to factor the sourcebase somehow to link that other code in separately. Factoring that out seems like it would be totally possible, but kind of a messy task since it's at such a low level in the kernel and they can't sacrifice any performance to do so.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;Personally I think #1 fits Apple's modus operandi perfectly. But #2 is also the kind of real-world consideration that could delay a source release for an unknown period of time while the lawyers work things out. I will grant that "fear of pirates" is another technically possible reason why we haven't seen the source, but then again the same could be said for &lt;a href="http://crazyapplerumors.com/"&gt;"fear of ninjas"&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;

We'll see what happens. Either way my gut feeling is that this is just a delay in the source release, not a permanent switch to a completely closed-source kernel.
&lt;/p&gt;&lt;p&gt;

[&lt;b&gt;Update: Aug 7 2006:&lt;/b&gt; xnu-x86 has now been &lt;a href="http://lists.apple.com/archives/Darwin-dev/2006/Aug/msg00067.html"&gt;released&lt;/a&gt;. According to Kevin van Vechten's &lt;a href="http://kernel.macosforge.org/?p=3"&gt;post at kernel.macosforge.org&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Several changes were made in order to publish the kernel (xnu) sources. As a result, the kernel built from these sources differs from the one found in the 10.4.7 software update. In order to accommodate these changes, several kernel extensions were also modified and must be downloaded and installed in order to run a kernel built from these sources on Mac OS X 10.4.7 for Intel.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Based on that comment, it sounds like the answer is #2 and for the xnu-x86 release they moved some code from the kernel into a kext.]&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-114794235736033106?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/114794235736033106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=114794235736033106' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/114794235736033106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/114794235736033106'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/05/delaying-xnu-x86-source-release.html' title='Delaying the xnu-x86 source release'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-114775855918811450</id><published>2006-05-16T01:29:00.001-04:00</published><updated>2008-04-08T10:26:18.952-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>What the hell is going on here?</title><content type='html'>&lt;p&gt;I don't often write short posts, but &lt;a href="http://www.uexpress.com/richardreeves/?uc_full_date=20060512"&gt;this May 12, 2006 article&lt;/a&gt; from one of my favorite op-ed writers, &lt;a href="http://richardreeves.com/"&gt;Richard Reeves&lt;/a&gt;, really struck a chord:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;The only way to restore constitutional checks and balances in Washington before 2008 is for the opposition to win one house of Congress and have the power to call witnesses at public hearings and ask, under oath:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;"What the hell is going on here?"&lt;/b&gt;
&lt;/p&gt;&lt;p&gt;

What is going on in the White House? The Defense Department? The CIA and the NSA? With gasoline prices? Along the border between California and Mexico? In Baghdad? In New Orleans? With Jack Abramoff and the K Street Gang? In Congress itself?
&lt;/p&gt;&lt;p&gt;

Or, who is listening to your phone calls? Are your taxes being used to teach torture techniques to your sons and daughters? Are the glaciers melting?
&lt;/p&gt;&lt;p&gt;

We'll be the last to know.
&lt;/p&gt;&lt;p&gt;

The nation flies blind when we have determined one-party government. That can and has happened in both parties over the centuries, but this White House is a particularly tough bunch, talking freedom around the world and taking it away at home. &lt;b&gt;President Bush essentially has veto power over the Republican automatons in the Congress&lt;/b&gt;....&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The rest of the article is worth reading, but that's really it in a nutshell. And it summarizes the entire problem that we face today.
&lt;/p&gt;&lt;p&gt;

The entire Republican Congress, including our own Ohio Senators Mike DeWine and George Voinovich, have thrown away all pretense of holding the President and the executive branch accountable. They are nothing but a rubber-stamp for the President's bad policies.
&lt;/p&gt;&lt;p&gt;

God forbid that anyone suggest the President might possibly have made a mistake! They can't admit to even one. 
&lt;/p&gt;&lt;p&gt;

We are in that most terrifying of states where virtually every single decision that's being made is wrong, but nobody is willing to stop. It's like the worst death spiral you've ever seen from a meth addict, or a horror movie where you are yelling at the screen: "No, DON'T split up! The killer is taking you out one by one!" And yet we are powerless to stop it.
&lt;/p&gt;&lt;p&gt;

Democrats speak out daily, but it's the Republican majority that controls all the committee chairmanships and sets the agendas for both houses. And it's the Republicans who make sure that no actions that force accountability ever make it to the floor. In the past year alone I've seen video of at least five instances of Republican chairmen overruling perfectly valid objections from Democrats, silencing debate, and completely ignoring accountability.
&lt;/p&gt;&lt;p&gt;

If you wonder why Congress doesn't do something to stop the President, you are really asking why the Republicans won't do anything to stop the President.
&lt;/p&gt;&lt;p&gt;

You know what? That's a damn good question.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-114775855918811450?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/114775855918811450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=114775855918811450' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/114775855918811450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/114775855918811450'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/05/what-hell-is-going-on-here.html' title='What the hell is going on here?'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-114765562787472112</id><published>2006-05-14T21:05:00.001-04:00</published><updated>2008-04-08T10:25:56.235-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='satire'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>High-Resolution Images Could Choke Internet</title><content type='html'>&lt;p&gt;Perhaps you've seen this article, entitled &lt;a href="http://www.forbes.com/entrepreneurs/feeds/ap/2006/05/14/ap2744526.html"&gt;High-Definition Video Could Choke Internet&lt;/a&gt;, already:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Every day, it seems, a new service pops up offering to send you video over the Internet. "Desperate Housewives," Stephen Colbert heckling the president, clips of bad dancers at wedding parties: It's all there.
&lt;/p&gt;&lt;p&gt;

You may be up for it, but is the Internet?
&lt;/p&gt;&lt;p&gt;

The answer from the major Internet service providers, the telephone and cable companies, is "no." Small clips are fine, but TV-quality and especially high-definition programming could make the Internet choke.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Man. That just sounds &lt;i&gt;really&lt;/i&gt; familiar to me for some reason. I've been online for more than a decade now, and this has been bugging me all day. So I started searching through my old floppy disks for news articles that I'd stashed away back in my university days. It turns out this argument isn't new at all! Check it out (sorry, no link to the original -- all I know about the origin is that I saved it off Usenet as jpegbad.txt):&lt;/p&gt;

&lt;blockquote&gt;
&lt;tt&gt;&lt;p&gt;&lt;b&gt;High-Resolution Images Could Choke Internet&lt;/b&gt;&lt;br /&gt;
By SVEN PETERSON, Microcomputer Technology Writer&lt;br /&gt;
Sunday Mar 24, 1996&lt;/p&gt;

&lt;p&gt;NEW YORK - Every day, it seems, a new service pops up offering to send you images or software over a new service called the World Wide Web, or WWW. Astronomy pictures of the day, ESPN.SportsZone.com, the Internet Movie Database, DOOM wads, Info-Mac archives: It's all there.
&lt;/p&gt;&lt;p&gt;

You may be ready for it, but is the Internet?
&lt;/p&gt;&lt;p&gt;

The answer, from major Internet service providers such as Prodigy, Compuserve, and eWorld, is "no." Small pictures are fine, but GIF animations, full-color JPEGs, and especially high-resolution images could make the Internet choke.
&lt;/p&gt;&lt;p&gt;

Most home Internet use is in brief bursts: an e-mail here, a gopher session there, followed by some Telnet activity. If people start browsing the World Wide Web like they watch TV -- for hours at a time -- that puts a strain on the Internet that it wasn't designed for, ISPs say, and beefing up the Internet's capacity to prevent that will be expensive.
&lt;/p&gt;&lt;p&gt;

To offset that cost, ISPs want to start charging content providers to ensure delivery of large JPEG files, for example.
&lt;/p&gt;&lt;p&gt;

Internet activists and consumer groups are vehemently against those plans, saying they amount to deliberately fouling the Internet's level playing field, one of the things that has encouraged communication and collaboration and may, in the future, provide a much-needed boost to the US economy. They want legislation to guarantee a "neutral" Internet, but prospects appear slim.
&lt;/p&gt;&lt;p&gt;

At the heart of the debate is a key question: How much would it really cost the Internet carriers to provide a couple of megabytes of JPEG-laden WWW pages over their networks every day?
&lt;/p&gt;&lt;p&gt;

The carriers are not telling, but there are ways to get close to an answer.
&lt;/p&gt;&lt;p&gt;

One data point: As a rough estimate, an always-on, 1000 kilobit-per-second connection to the Internet backbone in downtown Cleveland, purchased wholesale, costs an ISP $100 to $200 a month, according to the research firm GeoTelegraphy Inc. An ISP's business is carrying data from that connection to the customer.
&lt;/p&gt;&lt;p&gt;

One thousand kilobits per second is obviously a lot of bandwidth, so ISPs have to spread that bandwidth out over their subscribers. That connection can serve about 30 users who are using every bit of their 28.8 kilobit-per-second dialup connection. But analysts estimate that ISPs sell around 30 times more bandwidth to their end users than they can connect simultaneously to the Internet, meaning that these thousand kilobits are often shared by roughly 900 users.
&lt;/p&gt;&lt;p&gt;

In a way, dial-up internet service is like an old-fashioned telephone service, where there are always more lines leading from homes to the local switching station than there are going from the station out of the neighborhood. If everyone picks up the phone at once, there won't be enough outgoing lines for every call to go through. But the system works because that rarely happens. 
&lt;/p&gt;&lt;p&gt;

Oversubscription doesn't present a problem as long as people are only using the Internet for e-mail, telnet, and the occasional FTP download. But if everyone in a neighborhood is trying to "surf" the WWW at the same time, it's just not going to work.
&lt;/p&gt;&lt;p&gt;

"The simple truth is that today's networks simply don't have the capacity to deliver all that customers expect," says Timothy Taker, Prodigy's top lobbyist.
&lt;/p&gt;&lt;p&gt;

The solution, of course, is to make the pipes connecting to the Internet fatter. To illustrate what that would mean, Compuserve's chief architect, Franz Kafka, uses the assumption that the cost of providing a month's worth of data to the average user, about 2 megabytes, costs the company $1. That's a fairly small amount compared to the $25 to $47 a month Compuserve charges for dial-up, but then the company has to pay for sales, support, maintenance and a host of other costs. 
&lt;/p&gt;&lt;p&gt;

If that same user were to start downloading twenty print-quality high-resolution JPEGs per month, Compuserve's data cost, not including the cost of maintaining the dial-up line, would go up to $4.50 a month. Higher, but perhaps not high enough to break their business model. 
&lt;/p&gt;&lt;p&gt;

But if the customer starts browsing the WWW like the average household watches broadcast TV, 8 hours a day, Compuserve's cost would go up to $112 a month, enough to inspire nightmares in the corporate accounting department according to Kafka.
&lt;/p&gt;&lt;p&gt;

"We don't expect to get to the point where we're charging anyone those kinds of prices for Internet service, but it does reflect the kind of impact that high-resolution JPEGs and GIFs could have on the network and business models for the Internet," Kafka said. 
&lt;/p&gt;&lt;p&gt;

To deal with that, Kafka says Compuserve might put caps on the amount of data that a residential user gets for free, and charge extra if the user goes over. Other options include charging content providers extra for guaranteed delivery of JPEG images and GIF animations, which has raised the hackles of Internet content providers and activists. 
&lt;/p&gt;&lt;p&gt;

However, Kafka's estimates for these costs aren't really Compuserve's. Like other ISPs, they don't disclose their actual costs. Instead, Kafka's base figure of $1 for 2 megabytes of data per month is based on an estimate by Dave Tricklestein, sysop of the Dial-Up Prime BBS, and Tricklestein thinks Kafka has it wrong. 
&lt;/p&gt;&lt;p&gt;

"Traffic just isn't growing that fast," Tricklestein said. "It will grow and it will even accelerate, but not fast enough to turn into dollar amounts that really matter." The new WWW service is still just a small fraction of the total amount of internet traffic out there, and that's unlikely to change overnight, in Tricklestein's opinion. 
&lt;/p&gt;&lt;p&gt;

In fact, he said, it will probably be at least two more years before the WWW takes off in a big way. Prices of network equipment like switches and routers have been falling, and that trend is likely to continue. 
&lt;/p&gt;&lt;p&gt;

Tricklestein believes the danger of letting the carriers charge extra for guaranteed delivery is that they'll put the spending for upgrades into creating that extra "toll lane," and won't reduce oversubscription in the rest of the network even though it would be cheap to do so.
&lt;/p&gt;&lt;p&gt;

Both Compuserve and eWorld have said they won't degrade or block anyone's Internet traffic. But it's impossible to tell what goes on inside their networks.
&lt;/p&gt;&lt;p&gt;

So what's the message? Stay tuned, and watch your modem connection speeds.&lt;/p&gt;&lt;/tt&gt;&lt;/blockquote&gt;

&lt;p&gt;Funny. Whatever happened to Compuserve and that short-lived dial-up business model where you got charged extra for overages? Oh yeah, consumers ran away from it in droves in favor of unlimited-download services so that they could browse the Web without restriction.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-114765562787472112?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/114765562787472112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=114765562787472112' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/114765562787472112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/114765562787472112'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/05/high-resolution-images-could-choke.html' title='High-Resolution Images Could Choke Internet'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-113710063216152243</id><published>2006-01-12T13:16:00.001-05:00</published><updated>2008-04-08T10:25:27.761-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Apple's new laptop</title><content type='html'>&lt;p&gt;It's now been two days since Apple announced the first machines ever to ship with Intel processors, due to ship in February. (See my earlier post: &lt;a href="http://drewthaler.blogspot.com/2005/07/apples-future-with-intel.html"&gt;Apple's future with Intel&lt;/a&gt;.) Steve said something about a new Intel-based iMac or something, I guess, but nobody cares because he also announced a &lt;a href="http://apple.com/macbookpro/"&gt;new pro laptop&lt;/a&gt; that uses an Intel chip.
&lt;/p&gt;

&lt;div style="text-align: center;"&gt;&lt;a href="http://click.linksynergy.com/fs-bin/click?id=Z7VP2ShD4E0&amp;amp;offerid=77305.148&amp;amp;type=2&amp;amp;subid=0"&gt;&lt;IMG border=0 src="http://store.apple.com/Catalog/US/Images/mb_step1_hero_060110.jpg" style="clear: all; float: none; display: inline;"&gt;&lt;/a&gt;&lt;IMG border=0 width=1 height=1 src="http://ad.linksynergy.com/fs-bin/show?id=Z7VP2ShD4E0&amp;amp;bids=77305.148&amp;amp;type=2&amp;amp;subid=0" style="display: block; border: none; margin: 0; padding: 0; float: right;"&gt;&lt;/div&gt;

&lt;p&gt;The usual flurries of &lt;a href="http://engadget.com/2006/01/10/hands-on-with-the-macbook-pro"&gt;oohs and ahhs&lt;/a&gt;, &lt;a href="http://www.computerworld.com/softwaretopics/os/macos/story/0,10801,107632,00.html?source=x06"&gt;glowing reviews&lt;/a&gt;, &lt;a href="http://arstechnica.com/news.ars/post/20060110-5940.html"&gt;playful cynicism&lt;/a&gt;, and &lt;a href="http://www.penny-arcade.com/comic/2006/01/11"&gt;plugs from unexpected directions&lt;/a&gt; have all played out. Now people are starting to look a little more closely at the offerings.
&lt;/p&gt;

&lt;h3&gt;Missing Pieces&lt;/h3&gt;
&lt;p&gt;Finally, for the first time I have no connection whatsoever to Apple and I can talk about a new release without the fear of getting arbitrarily fired. So I'll dig in from my new perspective as an Apple outsider and take a look.
&lt;/p&gt;&lt;p&gt;

Rosyna examines what's &lt;i&gt;not&lt;/i&gt; in the new laptop in his enigmatically titled &lt;a href="http://www.unsanity.org/archives/000445.php"&gt;Lost in Transition: Overcane of Antflower Milk&lt;/a&gt;. Don't worry about the title; he's just like that.
&lt;/p&gt;&lt;p&gt;

To sum up: no S-video, no FireWire 800, no modem, slightly lower resolution (1440x900, when the previous laptop was 1440x960), no dual-layer DVD burning. And from looking at the battery and the power brick, it seems likely that power consumption is actually higher on this machine than the previous iteration. (Not a big deal to me, since that's the natural progression anyway -- but worth noting.)
&lt;/p&gt;&lt;p&gt;

I'd add two things to that list:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;b&gt;No PC card slot&lt;/b&gt;. It was traded up for an &lt;a href="http://www.expresscard.org/web/site/about.jsp"&gt;ExpressCard/34&lt;/a&gt; slot, which will ultimately be a good thing... but first, people will have to start making cards that fit it. To call the current offerings &lt;a href="http://www.expresscard.org/web/do/pub/resourcedirectory"&gt;sparse&lt;/a&gt; would be generous. That'll be fixed in a year, but it may be a concern for a handful of early adopters who need PC cards for one reason or another.&lt;/li&gt;&lt;li&gt;&lt;b&gt;No two-button trackpad&lt;/b&gt;. This doesn't matter when you're running Mac OS X, because OSX uses control-click. But tough luck if you were hoping to dual-boot into Windows; you simply can't run Windows usefully with a one-button mouse.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Many people have noticed that Apple is being suspiciously quiet about battery life. No statements on battery life are available, which is very odd for a laptop announcement. My sources suggest that they're simply not done with the final power management code, so they don't want to release actual metrics yet. If I may insert a side comment here, my own experience and tendency toward cynicism suggests that they will ship a half-assed version of power management with the machine, then patch it later with a couple of system updates to get to a version that actually works. Call it a hunch. 
&lt;/p&gt;

&lt;h3&gt;Performance&lt;/h3&gt;
&lt;p&gt;As the saying goes, "There are lies, damn lies, and benchmarks." Apple is claiming a whopping 4x speed boost over the previous PowerBook G4. But take a look at &lt;a href="http://www.apple.com/universal/"&gt;this breakdown&lt;/a&gt; of the benchmarks from Apple themselves:
&lt;/p&gt;&lt;p&gt;

&lt;img src="http://homepage.mac.com/drewthaler/blog/macbookpro-benchmarks.jpg" width="427" height="517" alt="MacBook Pro Benchmarks" style="float: none" /&gt;
&lt;/p&gt;&lt;p&gt;

Notice how only &lt;a href="http://www.luxology.com/modo/201/"&gt;Modo&lt;/a&gt; -- an application that is heavily tuned for Intel chips -- is listed as about 4x faster, and everything else gets in the neighborhood of 2x. From Luxology's site:
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;The modo rendering engine deeply leverages various Intel Technologies to improve scalability and performance. Our bucket rendering provides near linear scales in performance with multiple processors and Intel® Pentium 4 processors with HT Technology.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Everything else that hasn't been hand-tuned quite as much for Intel chips only gets a boost in the neighborhood of 2x. Funny thing, really... 2x is just about the performance boost you'd get going from a single G4 to a dual G4.
&lt;/p&gt;&lt;p&gt;

From examining those benchmarks, my professional opinion is that it looks like a single core of the new Intel chip runs a little faster in these tests than a comparably-clocked G4, or roughly equal to a comparably-clocked G5.
&lt;/p&gt;&lt;p&gt;

The real performance boost comes from the fact that there are two cores. It's like the laptop went from a single-processor G4 to a dual-processor G5. That's a real boost, of course -- the machine really does seem to be twice as fast as the old machine, which is awesome and worthy of praise. But it's &lt;i&gt;not&lt;/i&gt; because it's Intel vs PowerPC; most of the boost is due to the upgrade from single-processor to dual-processor. 
&lt;/p&gt;&lt;p&gt;

As for people getting over-excited about Intel's SSE vs PowerPC's Altivec, my personal opinion -- as someone who's written code for both -- is that in the final analysis they're really quite similar. Sure, there are differences. Each is good at different things, and optimizing for one is not the same as optimizing for the other. Altivec has more registers, but then again you pay for those extra registers during context switches. Switching to SSE is more of a lateral move than a step back. It'll take a while for Apple and other vendors to convert everything that was Altivec-optimized to be fully SSE-optimized, but they'll get there.
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;Update:&lt;/b&gt; Ars Technica comes through with a &lt;a href="http://arstechnica.com/reviews/hardware/imac-coreduo.ars"&gt;hands-on look&lt;/a&gt; at the new iMac, and had a chance to run some benchmarks. Since they use the same CPU, the iMac probably has performance very similar to the new laptop. Check it out for more details.
&lt;/p&gt;

&lt;h3&gt;Dreams of Dual-Booting&lt;/h3&gt;
&lt;p&gt;
One of the reasons I was &lt;b&gt;really&lt;/b&gt; interested in the new laptop was the possibility of dual-booting into Windows, and later, when the software became available, running Windows in a VMware-style shell.
&lt;/p&gt;&lt;p&gt;

My current work (contracting for Sony on PSP/PS3) requires me to use Windows XP on a daily basis. While I've mostly managed to customize my Windows system to the point where it satisfies my needs, I still really miss a lot of the nicer little features of the Mac: iChat, iCal, iPhoto, even AppleScript. And when I'm traveling I can't really work on Mac software without bringing two laptops along -- which is obnoxious both because of the extra weight and the extra hassle at the dog-and-pony show that passes for airport "security" in this country.
&lt;/p&gt;&lt;p&gt;

A single dual-booting laptop would have been a great solution for me -- I'd sign up to buy it right now if I thought the new laptop would deliver on that front, even without a two-button trackpad.
&lt;/p&gt;&lt;p&gt;

But it's been reported that Windows XP &lt;a href="http://engadget.com/2006/01/11/no-xp-on-intel-macs-but-vista-is-good-to-go/"&gt;won't boot&lt;/a&gt; the laptop, because it uses EFI rather than a BIOS to boot. Longhorn, aka Windows Vista, should work... but who knows when that's coming out? Right now it's supposed to be the end of 2006, but it appears to be even money on whether Microsoft will actually make that date. The &lt;a href="http://www.winsupersite.com/showcase/longhorn_preview_2005.asp"&gt;Longhorn schedule&lt;/a&gt; and magical ballooning feature list has looked a lot like &lt;a href="http://en.wikipedia.org/wiki/Copland"&gt;Copland&lt;/a&gt;'s so far, which isn't very heartening. 
&lt;/p&gt;&lt;p&gt;

In summary, don't get this laptop for its capability to run two OSes; it will be a while before it can. Perhaps once there's a consumer VMware product for Mac OS X that boots XP I'll take a second look at it.
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;Update:&lt;/b&gt; In an interesting twist, Intel has firmly stated that you &lt;a href="http://www.apcmag.com/apc/v3.nsf/0/64E7EA353646669ECA2570F50012430B"&gt;can &lt;i&gt;definitely&lt;/i&gt; boot Windows XP&lt;/a&gt; with an EFI Core Duo system if the vendor provides a BIOS compatibility shim. Interesting! However, Ars Technica reports that they had &lt;a href="http://arstechnica.com/reviews/hardware/imac-coreduo.ars/7"&gt;no joy&lt;/a&gt; installing either XP or Vista on the new Intel iMac, so the shim is either not there right now or just not provided with the iMac.
&lt;/p&gt;&lt;p&gt;

But now that it seems at least technically possible, I bet we'll see a BIOS shim for the new laptop -- either factory installed, or as a download. Keep your eyes peeled; it may not be over yet!
&lt;/p&gt;

&lt;h3&gt;The Good Stuff&lt;/h3&gt;
&lt;p&gt;So far this has seemed way too negative. That's not really how I feel. Overall I have to say I really do like the laptop as a Mac.
&lt;/p&gt;&lt;p&gt;

Things like lack of S-video and a modem don't bother me personally. Now that wi-fi has really taken off, it's not the crisis it used to be to be stuck in a hotel room without a modem -- you just have to find the nearest Starbucks. If you are one of the 2% of users who really need to use S-video or a modem regularly, you can get an adapter dongle. No, it's not as nice. But it works fine, and it helps bring the price of the laptop down for the rest of us.
&lt;/p&gt;&lt;p&gt;

I think the built-in iSight is nice; while not always useful, it's one of those things that's nice to have standard. Video chat and other applications of the camera (think &lt;a href="http://flickr.com/"&gt;Flickr&lt;/a&gt;) will increase dramatically if the iSight is now going to be standard on every new machine. I don't like bringing my iSight with me when I travel, but I'd definitely use a built-in one to video chat with my wife if I had it.
&lt;/p&gt;&lt;p&gt;

And the speed, ah, the speed. This machine really is fast. If you are looking for a fast new Mac laptop, this is what you've been waiting for.
&lt;/p&gt;

&lt;h3&gt;What's up with the name?&lt;/h3&gt;
&lt;p&gt;I haven't even talked about the name yet. Apple used to sell the &lt;a href="http://www.apple.com/powerbook/"&gt;PowerBook&lt;/a&gt;. I guess they still do, at least for a while. The brand had good name recognition despite that awkward capital B in the middle that nobody actually bothered to type. 
&lt;/p&gt;&lt;p&gt;

But this new laptop has been rebranded and is no longer a PowerBook. Instead, it's called a "MacBook Pro". Hardly anybody I've talked to likes the name, myself included. But I might be able to guess at the rationale behind it. Bear with me.
&lt;/p&gt;&lt;p&gt;

"PowerBook" is a brand name. A PowerBook actually has three unique brands associated with it: "PowerBook", "Mac", and the superbrand "Apple". Personally, I think it's a very strong name, and it has the benefit of &lt;a href="http://lowendmac.com/orchard/05/1123.html"&gt;15 years&lt;/a&gt; of brand-building success behind it. People know what you're talking about when you say PowerBook.
&lt;/p&gt;&lt;p&gt;

MacBook Pro, on the other hand, is a brand extension. A double brand extension, really. "MacBook Pro" is an extension of "MacBook", which itself is an extension of "Mac". On the face of it, from everything the &lt;a href="http://www.amazon.com/exec/obidos/redirect?link_code=as2&amp;amp;path=ASIN/0060007737&amp;amp;tag=drewthaler-20&amp;amp;camp=1789&amp;amp;creative=9325"&gt;The 22 Immutable Laws of Branding&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=drewthaler-20&amp;l=as2&amp;o=1&amp;a=0060007737" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt; tell us, this is a much much weaker name. Why on earth did Apple decide to make this change?
&lt;/p&gt;&lt;p&gt;

The only reason that makes sense to me is that Apple must have decided that they're going to start consolidating the Mac brand. Rather than having separate brands under the Mac umbrella, everything Mac is now going to include Mac in the name. If that's true, then the "iBook" name will going away to be replaced by just plain "MacBook". "PowerMac" will go away, to be replaced by something like "Macintosh Pro". 
&lt;/p&gt;&lt;p&gt;

Why consolidate the Mac brand? Perhaps, and just perhaps -- this is wild speculation -- it's to get ready for a possible future move to OSX running on non-Apple PCs. Let me be clear here: I don't expect such a move of the OS to non-Apple PCs for &lt;i&gt;at least&lt;/i&gt; five years or more. But Apple of course has to be thinking about the possibility of competing with Microsoft in the future.
&lt;/p&gt;&lt;p&gt;

If they were to start letting OSX run on non-Apple PCs, they might want to rebrand "Mac OS X" to "Apple OS X" to make a distinction between the high-end Mac computer brand and other non-Mac computers. But doing that would weaken the Mac brand, right? So that may be why we're seeing the brand consolidation now, years before any of these other changes take place. It's about strengthening the brand in anticipation of possible weakening later.
&lt;/p&gt;&lt;p&gt;

Just a thought.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-113710063216152243?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/113710063216152243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=113710063216152243' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/113710063216152243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/113710063216152243'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2006/01/apples-new-laptop.html' title='Apple&apos;s new laptop'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-113332048562660192</id><published>2005-11-30T02:10:00.001-05:00</published><updated>2008-04-08T10:24:48.870-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>I'm so totally Extreme</title><content type='html'>&lt;a href="http://click.linksynergy.com/fs-bin/click?id=Z7VP2ShD4E0&amp;amp;offerid=77305.10000030&amp;amp;type=2&amp;amp;subid=0" &gt;&lt;IMG align="right" border=0 src="http://a248.e.akamai.net/7/248/2041/711/store.apple.com/Catalog/US/Images/airport_extreme_base_125.jpg" &gt;&lt;/a&gt;&lt;IMG border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Z7VP2ShD4E0&amp;amp;bids=77305.10000030&amp;amp;type=2&amp;amp;subid=0" &gt;&lt;p&gt;This weekend I finally upgraded my wireless network at home. For the past three or four years I've been using a second generation AirPort base station, which was 11Mbps with 40-bit WEP. It's been thoroughly out-of-date for a while now, but it met my needs, was rock-solid, and worked like a charm so I didn't feel the need to upgrade. And after all, 5.5Mbps is still more bandwidth than my real-world connection to the internet, so I knew that switching to the higher-bandwidth AirPort Extreme wasn't going to make a difference in simple web browsing.
&lt;/p&gt;&lt;p&gt;

But this week I finally broke down and made the jump to the latest and greatest. A combination of two things finally pushed me over the edge:&lt;ol&gt;&lt;li&gt;&lt;p&gt;I've been doing a lot more work lately that involves transferring things between machines in my office. Local transfers from machine-to-machine are where 54Mbps can really make a difference.&lt;/p&gt;

&lt;/li&gt;&lt;li&gt;&lt;p&gt;The signal strength wasn't so great everywhere in the house, and I wanted to use &lt;a href="http://arstechnica.com/reviews/hardware/airportexpress.ars/4"&gt;WDS&lt;/a&gt; with an &lt;a href="http://click.linksynergy.com/fs-bin/click?id=Z7VP2ShD4E0&amp;amp;offerid=77305.10000656&amp;amp;type=3&amp;amp;subid=0" &gt;AirPort&amp;nbsp;Express&lt;/a&gt;&lt;IMG border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Z7VP2ShD4E0&amp;amp;bids=77305.10000656&amp;amp;type=3&amp;amp;subid=0" &gt; to extend the range of my network.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Another small factor was that if I upgraded, I could have iTunes send its output directly to my stereo via &lt;a href="http://www.apple.com/airportexpress/airtunes.html"&gt;AirTunes&lt;/a&gt;. Personally I think AirTunes is kind of a gratuitous and somewhat goofy feature. It's certainly not enough to make me spend a couple of hundred dollars on new equipment. But I have to admit that once the other (much better) reasons pushed me over the edge, I was looking forward to giving it a shot.
&lt;/p&gt;&lt;p&gt;

So I made the plunge and bought an &lt;a href="http://click.linksynergy.com/fs-bin/click?id=Z7VP2ShD4E0&amp;amp;offerid=77305.10000030&amp;amp;type=2&amp;amp;subid=0" &gt;AirPort Extreme Base Station&lt;/a&gt;&lt;IMG border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Z7VP2ShD4E0&amp;amp;bids=77305&amp;amp;type=2&amp;amp;subid=0" &gt; and an &lt;a href="http://click.linksynergy.com/fs-bin/click?id=Z7VP2ShD4E0&amp;amp;offerid=77305.10000656&amp;amp;type=3&amp;amp;subid=0" &gt;AirPort&amp;nbsp;Express&lt;/a&gt;&lt;IMG border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Z7VP2ShD4E0&amp;amp;bids=77305.10000656&amp;amp;type=3&amp;amp;subid=0" &gt;, and hooked everything up. 
&lt;/p&gt;&lt;p&gt;

Perhaps because I like pain, or maybe just because I wanted to see if it would work, I decided to set up the AirPort network from a Windows laptop. Okay, the real reason is that my old TiBook recently died from catastrophic hinge failure and I couldn't find where I'd left the charger for the iBook, which meant that I didn't have a wireless-capable Mac handy.
&lt;/p&gt;&lt;p&gt;

Setting up the main base station worked like a charm. I plugged it in, ran the Windows version of the admin utility -- which I have to say is really very nice -- and saved the configuration from the old base station into a file on my desktop, then imported it into the new base station. Happily, it copied out my DSL PPPoE account and password. In the process I upgraded the wireless security from WEP to WPA, set my server box as the default host (&lt;a href="http://www.jiwire.com/glossary.htm?id=154"&gt;DMZ&lt;/a&gt;), and configured the base station so that it would syslog to one of my machines. Restarted the base station, connected with the new password, and everything worked flawlessly. Great!
&lt;/p&gt;&lt;p&gt;

Getting the Express set up to extend my network, however, was a little bit trickier. I started at the obvious place with the AirPort Express Assistant for Windows. But somewhere in the middle of the setup as it jiggled Windows XP and base station settings, it failed while reading from the base station with an error -4: "bad param". Tried again several times with the same result. Hmmm. Not so great, and virtually impossible to diagnose what went wrong.
&lt;/p&gt;&lt;p&gt;

Why, no problem, says I, I'll just configure it directly with the admin utility.
&lt;/p&gt;&lt;p&gt;

That's much easier said than done. I did get it done in the end, but it certainly didn't go as smoothly as I was hoping it would. There are a lot of non-obvious details that need to be just right before everything works. Most of the answers can be found in the admin utility's help if you know where and how to look, but it takes some digging.
&lt;/p&gt;&lt;p&gt;

Here are some tips from my experience with setting up WDS manually:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Terminology.&lt;/b&gt; You have the main, relay, and remote stations.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;b&gt;The main base station&lt;/b&gt; is the one connected to the internet via Ethernet.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Relay stations&lt;/b&gt; connect between base stations, and do not have an Ethernet connection.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Remote stations&lt;/b&gt; provide services to clients, and do not have an Ethernet connection.&lt;/li&gt;&lt;/ul&gt;As far as I can tell there's not a lot of practical difference between relay and remote, since both main and relays can be configured to accept client connections too. It may be the case that remote stations are able to dedicate more bandwidth to clients than main or relay stations, but I'm not sure about that. In any event it seems more like something you'd only be concerned about for a large-scale installation with lots of client computers and extremely heavy traffic -- I doubt it matters for home networks.&lt;/li&gt;&lt;li&gt;&lt;b&gt;MAC addresses.&lt;/b&gt; Before you start, you need to &lt;i&gt;write down&lt;/i&gt; the AirPort MAC addresses of all the base stations involved. It's on the outside of the base station, or you can get it from the base station chooser. If you do that, though, remember that the stations will be broadcasting different wireless networks at first. So you need to join each one in turn, then select it in the chooser (no, not &lt;a href="http://www.wellesley.edu/Computing/Printing/Chooser/chooser.html"&gt;that chooser&lt;/a&gt;) and write the AirPort MAC address down somewhere.&lt;/li&gt;&lt;li&gt;&lt;b&gt;"Distribute IP addresses"&lt;/b&gt; should only be set on the main base station, not on relays and remotes. Thankfully, the admin utility warns you about this.&lt;/li&gt;&lt;li&gt;&lt;b&gt;All stations must use the same channel.&lt;/b&gt; Pick a channel (I like 3 and 10) and set both base stations to it. The admin utility tells you that you can't use 'Automatic', but neglects to mention that all base stations have to use the same channel -- which is kind of an important detail.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Set up the main base station first, then relays, then remotes.&lt;/b&gt; When you set up a WDS main base station, you'll need to enter the MAC addresses for the WDS remote and relay stations that will be allowed to connect. It doesn't work if you go the other way, because a remote base station won't be able to connect to the main base station until the main base station has been configured.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Use different SSIDs (network names) at first.&lt;/b&gt; It doesn't matter whether base stations connected by WDS have the same network name or different names. &lt;a href="http://www.tomsnetworking.com/Sections-article78-page4.php"&gt;Toms Networking&lt;/a&gt; recommends that you use different SSIDs, while Apple's &lt;a href="http://manuals.info.apple.com/en/DesigningAirPortExtremeNetworksforWindows.pdf"&gt;Designing AirPort Extreme Networks for Windows&lt;/a&gt; recommends on page 38 that you use the same SSID. But if you plan on giving them the same name eventually, don't start out that way! Give the networks different names so that you can be sure you're connecting to the right base station when testing to make sure that it works. Once everything is working you may then decide to set them to the same SSID; it's up to you.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Know where the reset button is.&lt;/b&gt; If you make a mistake and can't find one of the base stations on the wireless network anymore, hold down the reset button for about seven seconds (until it starts flashing quickly) to give it a &lt;a href="http://www.macworld.com/weblogs/mac911/2004/08/000282/index.php"&gt;hard reset&lt;/a&gt;. The button is recessed, but can be pushed with a paperclip, staple, ball-point pen, or stereo miniplug.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Double-check all of your settings if you are importing settings from an older base station to a newer base station.&lt;/b&gt; At one point in the process I noticed that my main base station's transmission strength was apparently set to the lowest setting -- 10%, instead of 100%. I can only speculate about why that happened. The older base station didn't have adjustable signal strength, so perhaps it pulled in a zero value rather than the default of 100% when it imported my old configuration to the new base station.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Phew. Anyway, after a little bit of futzing around, I've got it working and I'm happy. The speed on the local network is much better, and the WDS extension has made the signal strength much stronger throughout the house. It wasn't too much of an ordeal and I got it all sorted out in an hour or two, but it was certainly harder than it should have been. Apparently &lt;a href="http://www.simongbrown.com/blog/2004/07/30/2_hours_to_setup_airport_express.html"&gt;I'm not the only one&lt;/a&gt; who thinks so, either.
&lt;/p&gt;&lt;p&gt;

But as a bonus to reward all my hard work, I can now have iTunes play through my stereo via AirTunes. Dude, I'm like so extreme.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-113332048562660192?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/113332048562660192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=113332048562660192' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/113332048562660192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/113332048562660192'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/11/im-so-totally-extreme.html' title='I&apos;m so totally Extreme'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-113069991865988096</id><published>2005-11-08T23:20:00.001-05:00</published><updated>2008-04-08T10:24:16.355-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ohio'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Ohio Needs Reform</title><content type='html'>&lt;p&gt;&lt;b&gt;[Update 11:20pm: Wow. The full results aren't yet in, but with about 79% of the votes counted it looks like all four of the RON issues got squashed badly. What a shame -- so many Ohioans will be disenfranchised by this, and the state will continue to be mired in economic woes. The current batch of crooks who got us into this mess will continue to rig the system to keep themselves in office. A sad day for Ohio.]&lt;/b&gt;
&lt;/p&gt;&lt;p&gt;

If you live in Ohio, you've probably heard about the &lt;a href="http://www.reformohionow.org/"&gt;Reform Ohio Now&lt;/a&gt; proposals that are on the ballot as Issues 2, 3, 4, and 5.
&lt;/p&gt;&lt;p&gt;

These are at issue in the election on November 8th. That's &lt;b&gt;TODAY&lt;/b&gt;! Make sure you get to the polls and vote YES on these issues!&lt;/p&gt;

&lt;h3&gt;What are these issues about?&lt;/h3&gt;
&lt;p&gt;I would recommend reading either the &lt;a href="http://www.reformohionow.org/content.jsp?content_KEY=577&amp;t=about"&gt;summary&lt;/a&gt; or the &lt;a href="http://www.reformohionow.org/content.jsp?content_KEY=583&amp;t=amendments"&gt;actual text&lt;/a&gt; yourself, but in a nutshell:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;b&gt;Issue 2 makes it easier for Ohioans to vote by mail&lt;/b&gt;. This is a growing trend in voting, since many precincts have lines of up to several hours to vote and many people can't take that kind of time off from work to vote. It's proven successful in other states, and it's long overdue here: Ohio has some of the most restrictive rules for absentee ballots in the nation.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Issue 3 puts limits on state campaign contributions&lt;/b&gt;. These limits are similar to the McCain-Feingold limits in place for national campaigns. These are designed as a step towards making sure that the super-rich can't have an undue influence on politics.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Issue 4 fights gerrymandering&lt;/b&gt;. This is what it's called when elected politicians redraw political boundaries to favor themselves. Gerrymandering leads to fractured districts and unfair elections, and is designed to artificially skew the balance so that the politicians elected do not actually represent the true mix of views in the state. In Ohio, many counties are sliced up into two or three different districts, and two congressional districts (OH-5 and OH-18) cover parts of &lt;i&gt;sixteen&lt;/i&gt; different counties. Ohio as a whole votes almost exactly 50-50 Republican vs Democratic, but out-of-control gerrymandering has conveniently adjusted the boundaries to disenfranchise voters so that our Congressional representatives are two-thirds Republican.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Issue 5 creates an independent panel to administer elections&lt;/b&gt;. Right now we have strongly partisan career politicians like Ken Blackwell in charge of oversight for the elections of themselves and their cronies, and they do a deliberately bad job of it -- wilfully disenfranchising thousands of Ohioans in order to push the vote in the direction they want it to go.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Issues 2, 3, 4, and 5 are from the people of Ohio&lt;/h3&gt;
&lt;p&gt;These issues come from people just like you and me, people who are fed up with the amount of corruption in Ohio. There's a phrase that describes the situation here, where the political machine is making the rules for itself and overseeing itself: "the fox guarding the henhouse". Not surprisingly, that fox has been burying its face in all the eggs it can steal.
&lt;/p&gt;&lt;p&gt;

Corruption? Our state has plenty. You've heard of Tom Noe, the coin dealer and state Republican crony who got $50 million in unaudited sweetheart investment contracts from the Ohio Bureau of Worker's Compensation, and was disgraced for allegedly embezzling and just outright "losing" up to $10 million of that money. He was recently indicted for money-laundering, accused of circumventing the campaign finance donation limits by giving people money that they would then donate to various campaigns. The hell of it is that the money he used was probably from that $10 million he "lost" of the state's money.
&lt;/p&gt;&lt;p&gt;

Follow the trail: crony given contract by corrupt Republican officials, crony uses that contract to steal money from the state, crony uses stolen money to make sure corrupt Republican officials get re-elected. It's a vicious circle, and we need a change.
&lt;/p&gt;&lt;p&gt;

A group named Ohio First has been trying to portray these amendments as coming from "special interests". But they're full of shit -- fact is, &lt;b&gt;they&lt;/b&gt; are the special interests. The average donation to Ohio First is $12,941. And remember, that's the &lt;i&gt;average&lt;/i&gt;. How many Ohioans do you know that can afford to donate that much to a political campaign? Not even a candidate. A campaign &lt;i&gt;against&lt;/i&gt; a couple of amendments. Meanwhile the average donation to &lt;a href="http://www.reformohionow.org/"&gt;Reform Ohio Now&lt;/a&gt; is $545. That reflects the large number of small donations (over three thousand and counting) from people like you and me across the state supporting the amendments.&lt;/p&gt;
&lt;h3&gt;Vote YES on Issues 2, 3, 4, and 5&lt;/h3&gt;
&lt;p&gt;On November 8th, vote for reform. Vote YES on Issues 2, 3, 4, and 5. While you're at it, I'd suggest voting YES on the following:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;YES on State Issue 1 -- investment in high-tech and Ohio businesses. Ohio needs to invest and plan for the future, and this seems like a good start.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cuyahoga residents should vote YES for County Issue 6 &amp;#8212; funding for &lt;a href="http://www.tri-c.edu/home/default.htm"&gt;Tri-C&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cuyahoga residents should also vote YES for County Issue 7. If this issue doesn't pass, funding for the Cuyahoga County Board of Mental Retardation and Developmental Disabilities will be cut by 60% and many programs that help retarded and developmentally disabled kids and adults will be cut.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Any other Brecksvillians out there? Here in Brecksville we've got &lt;a href="http://boe.cuyahogacounty.us/BOE/issues/municipal.htm#brecksville"&gt;Issue 14&lt;/a&gt;, which appears to be an adjustment of zoning height restrictions to make it easier to build &lt;a href="http://msnbc.msn.com/id/3225775/"&gt;McMansions&lt;/a&gt; in the new developments. Currently each McMansion has to get individual variances, which are almost always granted. I believe this would just make the variances permanent across the board. Personally, I am probably going to vote against it because I'm not in favor of McMansions in general -- they tend to be energy-wasteful and detract from the small-town atmosphere of Brecksville. But given their popularity around here and the &lt;a href="http://boe.cuyahogacounty.us/BOE/issues/municipal.htm#brecksville"&gt;deliberately vague wording&lt;/a&gt; of the issue, I'm afraid it's going to pass anyway.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-113069991865988096?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/113069991865988096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=113069991865988096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/113069991865988096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/113069991865988096'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/11/ohio-needs-reform.html' title='Ohio Needs Reform'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-113074561139905115</id><published>2005-10-31T01:34:00.001-05:00</published><updated>2008-04-08T10:23:47.295-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Thick as Thieves</title><content type='html'>&lt;p&gt;Have you noticed there've been an awful lot of politicians getting busted lately? I was curious so I started to make a list. &lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;b&gt;Jack Abramoff, famously influential Republican lobbyist&lt;/b&gt; with close connections to Tom DeLay. &lt;a href="http://releases.usnewswire.com/GetRelease.asp?id=51625"&gt;Indicted&lt;/a&gt; on five counts of wire fraud and one count of conspiracy to commit wire fraud, August 11, 2005.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Adam Kidan, influential Republican lobbyist and Abramoff's partner&lt;/b&gt;. &lt;a href="http://releases.usnewswire.com/GetRelease.asp?id=51625"&gt;Indicted&lt;/a&gt; on five counts of wire fraud and one count of conspiracy to commit wire fraud, August 11, 2005.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;David Safavian, Republican procurement chief at the White House Office of Management and Budget.&lt;/b&gt; &lt;a href="http://www.washingtontechnology.com/news/1_1/budget-policy-legislation/27001-1.html"&gt;Arrested&lt;/a&gt; and subsequently &lt;a href="http://releases.usnewswire.com/GetRelease.asp?id=54613"&gt;indicted&lt;/a&gt; for five counts of obstruction and related charges for lying to investigators in an attempt to cover up Abramoff's dealings. September 19, 2005.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Senator Bill Frist, Republican Senate Majority Leader&lt;/b&gt;. &lt;a href="http://msnbc.msn.com/id/9450770/"&gt;Under formal investigation by the SEC&lt;/a&gt; for insider trading, for dumping large quantities of HCA stock just before a bad quarterly report. Frist originally claimed the stock was held in a blind trust, but that was &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2005/10/23/AR2005102301201.html"&gt;proven completely false&lt;/a&gt;. No indictment yet, but seems very likely. September 23, 2005 and ongoing.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Congressman Tom DeLay, Republican House Majority Leader&lt;/b&gt;. &lt;a href="http://www.msnbc.msn.com/id/9507677/"&gt;Indicted&lt;/a&gt; on charges of conspiracy to break campaign finance laws. &lt;a href="http://www.msnbc.msn.com/id/9583433/"&gt;Indicted again&lt;/a&gt; on charges of felony money laundering just a few days later. September 28, 2005 and October 3, 2005.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Tom Noe, Ohio rare-coin dealer and top Republican donor&lt;/b&gt;. &lt;a href="http://toledoblade.com/apps/pbcs.dll/article?AID=/20051028/NEWS24/51028001/-1/NEWS"&gt;Indicted&lt;/a&gt; on three counts for illegally circumventing campaign finance limits to funnel money to the 2004 election campaign of George W. Bush. Also continues to be under heavy investigation for losing up to $12 million belonging to the State of Ohio that Republican buddies got the Workers' Comp Bureau to invest in an unprecedented, unsecured, and unaudited "rare coin mutual fund" that he ran. It's not a big leap to suggest that he may have been embezzling from the state and turning that money directly into campaign contributions to Republicans, but investigations are still pending. October 27, 2005.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;I. Lewis "Scooter" Libby, Vice-President Cheney's chief of staff&lt;/b&gt;. &lt;a href="http://releases.usnewswire.com/GetRelease.asp?id=55804"&gt;Indicted&lt;/a&gt; on charges of perjury and obstruction of justice for lying to investigators in the CIA leak case involving Valerie Plame Wilson. October 28, 2005.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Notice anything? Number one, they're all Republicans. Why do you think that is? If you are the type to foolishly insist that this is some sort of partisan thing, and all of the indictments are frame-ups or something, then why aren't Republicans retaliating by getting Democrats indicted the same way? Is it because the Dems are all evil and bad, and the saintly Republicans are "above all that" and prefer to practice squeaky-clean politics? Pfft. Yeah, that doesn't even pass the laugh test. Pull the other one.
&lt;/p&gt;&lt;p&gt;

Number two, they're all very big fish in their areas of Republican politics. Frist and DeLay are the Senate and House majority leaders, people. It doesn't get much bigger than that. The lobbyists are huge in their field, and wield vast amounts of influence with the money they command. Safavian was director of procurement at the White House. Libby is no mere functionary in the Vice-President's office, but rather his chief of staff. And Noe is so thoroughly wrapped up in Ohio state politics that &lt;b&gt;five out of the seven&lt;/b&gt; Ohio Supreme Court justices had to recuse themselves from a case that came before them as part of Noe's &lt;a href="http://en.wikipedia.org/wiki/Coingate"&gt;Coingate&lt;/a&gt; because they had received campaign funds from him. Look it up; he's connected to nearly every single major Republican office-holder in the state.
&lt;/p&gt;&lt;p&gt;

Worst of all, that whole list described above does not represent all the criminal activity that's gone on. It's just the stuff where they have enough evidence to go after these guys.
&lt;/p&gt;&lt;p&gt;

Beyond the criminal activity, don't even get me started on incompetence. Where do you think FEMA is going to be when there's an emergency near you? Will the National Guard have enough troops and equipment on this side of the globe to respond?
&lt;/p&gt;&lt;p&gt;

These guys are out of control.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-113074561139905115?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/113074561139905115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=113074561139905115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/113074561139905115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/113074561139905115'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/10/thick-as-thieves.html' title='Thick as Thieves'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-112732579887134969</id><published>2005-09-21T13:23:00.000-04:00</published><updated>2007-09-04T03:11:39.473-04:00</updated><title type='text'>Hurricane Rita</title><content type='html'>&lt;a href="http://maps.wunderground.com/data/640x480/2xg1_ir_anim.gif" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-rita.gif" width="320" height="240" alt="Animated Hurricane Rita" align="right" /&gt;&lt;/a&gt;&lt;p&gt;Would you believe there is &lt;b&gt;another&lt;/b&gt; nasty hurricane threatening the Gulf coast? Hurricane Rita is a &lt;s&gt;CAT 4&lt;/s&gt; &lt;b&gt;CAT 5&lt;/b&gt; storm which is moving westward across the Gulf of Mexico. It's currently projected to hit the coast of Texas.
&lt;/p&gt;&lt;p&gt;

(I've copied the satellite map pictured here to my own web space to reduce bandwidth usage; click to see a live update from Weather Underground.)
&lt;/p&gt;&lt;p&gt;

[&lt;b&gt;Update 11:50pm:&lt;/b&gt; Rita is now a CAT 5. It also has a measured central pressure of 898 millibars. The &lt;acronym title="central pressure"&gt;CP&lt;/acronym&gt; of a hurricane is a rough measure of its strength; the lower the pressure, the stronger the hurricane. Rita's &lt;acronym title="central pressure"&gt;CP&lt;/acronym&gt; makes it the &lt;b&gt;third most intense hurricane ever recorded&lt;/b&gt;, and it is likely to intensify over the next 12 hours. The measurement &lt;a href="http://www.wunderground.com/blog/SteveGregory/comment.html?entrynum=165&amp;tstamp=200509"&gt;may not have recorded&lt;/a&gt; the actual lowest pressure, either:
&lt;/p&gt;&lt;p&gt;

&lt;blockquote&gt;&lt;p&gt;DROPSONDE DATA FROM AN AIR FORCE RESERVE UNIT RECONNAISSANCE AIRCRAFT AT 623 PM CDT ... 2323Z ... INDICATED THE CENTRAL PRESSURE HAS FALLEN TO BELOW 899 MB...OR 26.55 INCHES.
&lt;/p&gt;&lt;p&gt;

THE DROPSONDE INSTRUMENT MEASURED 32 KT/35 MPH WINDS AT THE SURFACE...WHICH MEANS IT LIKELY DID NOT RECORD THE LOWEST PRESSURE IN THE EYE OF RITA. THE CENTRAL PRESSURE IS PROBABLY AT LEAST AS LOW AS 898 MB...AND PERHAPS EVEN LOWER.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Rita is now stronger than Katrina was at its strongest, and I repeat, it's likely to intensify tomorrow.]
&lt;/p&gt;&lt;p&gt;

[&lt;b&gt;Update Thu 1:00pm:&lt;/b&gt; Rita is expected to weaken to a CAT 3 or 4 prior to landfall, but the meteorologists at Weather Underground are saying that the storm surge will be equivalent to a CAT 5, just as Katrina's was.]
&lt;/p&gt;&lt;p&gt;

The Texas coast has a hardier shoreline that is not as fragile as the Louisiana/Alabama/Mississippi coasts, but the real concern is that it will do further damage to our country's energy infrastructure. A lot of oil drilling and refining infrastructure was damaged by Katrina, and Rita has the potential to damage a lot more -- and with the damage from Katrina still being repaired, this could be like kicking us when we're down.
&lt;/p&gt;&lt;p&gt;

We're all familiar with the way that Katrina drove up gas prices around the country to over $3/gallon. Prices have recovered since then, coming back down to a still-painful $2.69/gallon or so. This was not because refinery capacity magically recovered -- Katrina's damage to refineries is still there. What happened is that the undamaged refineries redirected their efforts toward making more gasoline as opposed to other oil products like heating oil, because gasoline was in such high demand and was selling for such a high price. That's a relief at the pump, but doesn't bode well for winter heating costs.
&lt;/p&gt;&lt;p&gt;

Now Rita is aiming right at a series of drilling platforms and refineries off the short of Texas. The primary danger for the average person's wallet is the refineries. If the absolute worst-case scenario is true, Rita could shut down a third of the already-reduced refinery capacity of the United States. Even if that happened for only a few days, it would be absolutely brutal to the economy and to your wallet.
&lt;/p&gt;&lt;p&gt;

Rita is still well on the east side of the Gulf of Mexico, and won't make landfall for a couple of days. Currently the NWS is projecting a Saturday morning landfall at 7am.
&lt;/p&gt;&lt;p&gt;

I expect that this will be the best source for Rita information over the next few days:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://theoildrum.com/"&gt;The Oil Drum&lt;/a&gt; - a progressive blog about Peak Oil. They have extensive information on Rita already.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Other places to keep your eye on include:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.wunderground.com/blog/JeffMasters/show.html"&gt;Jeff Masters at Weather Underground&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wunderground.com/blog/SteveGregory/show.html"&gt;Steve Gregory at Weather Underground&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nhc.noaa.gov/"&gt;National Hurricane Center&lt;/a&gt; from the National Weather Service&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;And I can't recommend this enough for detailed, easy-to-read background information:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dailykos.com/storyonly/2005/9/21/6404/58861"&gt;DarkSyde's OIL STORM RITA: Forecast &amp; Energy Primer&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;This also presents a difficult, perhaps no-win situation for President Bush. Should he act early to avoid potential damage from Rita? Obviously the answer is yes, because to do otherwise would be foolish. But unless he approaches it with extreme humility -- a sort of "we've now learned our lesson" approach -- he's going to be damned by most of the country for acting quickly to save white people and oil in Texas, while letting black people struggle and die for days in New Orleans. &lt;/p&gt;

&lt;p&gt;Does the President have a single drop of humility in him? I sure haven't seen any yet. What do you think?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-112732579887134969?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/112732579887134969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=112732579887134969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/112732579887134969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/112732579887134969'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/09/hurricane-rita.html' title='Hurricane Rita'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-112620951248761159</id><published>2005-09-09T10:27:00.000-04:00</published><updated>2007-09-04T03:10:00.234-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Changing the DNS query timeout in Windows XP</title><content type='html'>&lt;p&gt;I've been having some networking trouble lately. When my PC laptop is busy downloading a file, Windows XP starts failing to resolve DNS queries. So even simple lookups that I &lt;i&gt;know&lt;/i&gt; must be cached at multiple levels, like &lt;code&gt;www.google.com&lt;/code&gt;, start failing to resolve. Windows just times out after fifteen seconds and gives up.
&lt;/p&gt;&lt;p&gt;

Needless to say, this makes web browsing while downloading a file insanely frustrating. 
&lt;/p&gt;&lt;p&gt;

My Mac laptops don't seem to have the same problem. I have no idea whether this is a problem with my ISP, my wireless router, Windows itself, or some combination of the three. And frankly, as an end user I don't care and shouldn't have to care. I just want it to stop sucking.
&lt;/p&gt;&lt;p&gt;

I set out to see if I could increase the client-side DNS timeout so that Windows would be a little more forgiving about slow DNS responses. It turns out there &lt;b&gt;is&lt;/b&gt; a way to do that, though it's nearly impossible to find via a web search. (Even Windows experts, which I make no claim to be, &lt;a href="http://expertanswercenter.techtarget.com/eac/knowledgebaseAnswer/0,295199,sid63_gci973368,00.html"&gt;seem to have trouble with this one&lt;/a&gt; because it's so obscure.)
&lt;/p&gt;&lt;p&gt;

Here's the registry setting to increase the DNS client-side timeout in Windows 2000 and XP:
&lt;/p&gt;&lt;p&gt;

&lt;a href="http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/regentry/96406.mspx"&gt;HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ DNSQueryTimeouts&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;

&lt;ins&gt;[&lt;b&gt;Update Nov 3, 2006&lt;/b&gt;: Fixed the above link. It used to point &lt;a href="http://www.microsoft.com/resources/documentation/Windows/2000/server/reskit/en-us/Default.asp?url=/resources/documentation/Windows/2000/server/reskit/en-us/regentry/96406.asp"&gt;here&lt;/a&gt;, but that link now redirects you to the main page for the Windows 2000 resource kit. Remember, kids, &lt;a href="http://www.w3.org/Provider/Style/URI"&gt;cool URLs don't change&lt;/a&gt;.]&lt;/ins&gt;
&lt;/p&gt;&lt;p&gt;

Read the above link for details. The registry entry does not exist by default; you have to create it. I don't suggest you do this lightly unless you're familiar with &lt;a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/tools_regeditors.mspx"&gt;using regedit&lt;/a&gt; to tweak parameters.
&lt;/p&gt;&lt;p&gt;

&lt;img src="http://homepage.mac.com/drewthaler/images/blog-windows-dns-timeout-1.jpg" alt="Screenshot of regedit.exe" width="393" height="275" /&gt;
&lt;/p&gt;&lt;p&gt;

The default value when the property isn't present is documented to be "1 2 2 4 8 0", which appears to represent that 15-second total timeout. (15 = 1 + 2 + 4 + 8. It's not clear to me exactly what the other 2 is for; it may be redundant.)
&lt;/p&gt;&lt;p&gt;

I wanted something a little longer, so I quadrupled all the numbers to "4 8 8 16 32 0".
&lt;/p&gt;&lt;p&gt;

&lt;img src="http://homepage.mac.com/drewthaler/images/blog-windows-dns-timeout-2.jpg" alt="Screenshot of regedit.exe" width="354" height="316" /&gt;
&lt;/p&gt;&lt;p&gt;

Now I have a 60-second total timeout, with the final query given 32 seconds to get through. In practice this has proven to be a long enough timeout that Windows can continue to resolve DNS names even when my network connection is busy.
&lt;/p&gt;&lt;p&gt;

And that's good news. I'm much happier again, and I can continue to use my PC laptop without wanting to chuck it out the window every time I download a file.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-112620951248761159?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/112620951248761159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=112620951248761159' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/112620951248761159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/112620951248761159'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/09/changing-dns-query-timeout-in-windows.html' title='Changing the DNS query timeout in Windows XP'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-112611485788549280</id><published>2005-09-09T02:00:00.000-04:00</published><updated>2007-09-04T03:09:22.789-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Katrina's Aftermath</title><content type='html'>&lt;p&gt;Wow. Well, I've been meaning to post a wrapup to follow up my previous entry, but the unfolding events in New Orleans have left me a little shell-shocked. It's been difficult to gather my focus enough to write a coherent entry. This is going to be a long one, because I have dozens of links and a lot of pieces to put together.
&lt;/p&gt;&lt;p&gt;

As you probably know, the situation in New Orleans started out bad, and then went from bad to worse. But it didn't even slow down at that point -- it quickly passed through awful, lingered a while in horrific, sped up as it passed through &lt;acronym title="Oh my God"&gt;OMG&lt;/acronym&gt;, and ended up somewhere in "&lt;acronym title="what the fuck"&gt;WTF&lt;/acronym&gt; is going on!?"
&lt;/p&gt;&lt;p&gt;

Throughout the past week I've relied upon several sources for information. Many of those were the links I shared with you in my last entry. But I've also been very impressed by how thoroughly the reader-contributed diaries at &lt;a href="http://dailykos.com/"&gt;Daily Kos&lt;/a&gt; (in the sidebar on the right side) have covered the situation. Daily Kos is a political blog with a large community from the left and center. As with any community blog, like &lt;a href="http://slashdot.org/"&gt;Slashdot&lt;/a&gt;, you have to sometimes take things with a grain of salt. There are occasional wacky conspiracy theorists who read and post there, but there are also economists, scientists, authors, engineers, members of Congress, you name it.
&lt;/p&gt;

&lt;h3&gt;What happened&lt;/h3&gt;
&lt;p&gt;Southern Louisiana and the city of New Orleans specifically were &lt;a href="http://www.whitehouse.gov/news/releases/2005/08/20050827-1.html"&gt;declared a national emergency&lt;/a&gt; on August 27th, just prior to the hurricane's arrival. Then the governor of Louisiana requested specific funds and relief resources from the federal government the day before the hurricane arrived. Here's the &lt;a href="http://gov.louisiana.gov/Disaster%20Relief%20Request.pdf"&gt;governor's request for aid&lt;/a&gt;, dated August 28th, and the &lt;a href="http://www.whitehouse.gov/news/releases/2005/08/20050829-2.html"&gt;President's response&lt;/a&gt;, dated August 29th. 
&lt;/p&gt;&lt;p&gt;

I originally thought the local authorities had dropped the ball on early evacuation, but it appears that I might have been mistaken. The New Orleans area started evacuation and contraflow on &lt;a href="http://www.nola.com/news/t-p/frontpage/index.ssf?/base/news-4/1125211464249320.xml"&gt;Saturday&lt;/a&gt;, two days before the storm's Monday landfall. That's not bad. I think the problem was that people didn't take the hurricane seriously until everyone else was taking it seriously, so for many people evacuation waited until nearly the last minute. There was to my knowledge no coordinated attempt to use buses or trains to evacuate people without cars over the weekend.
&lt;/p&gt;&lt;p&gt;

Just before the hurricane arrived, many people who either chose not to or could not evacuate (many because they did not have cars, and there was no plan for using public transportation to evacuate) were moved out of the city of New Orleans into temporary shelters at the Superdome and convention center. Other scattered pockets took refuge elsewhere in the city. Some people are &lt;a href="http://dailykos.com/storyonly/2005/8/30/20833/9811"&gt;angry&lt;/a&gt; over this because it was unknown even at the time whether the Superdome could withstand the expected winds, which were expected to be up to 150&lt;acronym title="miles per hour"&gt;mph&lt;/acronym&gt;. But I think this anger is misplaced. This was the right move. For the short duration of the hurricane, the Superdome was probably the safest place to be. There is no situation in which the Superdome would have been &lt;i&gt;less safe&lt;/i&gt; than a house in New Orleans: if the wind had been strong enough to rip the roof off the Superdome, it would have been more than strong enough to flatten an ordinary home. Evacuating to large, well-built structures like the Superdome and convention center was absolutely the right thing to do for the duration of the hurricane.
&lt;/p&gt;&lt;p&gt;

I have to qualify that statement with "for the duration of the hurricane", of course, because of what happened next.
&lt;/p&gt;&lt;p&gt;

Astonishingly, the drowning city of New Orleans was closed off and nobody was allowed to enter or leave. For the people trapped in the flooded, burning city there was literally no place to go. The convention center and Superdome turned from safe havens into hellish deathtraps -- with nobody allowed in or out there was no food, no water, no sanitation, no medicine, no nothing. And this continued, unbearably, for days and days. As people were rescued from other areas of the city they were sent to one of these two locations, which only served to increase the crowding and filth because nobody was being let out. As Geraldo Rivera pointed out in this must-watch &lt;a href="http://www.crooksandliars.com/2005/09/02.html"&gt;emotional TV horror show&lt;/a&gt;, they could have just walked right out if they'd been allowed to.
&lt;/p&gt;&lt;p&gt;

It went on like that not for one day, not for two days, not for three days... but continued and grew worse over FIVE DAYS until finally, mercifully, someone got their act together. The human conditions down there are still awful this week, but the evacuation seems to be finally proceeding forward.
&lt;/p&gt;

&lt;h3&gt;Accountability&lt;/h3&gt;
&lt;p&gt;So who is responsible?
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;FEMA&lt;/b&gt;: To begin with, there appears to have been an utter breakdown in the effectiveness of &lt;acronym title="Federal Emergency Management Agency"&gt;FEMA&lt;/acronym&gt;, the Federal Emergency Management Agency. These are the guys that are supposed to move very quickly and mobilize state and local resources to handle emergencies and save lives. Instead of saving lives, we get lists like this from &lt;a href="http://constructiveinterference.blogspot.com/2005/09/local-failure-caused-by-fema.html"&gt;Constructive Interference&lt;/a&gt;:
&lt;/p&gt;&lt;p&gt;

&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mydd.com/story/2005/9/3/17282/81965"&gt;1000 folks from the Lafayette area with 500 boats&lt;/a&gt; head to NO to aid the rescue get turned back by FEMA.&lt;/li&gt;&lt;li&gt;&lt;a href="http://atrios.blogspot.com/2005_09_04_atrios_archive.html#112584666746336109"&gt;Wal-Mart trucks&lt;/a&gt; with food and water get turned back by FEMA.  More &lt;a href="http://www.dailykos.com/story/2005/9/6/16555/48649"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dailykos.com/story/2005/9/4/194841/3279"&gt;The USS Bataan&lt;/a&gt; off the coast of LA ready to help, but underused by FEMA.  See also &lt;a href="http://www.bataan.navy.mil/"&gt; here &lt;/a&gt;&lt;/li&gt;&lt;li&gt;Shipments of &lt;a href="http://atrios.blogspot.com/2005_09_04_atrios_archive.html#112584666746336109"&gt;diesel fuel&lt;/a&gt; being turned back by FEMA&lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.dailykos.com/story/2005/9/5/105538/7048"&gt;firemen from Houston&lt;/a&gt; turned away by FEMA&lt;/li&gt;&lt;li&gt;More &lt;a href="http://www.dailykos.com/comments/2005/9/5/16455/30830/45#45"&gt;fire fighters&lt;/a&gt; turned away.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.seaplanes.org/cgi-bin/briefs/index.cgi"&gt;Angel Flight South Central seaplanes&lt;/a&gt; getting a run around from FEMA&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nbc17.com/weather/4911701/detail.html?rss=tri&amp;psp=news"&gt;DMAT Teams&lt;/a&gt; available but still on call.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.redcross.org/faq/0,1096,0_682_4524,00.html"&gt;Red Cross&lt;/a&gt; kept out of New Orleans.  Note: this is actually attibuted to the state Homeland Security department.  More information on who is responsible for this decision would be helpful.  See also &lt;a href="http://www.dailykos.com/story/2005/9/5/05035/13900"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.thecarpetbaggerreport.com/archives/5167.html"&gt;Northcom&lt;/a&gt; ready to act, but not given needed orders.&lt;/li&gt;&lt;li&gt;&lt;a href=""&gt;Mobile medical&lt;/a&gt; lab stalled in Mississippi.  Doctors and hospitals offering aid but not getting response.  This article is a bit confusing as to whether the problem is at the state or federal level or both.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nytimes.com/2005/09/05/national/nationalspecial/05blame.html"&gt;NYT article&lt;/a&gt; discusses the controversy and provides additional claims of FEMA interfering generally and some specific examples.&lt;/li&gt;&lt;li&gt;Florida &lt;a href="http://www.sun-sentinel.com/news/local/florida/orl-caneboats0205sep02,0,4766048.story?coll=sfla-news-florida"&gt;airboaters&lt;/a&gt; stalled by FEMA.&lt;/li&gt;&lt;li&gt;Water tanker aircraft for fire fighting and Amtrack trains for evacuation. &lt;a href="http://www.fromtheroots.org/story/2005/9/3/19542/97952"&gt;See here.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.zwire.com/site/news.cfm?newsid=15147862&amp;BRD=1817&amp;PAG=461&amp;dept_id=68561&amp;rfi=6"&gt;Morticians&lt;/a&gt; turned away.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gazette.net/stories/090205/montcou165700_31903.shtml"&gt;Maryland fire fighters&lt;/a&gt; blocked by FEMA.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wwltv.com/local/stories/WWLBLOG.ac3fcea.html"&gt;Generators&lt;/a&gt; turned away by FEMA in Slidel.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;

&lt;p&gt;There's even more in the &lt;a href="http://constructiveinterference.blogspot.com/2005/09/local-failure-caused-by-fema.html"&gt;full story&lt;/a&gt; on CI. It seems pretty clear that rather than aiding and directing relief efforts to where they were needed most, FEMA acted as an awful hindrance to relief. 
&lt;/p&gt;&lt;p&gt;

Some ugly stories have come out about several of the leaders of FEMA. It's getting tedious to link everything, but essentially a lot of the leadership seems to be Bush cronies with no prior emergency management experience. Here's more on FEMA director &lt;a href="http://www.talkingpointsmemo.com/archives/week_2005_08_28.php#006405"&gt;Michael Brown&lt;/a&gt; (college roommate of Bush's campaign manager), Chief of Staff &lt;a href="http://thinkprogress.org/2005/09/06/fema-deputies/"&gt;Patrick Rhode&lt;/a&gt; (Bush's campaign event manager), and Deputy Chief of Staff &lt;a href="http://thinkprogress.org/2005/09/06/fema-deputies/"&gt;Scott Morris&lt;/a&gt; (marketing director and media strategist for Bush's campaign). None have any previous emergency response experience to speak of; their positions appear to be political patronage and nothing more. [&lt;b&gt;Update:&lt;/b&gt; TIME magazine reports that &lt;a href="http://www.time.com/time/nation/article/0,8599,1103003,00.html"&gt;Brown's resume&lt;/a&gt; appears to be thoroughly padded, making him a great deal less qualified than he claims -- which wasn't very qualified to begin with.] Whether by malice or incompetence, it seems likely that people like these appear to have utterly crippled FEMA's ability to respond.
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;The Executive Branch of Government&lt;/b&gt;: Yes, not the legislative or judicial branches of government... this was a failure of the executive. In our country we have the guys that make the laws, the guys that interpret the laws, and the guys that enforce the laws. This was a complete and utter failure of enforcement and execution.
&lt;/p&gt;&lt;p&gt;

A lot of people are angry at George Bush. A very few people are still trying to defend him, even though Bush's actions seem more and more indefensible every day. Here's my take: Although Bush wasn't running FEMA, he appointed the people that were. As President he had a responsibility to pick capable directors, and it's becoming clear that he didn't do that. Bush also sets the budget for FEMA, which by all accounts has been slashed considerably. (Why? Take your pick: tax cuts for the rich, or the war in Iraq, or both. But that's another topic.) 
&lt;/p&gt;&lt;p&gt;

The hell of it is that just last year FEMA and New Orleans ran a training scenario that is chillingly similar to what actually happened with Katrina. The scenario was entitled "&lt;a href="http://www.ohsep.louisiana.gov/newsrelated/incaseofemrgencyexercise.htm"&gt;Hurricane Pam&lt;/a&gt;". The first part of the training involved simply running through the scenario and seeing what happens. That was completed, but many loose ends were discovered -- including the fact that evacuees in the Superdome and other areas would be stranded with no place to go. &lt;b&gt;The second part of the training, where plans would have been developed to fix all the things that went wrong during the exercise, was dropped due to a lack of funding.&lt;/b&gt;
&lt;/p&gt;&lt;p&gt;

Like him or not, Bush is the de facto leader of our country. And dammit, the leader of our country should be proactively handling things like a leader. Take responsibility, fire people that screw up, get in there and do it yourself if you have to. That's the American way. Don't cower and hide and blame everything on your subordinates. (Unfortunately that's sometimes the American way too, but we're not as proud of that one.)
&lt;/p&gt;&lt;p&gt;

But Bush and the people under him have shown absolutely no leadership -- in fact, negative leadership. Really what we're seeing is that they have bungled it just absolutely beyond all recognition, and are too busy patting each other on the back to notice what the entire rest of the country has noticed -- that it's a giant steaming clusterfuck. I'm half afraid that we're just going to see Medals of Freedom all around and Michael Brown will be rewarded with a Supreme Court nomination. That really might make me lose it. 
&lt;/p&gt;&lt;p&gt;

Some of Bush's defenders have pointed out that hey, the mayor of New Orleans and the governor of Louisiana may share some of the blame. That's very possible. But all the documents and interviews I've seen suggest that they were screaming upward in the hierarchy for help even before the hurricane hit, and everything went to FEMA, who proceeded to drop the ball. FEMA could only be overridden by DHS (represented by Chertoff) or by Bush himself, neither of whom did anything. Under the mayor and governor prior to the hurricane, New Orleans achieved about 80% evacuation which isn't bad. And moving everyone who was left to the Superdome for the duration of the hurricane was the right thing to do. It really sounds like FEMA was the big screwup. Still, the mayor and governor are part of the executive branch too, so they will have to be open and accountable to the public for their actions as well.
&lt;/p&gt;&lt;p&gt;

(Some of the dumber or more desperate Bush apologists have been trying to claim that the mayor and governor should have ALL of the blame, leaving Bush and FEMA scot-free -- which is just a brown, drippy, steaming crock of bullshit.)
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;Update&lt;/b&gt;: Newsweek just published an article entitled "&lt;a href="http://www.msnbc.msn.com/id/9287434/"&gt;How Bush Blew It&lt;/a&gt;". Despite the unflattering title, it does not lay all the problems at Bush's feet. It's actually a pretty fair all-around discussion of the events and mistakes and problems of the executive branch's response to the storm. It reads like a strikingly honest assessment, which is something I'm not used to seeing from the press after several years of Iraq war cheerleading. Neither Bush, Chertoff, Brown, Blanco, nor Nagin come out looking all that good, frankly, though some look better than others. 
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;The Legislative Branch&lt;/b&gt;: There were failures in the legislative branch as well. Repeated abominations like the pork-filled transportation bill have diverted federal funds from where they can do the most good. (In this year's version, Alaska was awarded over $400 million to build bridges to a Senator's vanity... for no viable economic reason whatsoever.) Forward-thinking programs that would have slowed or reversed the erosion of the buffer around New Orleans were cut. Those are not as immediate as the failures in the executive branch, but the legislature's problems are more subtle and more entrenched, and probably more difficult to solve.
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;Southern Racism&lt;/b&gt;: [Added Sep 9th at 3:45pm.] It's coming out that the &lt;a href="http://www.cadenhead.org/workbench/news/2748"&gt;police chief of Gretna, Louisiana&lt;/a&gt; was apparently responsible for pinning people in New Orleans. The people who were trapped were predominantly black.
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;In an interview with UPI, Gretna Police Chief Arthur Lawson confirmed that his department shut down the bridge to pedestrians: "If we had opened the bridge, our city would have looked like New Orleans does now: looted, burned and pillaged."&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I don't think active 'drown as many darkies as we can' racism was at play here. (In the deep South you never know -- but I'm going to at least attempt to give him the benefit of the doubt. For now.) But if it's not that, then it's absolutely a matter of &lt;b&gt;race-based fear&lt;/b&gt;, the fear that comes as a result of practical segregation. That fear is strengthened by what's called 'structural racism', a long-standing problem in the US where race and economic class are tied together, and racial divisions strengthen class divisions and vice versa. 
&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Wow. I haven't I haven't even had a chance to get into the economic effects -- such as gas never seeing the underside of $3.00/gallon again because of damage to refineries and drilling, or heating costs quadrupling from 2003 prices because of damages to the natural gas supply from the Gulf. Or the environmental effects -- at least 20 drilling platforms were destroyed and are uncapped, and several large oil storage tanks have started leaking. Or the effect on our status as 'superpower', which appears to have been largely erased as a stunned world sees the country utterly unable to handle a thoroughly predictable disaster. (Although you know, a little dose of realism may be a good thing.) Or the very real possibility that all of the above economic effects will crash the housing bubble and start a real, full-fledged depression in the US and in the world.
&lt;/p&gt;

&lt;p&gt;But for now at least I can't go on. I need a break, and you probably do too.
&lt;/p&gt;&lt;p&gt;

I pray for everyone in the region, and I pray for our country. We badly need to regain our senses and do it quickly.
&lt;/p&gt;&lt;p&gt;

If you haven't donated yet, now is the time. I recommend giving to the &lt;a href="http://www.redcross.org/donate/donate.html"&gt;Red Cross&lt;/a&gt; first. If you have anything left over, the &lt;a href="http://www.aspca.org/"&gt;&lt;acronym title="American Society for the Prevention of Cruelty to Animals"&gt;ASPCA&lt;/acronym&gt;&lt;/a&gt; is doing what they can for the animals in the region. Both are fine organizations with a lot of able volunteers who will make your dollar go far.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-112611485788549280?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/112611485788549280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=112611485788549280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/112611485788549280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/112611485788549280'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/09/katrinas-aftermath.html' title='Katrina&apos;s Aftermath'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-112529329731105617</id><published>2005-08-29T12:28:00.000-04:00</published><updated>2007-09-04T03:06:38.418-04:00</updated><title type='text'>Hurricane Katrina</title><content type='html'>&lt;p&gt;&lt;b&gt;[Updates at the end of this post.]&lt;/b&gt;
&lt;/p&gt;&lt;p&gt;

As I write this at about 1:30 AM eastern time, the outer edges of Hurricane Katrina have just started to touch Louisiana and New Orleans. Nobody yet knows how it will turn out.
&lt;/p&gt;&lt;p&gt;

Katrina is a full-fledged Category Five hurricane with constant winds of 150-175 miles per hour, and gusting up to 200 &lt;acronym title="miles per hour"&gt;mph&lt;/acronym&gt;. If that isn't bad enough, 20 to 25 feet of flooding is expected. That much water will basically destroy all buildings up to the third floor. The NOAA had an extremely sobering description of the anticipated damage up for a while (&lt;a href="http://weather.noaa.gov/cgi-bin/iwszone?Sites=:laz069"&gt;original&lt;/a&gt; seems to be gone, this via &lt;a href="http://atrios.blogspot.com/2005_08_28_atrios_archive.html#112526941275284387"&gt;Atrios&lt;/a&gt;):
&lt;/p&gt;&lt;p&gt;

&lt;blockquote&gt;&lt;p&gt;MOST OF THE AREA WILL BE UNINHABITABLE FOR WEEKS...PERHAPS LONGER. AT LEAST ONE HALF OF WELL CONSTRUCTED HOMES WILL HAVE ROOF AND WALL FAILURE. ALL GABLED ROOFS WILL FAIL...LEAVING THOSE HOMES SEVERELY DAMAGED OR DESTROYED.
&lt;/p&gt;&lt;p&gt;

THE MAJORITY OF INDUSTRIAL BUILDINGS WILL BECOME NON FUNCTIONAL. PARTIAL TO COMPLETE WALL AND ROOF FAILURE IS EXPECTED. ALL WOOD FRAMED LOW RISING APARTMENT BUILDINGS WILL BE DESTROYED. CONCRETE BLOCK LOW RISE APARTMENTS WILL SUSTAIN MAJOR DAMAGE...INCLUDING SOME WALL AND ROOF FAILURE.
&lt;/p&gt;&lt;p&gt;

HIGH RISE OFFICE AND APARTMENT BUILDINGS WILL SWAY DANGEROUSLY...A FEW TO THE POINT OF TOTAL COLLAPSE. ALL WINDOWS WILL BLOW OUT.
&lt;/p&gt;&lt;p&gt;

AIRBORNE DEBRIS WILL BE WIDESPREAD...AND MAY INCLUDE HEAVY ITEMS SUCH AS HOUSEHOLD APPLIANCES AND EVEN LIGHT VEHICLES. SPORT UTILITY VEHICLES AND LIGHT TRUCKS WILL BE MOVED. THE BLOWN DEBRIS WILL CREATE ADDITIONAL DESTRUCTION. PERSONS...PETS...AND LIVESTOCK EXPOSED TO THE WINDS WILL FACE CERTAIN DEATH IF STRUCK.
&lt;/p&gt;&lt;p&gt;

POWER OUTAGES WILL LAST FOR WEEKS...AS MOST POWER POLES WILL BE DOWN AND TRANSFORMERS DESTROYED. WATER SHORTAGES WILL MAKE HUMAN SUFFERING INCREDIBLE BY MODERN STANDARDS.
&lt;/p&gt;&lt;p&gt;

THE VAST MAJORITY OF NATIVE TREES WILL BE SNAPPED OR UPROOTED. ONLY THE HEARTIEST WILL REMAIN STANDING...BUT BE TOTALLY DEFOLIATED. FEW CROPS WILL REMAIN. LIVESTOCK LEFT EXPOSED TO THE WINDS WILL BE KILLED.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Most of the area has been evacuated, but about a hundred thousand people who don't own a car have been relocated to the Superdome and other shelters. It's unknown whether the Superdome can withstand that kind of wind and flooding if it gets hit full on -- there's a very frightening possibility that it might become a death trap. 
&lt;/p&gt;&lt;p&gt;

The brand-new (literally, it's nine days old) the &lt;a href="http://www.weather.com/blog/weather/"&gt; Weather Channel blog&lt;/a&gt; has some excellent commentary from the meteorologists themselves, and so far at least I find it a lot more informal and interesting than watching TV. &lt;a href="http://www.weather.com/blog/weather/8_7281.html"&gt;This personal note&lt;/a&gt; from Lucas about his father and grandmother reminds us how many, many people are affected by this storm across the country. If they can keep the blog updated through the day tomorrow then it should be a very good source of information. &lt;s&gt;Highly recommended.&lt;/s&gt; (&lt;b&gt;Update:&lt;/b&gt; Not much going on there now that Katrina has made landfall -- probably too busy today. Weather Underground has some slightly better info at the link below.)
&lt;/p&gt;&lt;p&gt;

Please, pray for everyone in the area. If you want to take action, please, &lt;a href="http://redcross.org/donate/donate.html"&gt;give money to the Red Cross&lt;/a&gt;. A cash donation is &lt;i&gt;infinitely&lt;/i&gt; better than a donation of goods -- especially for an emergency like this. They buy in bulk direct from the appropriate distributor (often at cost) and deliver it right where it's needed.
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;Update:&lt;/b&gt; More blogging sources: &lt;a href="http://insomnia.livejournal.com/599039.html"&gt;Mark Kraft&lt;/a&gt; is collecting eyewitness reports of people who didn't evacuate. Sounds like some people are going to be blogging til the power goes out. &lt;a href="http://teece.blogspot.com/2005/08/big-one-for-nola.html"&gt;Teece&lt;/a&gt; has more, and ends on the disturbing comment "I would have liked to have seen New Orleans." The eye is now &lt;a href="http://www.wunderground.com/radar/radblast.asp?&amp;ID=LIX&amp;type=N0Z"&gt;visible&lt;/a&gt; on long-range radar, at least until the radar is destroyed by the storm. The &lt;a href="http://www.wunderground.com/blog/index.html?range=updated"&gt;Weather Underground blogs&lt;/a&gt; are also good sources.
&lt;/p&gt;&lt;p&gt;

Here's that Red Cross link again: &lt;a href="http://redcross.org/donate/donate.html"&gt;Please donate.&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;Update (11am ET):&lt;/b&gt; More blogs describing it as it happens:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.nola.com/weblogs/nola/"&gt;Times-Picayune&lt;/a&gt; reporters sheltering inside the TP building. Some of the reports are chilling.&lt;/li&gt;&lt;li&gt;&lt;a href="http://eyesonkatrina.blogspot.com/"&gt;Sun Herald&lt;/a&gt; reporters.&lt;/li&gt;&lt;li&gt;&lt;a href="http://neworleans.metblogs.com/"&gt;Metroblogging New Orleans&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.irishtrojan.com/"&gt;The Irish Trojan&lt;/a&gt;&lt;/li&gt;&lt;li&gt;And there's even a &lt;a href="http://www.flickr.com/groups/45871688@N00/"&gt;Flickr group&lt;/a&gt; with pictures.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://www.wwltv.com/sharedcontent/breakingnews/stories/082905ccjrrhNewsKatrina.44c8318.html"&gt;Pieces of the Superdome's roof&lt;/a&gt; are peeling away&lt;s&gt;, but so far it appears to be just the foamy membrane and not the structural steel&lt;/s&gt;. (&lt;b&gt;Update 11:40am ET:&lt;/b&gt; AP is &lt;a href="http://news.yahoo.com/s/ap/20050829/ap_on_re_us/katrina_superdome"&gt;reporting&lt;/a&gt; that a few chunks of metal have come off leaving the interior exposed to the sky, but they are relatively small. (20' x 5', which is small compared to the size of the dome.) [&lt;b&gt;12:30pm ET:&lt;/b&gt; &lt;a href="http://www.nola.com/weblogs/nola/index.ssf?/mtlogs/nola_nolaview/archives/2005_08.html#074799"&gt;NOLA now has pictures of the roof&lt;/a&gt;]. Originally I heard 100,000 souls there, but now the numbers being reported are more like 9,000 or 10,000 (or 26,000, or ... you name it). Why? Part of that may be because they were running security and bag checks at the door (oh my God, have we progressed to this?) and there was still a huge line outside as the winds started to get really, really bad.
&lt;/p&gt;&lt;p&gt;

Here's that Red Cross link again: &lt;a href="http://redcross.org/donate/donate.html"&gt;Please donate.&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-112529329731105617?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/112529329731105617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=112529329731105617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/112529329731105617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/112529329731105617'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/08/hurricane-katrina.html' title='Hurricane Katrina'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-112487712205986916</id><published>2005-08-24T04:55:00.000-04:00</published><updated>2007-09-04T03:04:52.911-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>United Federation of Chat</title><content type='html'>&lt;p&gt;Google has just come out with &lt;a href="http://talk.google.com/"&gt;Google Talk&lt;/a&gt;, their new &lt;acronym title="Instant Messaging"&gt;IM&lt;/acronym&gt; service.
&lt;/p&gt;&lt;p&gt;

&lt;img src="http://www.google.com/talk/images/status.gif" alt="Google Talk screenshot" align="right" width="235" height="328" /&gt;The application part of it is very pretty; looking at the &lt;a href="http://www.google.com/talk/start.html"&gt;screenshots&lt;/a&gt;, it's essentially &lt;a href="http://www.apple.com/macosx/features/ichat/"&gt;iChat&lt;/a&gt; for Windows. Simple, clean, and easy to use.
&lt;/p&gt;&lt;p&gt;

In fact, it looks so much like iChat that it probably borders on copyright-infringing, but hey -- that's for Google and Apple to work out between themselves. It's &lt;a href="http://jabber.org"&gt;Jabber&lt;/a&gt;-based, supports &lt;acronym title="Secure Sockets Layer"&gt;SSL&lt;/acronym&gt;, and seems very nice overall.
&lt;/p&gt;&lt;p&gt;

But an &lt;acronym title="Instant Messaging"&gt;IM&lt;/acronym&gt; service is an &lt;acronym title="Instant Messaging"&gt;IM&lt;/acronym&gt; service, and we've got too many of them. The &lt;b&gt;real&lt;/b&gt; news is buried in the middle of a page called "Additional Resources". That's where Google quietly announces that they are starting an initiative to &lt;a href="http://www.google.com/talk/developer.html#service"&gt;merge all the separate &lt;acronym title="Instant Messaging"&gt;IM&lt;/acronym&gt; networks into one&lt;/a&gt;. Emphasis mine:
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;b&gt; What is "service choice" and how does Google Talk enable it?&lt;/b&gt;
&lt;/p&gt;&lt;p&gt;

Service choice is something you have with email and, for the most part, with your regular phone service today. This means that regardless of whom you choose as your email service provider (Gmail, Hotmail, Yahoo! Mail, your school or ISP, etc), you can email anyone who is using another service provider. The same applies to phone service. You can call someone even if they do not use the same phone company as you do. This allows you to choose your service provider based on other more important factors, such as features, quality of service, and price, while still being able to talk to anyone you want.
&lt;/p&gt;&lt;p&gt;

Unfortunately, the same is not true with most popular &lt;acronym title="Instant Messaging"&gt;IM&lt;/acronym&gt; and &lt;acronym title="Voice over IP"&gt;VOIP&lt;/acronym&gt; networks today. If the people you want to talk to are all on different &lt;acronym title="Instant Messaging"&gt;IM&lt;/acronym&gt;/&lt;acronym title="Voice over IP"&gt;VOIP&lt;/acronym&gt; services, you need to sign up for an account on each service and connect to each service to talk to them.
&lt;/p&gt;&lt;p&gt;

We plan to partner with other willing service providers to enable federation of our services. &lt;b&gt;This means that a user on one service can communicate with users on another service without needing to sign up for, or sign in with, each service&lt;/b&gt;.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;What the... federation? Whoa, you mean I won't need to have a separate ICQ number and &lt;acronym title="AOL Instant Messenger"&gt;AIM&lt;/acronym&gt; account and Yahoo Messenger account and MSN Chat account to keep in touch with all of my friends and family and work contacts? Why, that ... that would actually be good for the end user. Unpossible!
&lt;/p&gt;&lt;p&gt;

Crazy as it seems, it looks like Google has a shot at doing it. Rather than standardizing on one network, their description makes me think they are taking a network-to-network bridge approach. So you'd still use your existing account and chat application, and you'd still have all the network-specific features you were used to, but you'd be able to talk to more people. Perfect. I would also expect, given Google's track record, that it would be done 'right': ie, it would be decentralized and all the networks would be peers. Networks that join up would not be beholden to Google in any way.
&lt;/p&gt;&lt;p&gt;

If that's so, then it seems likely that we'll see consolidation in reverse order of marketshare: all the small players will join up with Google immediately because it's good business sense for them: Their networks suddenly become huge and they are free to differentiate themselves on software alone. Mid-size networks like &lt;a href="http://www.icq.com/"&gt;ICQ&lt;/a&gt; will probably follow soon thereafter. Yahoo and MSN might hold out for longer because they would hate to give in to Google, but popular demand from their users will make it necessary.
&lt;/p&gt;&lt;p&gt;

And then there was one.
&lt;/p&gt;&lt;p&gt;

The big one, &lt;acronym title="America OnLine"&gt;&lt;a href="http://aol.com/"&gt;AOL&lt;/a&gt;&lt;/acronym&gt;, will probably be harder to win over. I don't have a solid source for current &lt;acronym title="Instant Messaging"&gt;IM&lt;/acronym&gt; marketshare numbers, which is partly because it's a confusing mess since so many people are forced to use multiple &lt;acronym title="Instant Messaging"&gt;IM&lt;/acronym&gt; services. But the data I've been able to find suggest that &lt;acronym title="America OnLine"&gt;AOL&lt;/acronym&gt; and &lt;acronym title="AOL Instant Messenger"&gt;AIM&lt;/acronym&gt; have a massive dominance in the &lt;acronym title="Instant Messaging"&gt;IM&lt;/acronym&gt; field, perhaps covering about 50-70% of all &lt;acronym title="Instant Messaging"&gt;IM&lt;/acronym&gt; users. The problem, of course, is that &lt;acronym title="AOL Instant Messenger"&gt;AIM&lt;/acronym&gt; is proprietary and &lt;acronym title="America OnLine"&gt;AOL&lt;/acronym&gt; has refused to open it up for a long time now. 
&lt;/p&gt;&lt;p&gt;

I don't know what will happen there. Clearly Google thinks it's worth a shot. And &lt;acronym title="America OnLine"&gt;AOL&lt;/acronym&gt; has opened up the &lt;acronym title="AOL Instant Messenger"&gt;AIM&lt;/acronym&gt; network before, for iChat, so it's possible they'll do it again in the name of an open standard. But the company's sluggish history with moving onto the Internet and supporting email and web standards suggests that they will only be dragged into compliance kicking and screaming; as long as there's a buck to be made by being incompatible they would rather be incompatible. It's possible that for quite a while we'll probably be faced with &lt;acronym title="AOL Instant Messenger"&gt;AIM&lt;/acronym&gt; on one side and everyone else on the other. While not perfect, that would at least be better than what we have now.
&lt;/p&gt;&lt;p&gt;

So what do you think? Are you concerned that Google has got its sticky fingers into too much stuff? Got any links to actual &lt;acronym title="Instant Messaging"&gt;IM&lt;/acronym&gt; marketshare numbers? Let me know.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-112487712205986916?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/112487712205986916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=112487712205986916' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/112487712205986916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/112487712205986916'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/08/united-federation-of-chat.html' title='United Federation of Chat'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-111957811638374852</id><published>2005-07-28T18:00:00.000-04:00</published><updated>2007-09-04T03:03:52.261-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Apple's future with Intel</title><content type='html'>&lt;p&gt;&lt;i&gt;Or, how I learned to stop worrying and love x86&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;

It's been a while since I've posted. Work and family has kept me very busy lately. But since my last post the Mac world has received big news which would be impossible to let go without comment: Apple is switching the Macintosh computer to Intel processors. The &lt;a href="http://www.apple.com/quicktime/qtv/wwdc05/"&gt;keynote video stream&lt;/a&gt; where Steve made the announcement is still worth watching if you haven't seen it yet.
&lt;/p&gt;&lt;p&gt;

Enough time has passed that I'm going to fast-forward through the obvious comments:
&lt;/p&gt;&lt;p&gt;

&lt;ul&gt;&lt;li&gt;&lt;b&gt;Why switch?&lt;/b&gt; PowerPC clock speeds were stagnant, and temperatures and power consumption were staying too high. Fixing those problems was possible, but would have required a lot of expensive investment from Apple. And the problems wouldn't stay fixed: Apple would have to keep paying to push the development of the PowerPC, as they've been doing for years now. It finally reached the point where the price just wasn't worth it. Every other reason suggested is secondary.&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Did I see it coming?&lt;/b&gt; Like a lot of people, I knew how much of the OS ran on x86 to begin with, and was well aware that it was an open possibility. Personally I figured it was inevitable that Mac OS X would run on x86 eventually. It's just happening a little sooner and in a more dramatic fashion than I had thought. I didn't anticipate the abandonment of PowerPC.&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;The leaks beforehand had all the hallmarks of being authentic and deliberate.&lt;/b&gt; As soon as I saw them coming out I felt that they were probably true. The leaks went to real news sources first, not the rumor sites. I believe the first mention came in the Wall Street Journal, and the WSJ's factual reporting is second to none. They would not have printed it if it hadn't been confirmed in some way. (Their opinion page is another matter.) And the Journal's Walt Mossberg seems to be a friend of Steve Jobs; he's been granted special early access to all sorts of Apple technologies and usually gives them glowing reviews. The WSJ is a friendly voice to Apple and they would be an excellent place to leak and start creating a buzz.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Now that that's all out of the way, let's move on. By the way, although I have friends at Apple and I'm probably covered by a ton of NDAs over the years, I want to emphasize that I'm not disclosing any confidential information here. This is all personal speculation based on publicly-available information.&lt;/p&gt;

&lt;h3&gt;&lt;a name="why-intel"&gt;&lt;/a&gt;Why Intel?&lt;/h3&gt;
&lt;p&gt;Why did Apple switch to Intel specifically? And what about the details? A lot of folks have been freaking out and wondering why Apple didn't say anything specifically about x86-64 or &lt;a href="http://amd.com/"&gt;AMD&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;First up, I'm pretty sure the cost savings to Apple will be more than just the CPU. The talk I've heard says that Intel offers bulk discounts to vendors who switch to Intel across the board, and Apple seems like a likely candidate for such a switch. Intel makes a a lot more than just CPUs, after all -- audio chips, SCCs, ethernet controllers, I/O processors, SATA controllers, and PCI chipsets, just to name a few. Apple already uses a lot of non-CPU Intel chips in Macs, Airport base stations, and iPods. It's certainly feasible that Apple might be going all-Intel-all-the-time. 
&lt;/p&gt;&lt;p&gt;

Nor is it just chips, either. Remember, Intel designs &lt;a href="http://intel.com/products/desktop/motherbd/index.htm"&gt;motherboards&lt;/a&gt; too. Right now Apple does its board design in-house, which creates a significant lead time for product development as new boards are tested and reworked. Discounted Intel boards -- perhaps fully tested and qualified before they even reach Infinite Loop -- could be yet another potential cost savings. Apple has a penchant for pushing design boundaries with iMacs and laptops, true, but the company still does a brisk business selling desktop machines where space is not at a premium. Besides, Intel has been stuffing Pentiums into tiny spaces lately -- witness their recent &lt;a href="http://www.wired.com/news/technology/0,1282,67664,00.html?tw=wn_7techhead"&gt;clone of the Mac mini&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;

Could AMD compete with all that Intel has to offer? Frankly, it seems unlikely. 
&lt;/p&gt;&lt;p&gt;

The door will still be open for AMD and other x86 chip vendors. I don't think Apple is going to start using Intel-specific features that AMD can't compete with -- that would be a foolish return to the single-chip-source problems that plagued Apple with the PowerPC. It's likely that the companies have made a deal where Apple commits to Intel for some number of years on negotiated terms, and thereafter the door is open to renegotiate or seek a better deal. So AMD might still get their foot in the door eventually. If Intel starts causing problems you bet Apple will switch to AMD or someone else; but as long as they offer a good deal they will be difficult to beat.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="64-bitness"&gt;&lt;/a&gt;64-bitness&lt;/h3&gt;
&lt;p&gt;What about 64-bit support? Some folks were upset because Apple had done all this work toward 64-bit PowerPC and seems to now be ditching it. That work absolutely is not wasted. Anyone who thinks Apple is suddenly ditching 64-bit computing should put down the crack pipe -- it's not gonna happen. Sure, after Intel came up with the all-but-failed and incompatible &lt;a href="http://en.wikipedia.org/wiki/IA-64"&gt;IA-64&lt;/a&gt;/Itanium architecture, AMD turned around and created a much more popular backward-compatible architecture called &lt;a href="http://en.wikipedia.org/wiki/X86-64"&gt;x86-64&lt;/a&gt;. Point to AMD. But Intel at least recognized its mistake and &lt;a href="http://en.wikipedia.org/wiki/EM64T"&gt;cloned&lt;/a&gt; x86-64 for use in recent chips.
&lt;/p&gt;&lt;p&gt;

Apple may not make the jump to 64-bit Intel chips in its very first release, though I think it's at least possible that they might. But if they start with 32-bit chips, I will guarantee that they'll be on 64-bit chips within the year. And further, that they'll be going with the x86-64 architecture rather than the Itanium. It's the only decision that makes sense.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="should-you-care"&gt;&lt;/a&gt;Should you care?&lt;/h3&gt;
&lt;p&gt;My personal opinion is that as a consumer you probably won't need to care about the transition.
&lt;/p&gt;&lt;p&gt;

Think about it: why do you buy a Macintosh? Do you really care about the chip that's inside it? No. What you want from a Mac is that you want the nice user experience, you want your apps to work, and you don't want the machine to stink up your desktop and crash and be virus-ridden like Windows.
&lt;/p&gt;&lt;p&gt;

Apple's switch to x86 will not change anything about the operating system or the applications: it will look and work exactly the same as your current Mac. It will still be just as stable and easy-to-use, all of your software will still run, all of your data will copy over and work just fine, and no viruses are going to magically jump over from Windows onto your Mac just because the hardware is the same.
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;Should you delay hardware purchases while you wait for the new machines?&lt;/b&gt; Well, you could. Apple seems to be expecting a certain number of consumers to make that choice -- they have more cash on hand than ever before ($7.5 billion USD), which it's pretty clear is a buffer against an anticipated temporary decline in Mac sales. 
&lt;/p&gt;&lt;p&gt;

But the new machines won't be out for a couple of years. The first new ones might not be all that great, either; you may want to wait a few months for the second generation. Personally I'm planning on following my normal upgrade schedule: I'll keep my dual 2GHz G5 til it's on its last legs or until I get new free hardware, whichever comes first. The typical Mac lifetime is around four years (as opposed to two for PCs), and that's lengthened a bit by the way PowerPC clock speeds have been lagging, so I probably won't need to upgrade until the new machines are out anyway. As for my laptop, a late-model TiBook, it's getting pretty elderly. I wouldn't mind getting a new PowerPC laptop right now if I could afford it -- but so far furniture and family stuff has delayed me and I don't really need a new one badly enough yet.
&lt;/p&gt;&lt;p&gt;

So for now I think it's not a big deal: buy a new Mac if you want one and don't worry about it. As we get closer to the release of the first Intel Macs, though, the dropoff in Mac sales will be steeper. People will naturally wait for the new machines.
&lt;/p&gt;&lt;p&gt;

It'll be interesting to see what Jobs does with the release of the new machines: Will the release date be known or widely anticipated, for example Macworld SF 2007? Or will they get sprung on everyone unexpectedly? Several years of watching how Steve Jobs does things leads me to suspect the latter -- they will probably release the machines at least four months earlier than anyone expects. But it's an open question.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="compatibility-and-speed"&gt;&lt;/a&gt;Compatibility and speed&lt;/h3&gt;
&lt;p&gt;Apple is including a way to run PowerPC apps which it is calling Rosetta. As reported by &lt;a href="http://news.com.com/The+brains+behind+Apples+Rosetta+Transitive/2100-1016_3-5736190.html"&gt;C|Net&lt;/a&gt; and &lt;a href="http://wiredblogs.tripod.com/cultofmac/index.blog?entry_id=1128154"&gt;Wired&lt;/a&gt;, this is &lt;a href="http://transitive.com/"&gt;Transitive's&lt;/a&gt; multipurpose DR emulator.
&lt;/p&gt;&lt;p&gt;

In an ironic twist, I've heard that Microsoft is also using Transitive's emulator ... but to translate x86 to PowerPC so that old games can run on the next-gen Xbox. Man. What's next -- cats and dogs living together?
&lt;/p&gt;&lt;p&gt;

I've tried out the emulator on a development system. Rosetta delivers great performance for simple apps. For a geek like me it's really cool: PowerPC apps just work transparently, and they run fast too!
&lt;/p&gt;&lt;p&gt;

However, anything that is heavily Altivec-enhanced will probably take a big hit when running under the emulator compared to running on a G5. The emulator does not emulate Altivec, so the app will first fall back to unvectorized floating-point, which could drop its speed to 25% of the vectorized floating-point. Then it would incur the cost of emulation on top of that. So some specialized operations running through the emulator might in theory be as much as 5x slower than on a comparable G5 system. As soon as the app goes native, however, it will gain all of its performance back and more.
&lt;/p&gt;&lt;p&gt;

But that only affects heavily vectorized applications. Your word processor will continue to work fine under emulation and will in fact probably be faster than before: the extra CPU speed will give it a boost. Games are mostly pumping video textures out using OpenGL, so they will probably not be affected.
&lt;/p&gt;&lt;p&gt;

Probably the most visible area where you'll see applications slow down is anything that uses QuickTime to compress or decompress video. That includes video playback; frame rates may drop significantly under some codecs. Why? Remember, Rosetta is not a mixed-mode architecture; it runs an entire app from top to bottom. And QuickTime loads and runs inside your application. So even though a native version of QuickTime will be available to native apps, an emulated app will run emulated QuickTime which will be much slower. If I've got all that right, then you can bet Apple is making an extra push to evangelize QuickTime developers to port as quickly as possible.
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;G4 emulation&lt;/b&gt;: Someone asked me the other day whether Apple might upgrade the emulator, which currently emulates a PowerPC G3, to emulate a G4 with Altivec. Frankly I doubt that will happen. It would take a big investment of time and money. And the benefit Apple would get from doing that is only in the short term, during the transition period where you want all the extra speed possible out of the emulator. After a while CPU speeds will increase so much that it just won't matter. The ROI (return on investment) just isn't there; too much work and too little benefit.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="classic"&gt;&lt;/a&gt;Classic&lt;/h3&gt;
&lt;p&gt;Apple has not announced plans for making the Classic environment run on the Intel machines. As a practical matter the current release of x86 Tiger does not support Classic. But have you noticed that they have not vocally announced that Classic is dead, either? 
&lt;/p&gt;&lt;p&gt;

My guess is that Apple may be working on porting Classic, unannounced. There's a not-insignificant minority of Mac software that still needs it. And Apple has a long history of unbroken compatibility which it would be a shame to end.
&lt;/p&gt;&lt;p&gt;

In a lot of ways Classic is just a normal application: a lot of hardware-specific details were abstracted out of &lt;acronym title="Mac OS 9"&gt;OS9&lt;/acronym&gt; during its final years. The emulator doesn't need to be ported, after all: there's no reason why you couldn't run Classic's 68K-to-&lt;acronym title="PowerPC"&gt;PPC&lt;/acronym&gt; emulator inside the new &lt;acronym title="PowerPC"&gt;PPC&lt;/acronym&gt;-to-x86 emulator. 
&lt;/p&gt;&lt;p&gt;

Of course, in other ways Classic is still very 'special'; there are &lt;a href="http://darwinsource.opendarwin.org/10.4/xnu-792/osfmk/ppc/PseudoKernel.c"&gt;many hacks&lt;/a&gt; all over xnu for it that give it special access to supervisor-level PowerPC stuff which Rosetta isn't going to emulate. Still, it seems like it'd be well worth Apple's time to sic a couple of guys on it for a year or two -- the potential gain is huge.
&lt;/p&gt;&lt;p&gt;

I suspect there are probably some doubts about whether it's technically possible. That's why there hasn't been a big announcement one way or another. But I'll go out on a limb and say there's a good chance someone will figure out a way to make it work.
&lt;/p&gt;&lt;p&gt;

&lt;h3&gt;&lt;a name="windows-emulation"&gt;&lt;/a&gt;Windows emulation&lt;/h3&gt;
&lt;p&gt;Here's an interesting one. Running x86 will make it a lot easier to run Windows applications on your Mac. Things like &lt;a href="http://www.microsoft.com/mac/products/virtualpc/virtualpc.aspx?pid=virtualpc"&gt;Virtual PC&lt;/a&gt; will run just about at full speed. Of course, Microsoft might not be very interested in porting Virtual PC to the new architecture, since Mac OS X just got a lot closer to becoming a competitor to Windows. if past history is any indication they'll probably do it eventually, but I bet they will drag their heels.
&lt;/p&gt;&lt;p&gt;

Other options exist, of course, such as &lt;a href="http://www.vmware.com/"&gt;VMware&lt;/a&gt; and &lt;a href="http://www.winehq.com/"&gt;WINE&lt;/a&gt;. It seems &lt;i&gt;very&lt;/i&gt; likely that VMware is working on porting their software to x86 Tiger right now, and &lt;a href="http://darwine.opendarwin.org/"&gt;DarWINE&lt;/a&gt; is already underway.
&lt;/p&gt;&lt;p&gt;

Personally I think this would be an interesting thing for Apple to investigate. They might choose to be hands-off and just bundle VMware, Virtual PC, or DarWINE, but all of these are a little clunkier than what Apple prefers. It's possible that Apple might choose to enter the market themselves and deliver integrated Win32 emulation in some way.
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;Dual-booting into Windows&lt;/b&gt;: This sort of falls under this category. As others have noted, in addition to virtual PCs, it will be possible to dual-boot or triple-boot your Mac. Darwin can easily support the partition map styles used on Windows, so there's no reason you couldn't have a Linux partition, a Windows partition, and a Mac OS X partition. Mac OS X's built-in BSD and X11 are so good, however, that there's probably not a lot of reason for anyone who's not a Linux developer to dual-boot into Linux.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="other-hardware-manufacturers"&gt;&lt;/a&gt;HP, Dell, and more&lt;/h3&gt;
&lt;p&gt;What about all the talk about whether Apple could or should release Mac OS X in a general release to other PC makers, like HP and Dell? Some people think that would've been a better idea. This attitude is exemplified by the somewhat goofy article &lt;a href="http://www.thetechzone.com/?m=show&amp;id=283"&gt;Apple's Colossal Disappointment&lt;/a&gt; which was posted to &lt;a href="http://apple.slashdot.org/apple/05/07/26/2043200.shtml?tid=179&amp;tid=3"&gt;Slashdot&lt;/a&gt; recently.
&lt;/p&gt;&lt;p&gt;

I call the article goofy because the author pays no attention whatsoever to business realities, nor does he seem to grasp the concept that policies may change over time. His basic complaint is that Apple is limiting its OS to run on its own hardware for the time being, and he thinks that's a mistake. (Or a "colossal disappointment", to use his exaggerated phrase.)
&lt;/p&gt;&lt;p&gt;

Here's my take. There were three possible ways Apple could have used its x86 code.
&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Switch the Mac hardware to x86&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Allow a select few PC vendors to ship hardware that runs Mac OS X.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Release Mac OS X widely for anyone and everyone with a PC, the way Microsoft releases Windows.&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;Apple started with item one for the reasons mentioned above -- the PowerPC has been weighed in the balance and found wanting. But the second two courses of action are not immediately feasible, nor are they wise business decisions.
&lt;/p&gt;&lt;p&gt;

Sure, they are potentially desirable goals that are at least on Apple's radar. I guarantee you Steve Jobs is thinking about them; when interviewed by Fortune magazine he mentioned that three of the biggest PC makers have repeatedly asked him to license Mac OS X for them to bundle. (My guess: the big three are HP/Compaq, Dell, and Sony.)
&lt;/p&gt;&lt;p&gt;

But it makes absolutely no sense to do all of those things at once.
&lt;/p&gt;&lt;p&gt;

What do you think would happen if Apple switched to x86 and immediately let others release x86 machines with Mac OS X too? It would undercut Mac hardware sales in a big way. Apple has been burned by cloning before in the 1990's. The circumstances are different enough now that they may try it again, but they will definitely start out slowly and carefully. It will be several years before you see anyone but Apple shipping Mac OS X.
&lt;/p&gt;&lt;p&gt;

How about making a widespread general release? First of all, you have the same problem as above where Mac hardware sales are undercut. But okay, perhaps you might make that up with increased software sales. No big whoop. But the real cost comes in the support infrastructure. Mac hardware is fairly dependable and predictable, and Apple does a good job with the small amount of tech support that is needed. But making a widespread release would suddenly skyrocket the number of support calls being made -- people would buy it for their JalopyTech 3000 computer and something would break. Apple gets a call. Frankly, Apple doesn't have the support infrastructure to handle a twenty-fold increase in phone calls. It might be possible to get there in the long run, but it won't happen overnight.
&lt;/p&gt;&lt;p&gt;

The correct course of action from a business perspective is to do exactly what Apple is doing -- switch their own machines only at first. The other things will still remain possible future directions, and I think that both are likely in the long run. But Apple is an "old" company by tech industry standards, and doesn't plan on biting off more than it can chew at any one time.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="the-lockdown"&gt;&lt;/a&gt;The Lockdown&lt;/h3&gt;
&lt;p&gt;Will Apple use &lt;a href="http://arstechnica.com/news.ars/post/20050614-4991.html"&gt;LaGrande&lt;/a&gt; as part of a scheme to make sure Mac OS X is running on Mac hardware? Maybe. But it seems very likely to me that Apple won't try TOO hard. They want to discourage the casual user from running an unsupported configuration, and they will. But it's not worth the effort (and would frankly be counterproductive) to lock out the hardcore geeks. 
&lt;/p&gt;&lt;p&gt;

A small amount of 'geek piracy' will cost Apple practically nothing in hardware sales. Contrary to their huge presence on the internet, the actual real-world market share of geeks is fairly small. The vast majority of Apple's and Microsoft's markets are people who wouldn't know how to perform that sort of hack, and wouldn't want to, because they know they wouldn't get support for it. Overall it's far simpler to just buy a Mac in the first place. 
&lt;/p&gt;&lt;p&gt;

Honestly, it's like free advertising... let the geeks hack OSX to run on their machines. Once most geeks start using OSX their prejudices evaporate and they quickly get hooked on it, talk to their friends about it, recommend it, and so on. And that will ultimately grow the Mac's marketshare.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="further-reading"&gt;&lt;/a&gt;Further Reading&lt;/h3&gt;
&lt;p&gt;A few interesting articles in case you missed them:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/index.html?http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_intro/chapter_1_section_1.html"&gt;Universal Binary Programming Guidelines&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://news.com.com/The+brains+behind+Apples+Rosetta+Transitive/2100-1016_3-5736190.html"&gt;The brains behind Apple's Rosetta: Transitive&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://arstechnica.com/columns/mac/mac-20050607.ars"&gt;Picking up the pieces: John Siracusa mourns the PowerPC&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://arstechnica.com/news.ars/post/20050614-4991.html"&gt;Will Apple use LaGrande to lock down OS X?&lt;/a&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/7898615-111957811638374852?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/111957811638374852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=111957811638374852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111957811638374852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111957811638374852'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/07/apples-future-with-intel.html' title='Apple&apos;s future with Intel'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-111604507719599800</id><published>2005-05-13T23:24:00.000-04:00</published><updated>2007-09-04T03:01:09.439-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>A brief history of purity at Apple</title><content type='html'>&lt;p&gt;I was reading &lt;a href="http://weblogs.mozillazine.org/ben/archives/008131.html"&gt;Ben Goodger's take&lt;/a&gt; on the recent Safari-KHTML kerfuffle. He's basically right. What I find particularly amusing is that ten years ago Apple would have been on the opposite side of the debate... with Apple fighting for purity and the open-source guys just putting in a quick hack to make it work.
&lt;/p&gt;&lt;p&gt;

It took Apple quite a while to get over its obsessions with purity in software design. Don't get me wrong; purity isn't a bad thing at all. In fact it's an important goal to strive for. But you have to make compromises to ship a useful product sometimes.
&lt;/p&gt;&lt;p&gt;

Ten years ago, more or less, Mac programmers like me were trying to deal with lovely gems that came out of Apple like these:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;b&gt;Apple Events&lt;/b&gt; -- in theory a great concept which used an incredibly flexible and extensible tagged-data interface. Problem was that its API and implementation were so annoyingly pure that they required allocation of a lot of temporary objects and a lot of memory got copied around needlessly. In the end it was much slower than any contemporary RPC/IPC call you could imagine.&lt;br /&gt;&lt;br /&gt;(Today: Apple Events have been kept alive, although with the implementation optimized and the API expanded to be faster and less pure. Several even-less-elegant but faster-and-easier methods of RPC/IPC became available with OSX and were quickly adopted by many grateful programmers.)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;AppleScript&lt;/b&gt; -- in theory another great concept, designed around an abstracted open scripting architecture which could support multiple scripting dialects, and which allowed those flexible and extensible bits of tagged data from the Apple Event manager to be passed around. But only one dialect was ever completed, and the architecture wound up making it painful to implement from the developer's point of view. Heck, even the one-and-only dialect was fairly clunky from the user's point of view. This might make you wonder whom exactly it was designed for.&lt;br /&gt;&lt;br /&gt;(Today: AppleScript has stayed alive too, although the way developers and users actually use it in practice frequently disobeys the pure object-verb syntax of the original design. And what AppleScript support is out there generally comes for free from AppKit these days. Do you know anyone who's actually written code to properly parse a 'whose' clause lately?)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;AOCE&lt;/b&gt;, or &lt;b&gt;Apple Open Collaboration Environment&lt;/b&gt; -- in theory a great concept, trying to create a system that integrated mail, address books, digital signatures, networking, and more before all of these things were widespread. Its problem was that rather than attacking each problem individually, it tried to do them all at once. And it had a nicely object oriented design, but rather than allowing direct access to any of the dozens of classes or hundreds of members, it created accessors for every single operation. Ultimately it collapsed under its own weight. It was monolithic, huge, and incredibly difficult to understand. One of the &lt;a href="http://developer.apple.com/documentation/mac/aoceapi/Contents.html"&gt;Inside Macintosh: AOCE&lt;/a&gt; books was almost 1400 pages long -- big, 8.5" x 11" pages too. My phone book was smaller. And that book was only one of at least three...&lt;br /&gt;&lt;br /&gt;(Today: Deceased, just like all those trees.)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Open Transport&lt;/b&gt; -- a networking stack and API that had a very theoretically pure design and was supposed to, in theory and if you used it right, deliver rockin' performance. It did deliver better performance than the older MacTCP, but it was generally much too obnoxious for most developers to use directly. The most popular way to use it was via a wrapper library such as &lt;a href="http://sourceforge.net/projects/gusi/"&gt;GUSI&lt;/a&gt; that made it more socket-like.&lt;br /&gt;&lt;br /&gt;(Today: Deceased. On OSX, Apple re-implemented the APIs with glue that calls through to Unix sockets.)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Newton&lt;/b&gt; -- another very pure concept. A tablet that you can just write on, and it will just recognize your handwriting! Cool! Electronic book! Electronic paper! The problem is that the technology and/or design clearly wasn't quite up to the task. It was big, clunky, expensive, and slow. The handwriting recognition technology was good in theory but &lt;a href="http://www.improvidentlackwit.com/lackwit/2004/10/beat_up_martin_.html"&gt;notoriously imperfect in practice&lt;/a&gt;, but Apple stuck with it anyway.&lt;br /&gt;&lt;br /&gt;(Today: Deceased. A few years later, when Palm did basically the same product, they put in a hack called &lt;a href="http://en.wikipedia.org/wiki/Graffiti_%28Palm_OS%29"&gt;Graffiti&lt;/a&gt; so that they didn't have to solve the problem of generalized handwriting recognition.)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;OpenDoc&lt;/b&gt; -- a very nice idea that was (and probably still is) ahead of its time. Rather than documents being things created by applications, they were just collections of objects which were essentially peers and had defined relationships to each other. If anything, OpenDoc was less a victim of its design and probably a victim of its circumstances: it was C++ and required COM, which was burdensome in terms of both performance and licensing, and it had to run on a rather lackluster and nonstandard OS which limited its portability.&lt;br /&gt;&lt;br /&gt;(Today: Deceased. But interestingly, Apple is just now starting to regain OpenDoc-like functionality with things like KVC, bindings, and CoreData. Thirteen years later.)&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;I think you can see what I'm getting at here. Apple being chastised for putting in quick hacks to make things work, rather than going for purity? By a bunch of Linux coders? Ah, sweet sweet irony.&lt;/p&gt;

&lt;h3&gt;Branching and Integration&lt;/h3&gt;
&lt;p&gt;I definitely feel the pain of the KHTML guys. But in the end what happened was inevitable.
&lt;/p&gt;&lt;p&gt;

See, one way or another Apple wound up on a branch. I don't know whether Apple chose to deliberately make incompatible changes, or if KHTML refused to accept some of their changes and forced them out on a branch. But regardless of your interpretation that's the way it ended up. And that was the first step towards KHTML's problems.
&lt;/p&gt;&lt;p&gt;

There should be (but probably isn't) a lesson in Software Engineering 101 about what happens when you have work proceeding on two different branches of a source tree. Integration -- the unpopular gruntwork everyone loves to hate -- starts to rear its ugly head. As long as the teams devote roughly the same amount of time to developing their branches, the branches grow in parallel and each spends a roughly equal amount of time integrating changes back and forth. 
&lt;/p&gt;&lt;p&gt;

But what happens when one of those branches suddenly has a great deal of work invested in it, and the other doesn't? The team maintaining the less-vigorous branch starts spending more and more of their time on integration and less on development. Integration sucks; it's a necessary evil, but nobody likes doing it. Quickly it becomes less like fun and more like work. So the less-vigorous branch is in danger of withering even further.
&lt;/p&gt;&lt;p&gt;

It's made exponentially worse if the less-vigorous branch ever refuses some of the changes in the more-vigorous branch, because that causes the source bases to diverge even further. Now not only is there more integration work, but it's &lt;i&gt;harder&lt;/i&gt; too. If the team is made up of part-time volunteers it can kill their enthusiasm for the project completely.
&lt;/p&gt;&lt;p&gt;

In a nutshell, that's pretty much what is happening (or has happened) with Apple's full-time engineering team and KHTML's part-time engineering team. Apple exacerbated the problem with what some are calling "code bombs", ie releases of an entire tree at once, but you're fooling yourself if you think the same problem would not exist regardless. The problem is really in the quantity of changes being made. Is it Apple's obligation to go back and do all the work to make their changes work on Konqueror? Not at all.
&lt;/p&gt;&lt;p&gt;

It kinda sucks for the KHTML guys, but the solution is clear even if they don't want to admit it: transition the upper levels over from the less-vigorous branch over to the more-vigorous branch. Rather than always integrating lots of changes from B back into A, start using B and port a few changes from A forward into B. It sounds like this is what Maciej suggested.
&lt;/p&gt;&lt;p&gt;

Happily, it sounds like &lt;a href="http://www.kdedevelopers.org/node/view/1046"&gt;they are pursuing something like this&lt;/a&gt; even as we speak.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-111604507719599800?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/111604507719599800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=111604507719599800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111604507719599800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111604507719599800'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/05/brief-history-of-purity-at-apple.html' title='A brief history of purity at Apple'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-111316558401563441</id><published>2005-04-10T15:35:00.000-04:00</published><updated>2007-09-04T03:00:24.359-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><title type='text'>Hey check me out -- I'm Dancin'! I'm Dancin'!</title><content type='html'>&lt;a href="http://www.hitachigst.com/hdd/research/recording_head/pr/PerpendicularAnimation.html" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-get-perpendicular.jpg" border="0" align="right" width="150" height="124" alt="Get Perpendicular" /&gt;&lt;/a&gt;&lt;p&gt;Hitachi recently announced &lt;a href="http://news.bbc.co.uk/2/hi/technology/4411649.stm"&gt;perpendicular recording&lt;/a&gt; technology, which is meant to improve the density at which bits can be put down on hard disks.
&lt;/p&gt;&lt;p&gt;

Storage density is exactly that -- the density at which information can be packed onto a storage medium like a hard disk. As density increases, that means that you can fit more data into the same size space, or fit the same amount of data into a smaller space, or both.
&lt;/p&gt;&lt;p&gt;

Over the years storage density has been increasing steadily. This has led to larger-capacity drives in physically smaller containers. Twenty years ago hard disks were clunkier and held a lot less data. 20&lt;acronym title="megabyte"&gt;MiB&lt;/acronym&gt; hard disks could be purchased but were expensive and rare. Today if you purchase a computer you'll probably get a 50&lt;acronym title="gigabyte"&gt;GiB&lt;/acronym&gt; or larger hard disk, or over 2500 times the capacity, and it will take up a much smaller space. That's why the tiny little &lt;a href="http://storefront.linksynergy.com/fs-bin/store?eid=Z7VP2ShD4E0&amp;amp;offerid=77305&amp;amp;stid=2&amp;amp;subid=" &gt;iPod&lt;/a&gt; mini can hold 6&lt;acronym title="gigabyte"&gt;GiB&lt;/acronym&gt; of data.
&lt;/p&gt;&lt;p&gt;

But this rapidly increasing density has led to a problem. Magnetic storage technology is nearing its limits; today we are making bits so small and packing them so closely together that if we go any smaller, bits are in danger of flipping spontaneously from external factors. Since the bits are where your data is stored, you can't have them flipping arbitrarily -- because then you can't read what you just wrote. It'd be like trying to write on an etch-a-sketch that someone is shaking.
&lt;/p&gt;&lt;p&gt;

The arbitrary point at which this starts to happen and data is lost is called the &lt;a href="http://www.extremetech.com/article2/0,1558,1154213,00.asp"&gt;superparamagnetic limit&lt;/a&gt;. Storage technology is getting very close to the superparamagnetic limit. Since bits need to be kept large enough that this doesn't happen, that in turn means that magnetic hard drives are close to their theoretical maximum density.
&lt;/p&gt;&lt;p&gt;

Hitachi has come up with a dodge that avoids the superparamagnetic limit for a little while longer. Rather than arranging data bits so that their magnetic poles aligned linearly along the surface of the disk pointing at each other (longitudinal recording), Hitachi is arranging them so that their magnetic poles are aligned parallel to each other and pointing away from the surface of the disk (perpendicular recording), with corresponding innovations in how the bits are read and written. This vertical alignment makes them less vulnerable to flipping and again increases the possible storage density. The result is that magnetic bits can be packed several times more densely than before, which means that drives will continue to be able to be made even smaller and higher-capacity than before. For example, rather than 6&lt;acronym title="gigabyte"&gt;GiB&lt;/acronym&gt; iPod minis this will eventually make it possible to have 60&lt;acronym title="gigabyte"&gt;GiB&lt;/acronym&gt; iPod minis.
&lt;/p&gt;&lt;p&gt;

It's all very serious and interesting and geeky.
&lt;/p&gt;&lt;p&gt;

So why exactly did they chose to promote this technology with a &lt;a href="http://www.hitachigst.com/hdd/research/recording_head/pr/PerpendicularAnimation.html"&gt;crazy Schoolhouse-Rock-style video&lt;/a&gt; including "&lt;a href="http://www.storagereview.com/guide2000/ref/hdd/op/actActuator.html"&gt;Actuator&lt;/a&gt; Man" and little rectangular bits disco dancing?
&lt;/p&gt;&lt;p&gt;

Good question. Don't get me wrong, I think the video's great... I'm just a little baffled. Then again, it fits right in with &lt;a href="http://www.digital-sanyo.com/BURN-Proof/HD-BURN/index.html"&gt;Sanyo's HD-BURN promotion&lt;/a&gt;. Mr. CD-R, doubling of charming points!
&lt;/p&gt;&lt;p&gt;

Sometimes this is a bizarre industry I work in. But I'm glad people have a sense of humor about it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-111316558401563441?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/111316558401563441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=111316558401563441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111316558401563441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111316558401563441'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/04/hey-check-me-out-im-dancin-im-dancin.html' title='Hey check me out -- I&apos;m Dancin&apos;! I&apos;m Dancin&apos;!'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-111268012448063787</id><published>2005-04-05T01:05:00.000-04:00</published><updated>2007-09-04T02:59:47.244-04:00</updated><title type='text'>Google Satellite Maps</title><content type='html'>&lt;p&gt;&lt;a href="http://maps.google.com/"&gt;Google Maps&lt;/a&gt; just added an option for satellite photos. And I have to say ... wow. That is just wicked cool.&lt;/p&gt;

&lt;p&gt;Not every location is covered by a high-resolution satellite photo, but a lot of places are. In particular, my town of &lt;a href="http://maps.google.com/maps?q=Brecksville,OH&amp;amp;spn=0.018260,0.017381&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;Brecksville&lt;/a&gt; is available at the highest zoom level. I can see my house!
&lt;/p&gt;&lt;p&gt;

Play around with it for a while. Zoom in and out. It's incredibly fun. Here are a few neat locations to start with:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=1151+N.+Marginal+Road,Cleveland,+OH&amp;amp;ll=41.509438,-81.690066&amp;amp;spn=0.009130,0.008690&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;Hornblower's Barge and Grill&lt;/a&gt; in Cleveland. Zoom all the way in, and it's due north of the marker, in the water by the airport. The long, skinny ship is the &lt;a href="http://www.usscod.org/"&gt;U.S.S. Cod&lt;/a&gt;, a WWII submarine. Just southwest of that you can also see the Rock and Roll Hall of Fame (the odd white building with the triangular glass window and bullseye in front) and Browns Stadium. Looks like a building obscures the view of the &lt;a href="http://www.city.cleveland.oh.us/around_town/city_highlights/landmarks/freestamp.html"&gt;Free Stamp&lt;/a&gt;, which is just south of there.&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=1+Infinite+Loop,Cupertino,+CA&amp;amp;ll=37.331879,-122.028094&amp;amp;spn=0.036521,0.034761&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;Apple's campus&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=1+Microsoft+Way,Redmond,+WA&amp;amp;ll=47.642748,-122.129270&amp;amp;spn=0.009130,0.008690&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;Microsoft's campus&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=Golden+Gate+Brg,Francisco,+CA&amp;amp;sll=37.829300,-122.479387&amp;amp;spn=.146084,.139046&amp;amp;sspn=.103882,.128141&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;Golden Gate Bridge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=1+Mt+Lee+Dr,Hollywood,+CA&amp;amp;ll=34.134543,-118.319836&amp;amp;spn=0.009130,0.008690&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;The Hollywood Sign&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=Central+Park+W+at+79th+St,New+York,+NY&amp;amp;ll=40.781304,-73.968855&amp;amp;spn=0.009130,0.008690&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;Central Park&lt;/a&gt; in New York City&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=1600+pennsylvania+ave,washington,+dc&amp;amp;ll=38.898554,-77.036208&amp;amp;spn=0.009130,0.008690&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;The White House&lt;/a&gt;. Notice how the roof is blanked out and many buildings nearby are blurred; this censoring has been standard practice for satellite images released in the US for years. Also, you can scroll almost due southwest across the river and you'll see the Pentagon.&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=1+Diamond+Head+Rd,Honolulu,+HI&amp;amp;ll=21.258423,-157.795921&amp;amp;spn=0.036521,0.034761&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;Diamond Head State Monument&lt;/a&gt; in Honolulu&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=WA-504+at+3100+Rd&amp;amp;sll=46.305573,-122.277416&amp;amp;spn=.584335,.556183&amp;amp;sspn=0.025970,0.032035&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;Mount St Helens&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=Los+Olivos,CA&amp;amp;ll=34.742578,-120.090265&amp;amp;spn=0.009130,0.008690&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;Michael Jackson's Neverland Valley Ranch&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=3900+Las+Vegas+Boulevard+South,Las+Vegas,+NV&amp;amp;ll=36.100012,-115.174034&amp;amp;spn=0.009130,0.008690&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;Las Vegas Boulevard&lt;/a&gt; near the Luxor. The Bellagio's fountains are clearly visible to the north.&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?q=Tucson,AZ&amp;amp;ll=32.161918,-110.842781&amp;amp;spn=0.036521,0.034761&amp;amp;t=k&amp;amp;hl=en" target="_blank"&gt;The Boneyard&lt;/a&gt; at Davis-Monthan Air Force Base, full of decommissioned planes. Zoom in.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;I'm incredibly stoked to see this feature in Google Maps. Yes, there are other sources for satellite and aerial imagery... but up until now it's either been slow and clunky, or a pay service. Integrating it with Google's terrific map interface makes all of that data extremely accessible for the first time.
&lt;/p&gt;&lt;p&gt;

Got any neat satellite image finds of your own? Let me know in the comments!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-111268012448063787?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/111268012448063787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=111268012448063787' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111268012448063787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111268012448063787'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/04/google-satellite-maps.html' title='Google Satellite Maps'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-111263857363808940</id><published>2005-04-04T13:34:00.000-04:00</published><updated>2007-09-04T02:59:17.720-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Nixon Approval Ratings</title><content type='html'>&lt;p&gt;From time to time as I look at current Presidential approval ratings, I find myself wanting to look at the week-by-week job approval ratings of former President Nixon. They are out there and available, of course, but they're surprisingly hard to find. 
&lt;/p&gt;&lt;p&gt;
The best source I've found so far is the &lt;a href="http://www.ropercenter.uconn.edu/"&gt;Roper Center&lt;/a&gt; at the University of Connecticut. They have a &lt;a href="http://www.ropercenter.uconn.edu/cgi-bin/hsrun.exe/Roperweb/PresJob/PresJob.htx;start=HS_fullresults?pr=Nixon"&gt;page with the data&lt;/a&gt;, but their graph quite frankly stinks. The value axis is compressed, there aren't any gridlines, and it just doesn't tell you much. So I compiled their data and made my own graphs, which I'll share with you now.
&lt;/p&gt;&lt;p&gt;
First, some background and the raw data:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;The Washington Post's &lt;a href="http://www.washingtonpost.com/wp-srv/national/longterm/watergate/chronology.htm"&gt;Watergate timeline&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Detailed chronologies of Watergate events in &lt;a href="http://watergate.info/chronology/1972.shtml"&gt;1972&lt;/a&gt;, &lt;a href="http://watergate.info/chronology/1973.shtml"&gt;1973&lt;/a&gt;, and &lt;a href="http://watergate.info/chronology/1974.shtml"&gt;1974&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Raw data on Nixon approval polls as a &lt;a href="http://homepage.mac.com/drewthaler/blog/nixon-approval-raw.txt"&gt;tab-delimited text file&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Raw data compiled into an &lt;a href="http://homepage.mac.com/drewthaler/blog/nixon-approval.xls"&gt;Excel file with graphs&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And now the charts:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Stacked charts showing the poll results (click to zoom):&lt;br /&gt;&lt;a href="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-1.gif" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-1-thumb.gif"  height="209" width="229" style="float:none" alt="Nixon job approval stacked poll results, base = approval" /&gt;&lt;/a&gt; &lt;a href="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-2.gif" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-2-thumb.gif" height="210" width="226" style="float:none" alt="Nixon job approval stacked poll results, base = disapproval" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Approval only for Nixon's entire presidency (click to zoom):&lt;br /&gt;&lt;a href="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-3.gif" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-3-thumb.gif" height="206" width="319" style="float:none" alt="Nixon approval-only ratings, full Presidency" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Approval only for Nixon's second term (click to zoom):&lt;br /&gt;&lt;a href="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-4.gif" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-4-thumb.gif" height="206" width="228" style="float:none" alt="Nixon approval-only ratings, second term" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Net approval rating (approve minus disapprove) for Nixon's entire presidency (click to zoom):&lt;br /&gt;&lt;a href="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-5.gif" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-5-thumb.gif" height="207" width="319" style="float:none" alt="Nixon net approval ratings, full Presidency" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Net approval rating (approve minus disapprove) for Nixon's entire presidency, annotated (click to zoom):&lt;br /&gt;&lt;a href="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-7.gif" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-7-thumb.gif" height="207" width="319" style="float:none" alt="Nixon net approval ratings, full Presidency, annotated" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Net approval rating (approve minus disapprove) for Nixon's second term (click to zoom):&lt;br /&gt;&lt;a href="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-6.gif" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-6-thumb.gif" height="206" width="227" style="float:none" alt="Nixon net approval ratings, second term" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Net approval rating (approve minus disapprove) for Nixon's second term, annotated (click to zoom):&lt;br /&gt;&lt;a href="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-8.gif" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-nixon-approval-8-thumb.gif" height="206" width="227" style="float:none" alt="Nixon net approval ratings, second term, annotated" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I think there are a few very interesting points that are visible in the raw data.
&lt;/p&gt;&lt;p&gt;

First of all, Nixon started with a substantial number of "no opinion" ratings -- as high as 35%. But the ambivalence quickly disappeared. There was substantial movement from "no opinion" to "disapprove" during the first few months of his Presidency. I haven't done a thorough analysis, but from the few others I've checked it looks like other presidents show the same trend in their approval. This doesn't seem to be specific to Nixon.
&lt;/p&gt;&lt;p&gt;

Second, Nixon was much more popular than Bush throughout most of his Presidency. President Bush's approval shot up after 9/11, but has steadily eroded ever since. Bush spent most of 2004 hovering &lt;a href="http://pollkatz.homestead.com/files/NEWBUSHINDEX_6098_image001.gif"&gt;under 50% approval&lt;/a&gt; and with a &lt;a href="http://pollkatz.homestead.com/files/NEWBUSHINDEX_3657_image001.gif"&gt;net approval of less than zero&lt;/a&gt;. Nixon didn't get that low until his former counsel was testifying before the special Senate Watergate panel describing the political espionage that he'd personally taken part in.
&lt;/p&gt;&lt;p&gt;

Third, to me it looks like Nixon was seen as "above the fray" at the start of Watergate. Everything was somebody else's fault and he didn't know about any of it. His approval rating was at an all-time high as the Watergate burglars were convicted, despite the fact that it was a fairly high profile case and some of them were former Nixon aides. It wasn't until one of the convicted former aides, James McCord, started to make allegations of obstruction of justice and point fingers higher up that things started to take a turn for the worse.
&lt;/p&gt;&lt;p&gt;

Fourth, July 1973 was an incredibly bad month for Nixon. His net approval rating dropped by a whopping 25%. At the end of June, his former counsel testified that he was involved personally in the Watergate break-in and was involved in the obstruction of justice. Then in July he refused to testify before the Watergate committee, citing executive privilege; the existence of the White House tapes was revealed; and he refused to hand over the tapes. All this contributed to a serious drop in public approval from which he never recovered.
&lt;/p&gt;&lt;p&gt;

Fifth, even as the worst came out there was still a solid core of about 25% of the country who never abandoned Nixon and continued to approve of him. 
&lt;/p&gt;&lt;p&gt;

All in all, a very interesting set of data indeed.
&lt;/p&gt;&lt;p&gt;

&lt;b&gt;[Update: December 1st, 2005]&lt;/b&gt;
Probably because of the plight of our current president, a whole lot of people have been coming here to look at the gory details of Nixon's approval ratings. I should point out that &lt;a href="http://pollkatz.homestead.com/"&gt;Professor Pollkatz&lt;/a&gt; has a pretty nice chart up comparing raw numbers from &lt;a href="http://pollkatz.homestead.com/files/BNCapp_12756_image001.gif"&gt;Bush, Nixon, and Clinton&lt;/a&gt;. And he updates his Bush numbers regularly so you can keep track of the progress. Go check it out!
&lt;/p&gt;&lt;p&gt;

And keep in mind that despite all the &lt;a href="http://drewthaler.blogspot.com/2005/10/thick-as-thieves.html"&gt;recent indictments&lt;/a&gt;, President Bush himself has not really had a decisive Watergate moment yet, and probably won't while the Republicans control Congress.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-111263857363808940?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/111263857363808940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=111263857363808940' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111263857363808940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111263857363808940'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/04/nixon-approval-ratings.html' title='Nixon Approval Ratings'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-111041377859359065</id><published>2005-03-09T19:15:00.000-05:00</published><updated>2007-09-04T02:58:11.703-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Songfight Mix</title><content type='html'>&lt;p&gt;I ran across &lt;a href="http://songfight.org/"&gt;Songfight&lt;/a&gt; the other day &lt;a href="http://www.boingboing.net/2005/03/07/songfight_like_photo.html"&gt;via Boing Boing&lt;/a&gt;. It's an online songwriting contest; several themes are posted and you have one week to write, perform, and upload a song for your chosen theme.
&lt;/p&gt;&lt;p&gt;
Some of the submissions are great. (Some aren't, or at least aren't to my taste.) I spent an hour or so sifting through the archives and picked out some favorites and made a mix. It's just a quick glance at what they have to offer, and there are probably more great tracks that I missed, but check it out. All MP3s are free downloads. 
&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;* &lt;a href="http://www.songfight.org/music/bite_size/mellifiedman_bs.mp3"&gt;Bite Size&lt;/a&gt; - Mellified Man&lt;/li&gt;&lt;li&gt;* &lt;a href="http://frontalot.untimelydeath.com/mc_frontalot_-_indier_than_thou.mp3"&gt;Indier Than Thou&lt;/a&gt; - MC Frontalot&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/shut_up_and_sit_down/deshead_suasd.mp3"&gt;Shut Up And Sit Down&lt;/a&gt; - deshead&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/sarah_vowells_motto/figure8_svm.mp3"&gt;Sarah Vowell's Motto&lt;/a&gt; - Figure 8&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/five_minutes/joshwoodward_5min.mp3"&gt;Five Minutes&lt;/a&gt; - Josh Woodward&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/shower_scene/joshwoodward_shower.mp3"&gt;Shower Scene&lt;/a&gt; - Josh Woodward&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/leftright/hobbes_lr.mp3"&gt;Left/Right&lt;/a&gt; - Hobbes&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/im_with_steve_now/gyrefeatemmalee_iwsn.mp3"&gt;I'm With Steve Now&lt;/a&gt; - Gyre (featuring Emma Lee)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/we_are_all_famous/antsinvisible_waaf.mp3"&gt;We Are All Famous&lt;/a&gt; - Ants (Invisible)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/truth_about_aspartame/consume_taa.mp3"&gt;The Truth About Aspartame&lt;/a&gt; - Consume&lt;/li&gt;&lt;li&gt;* &lt;a href="http://www.songfight.org/music/piece_of_my_heat/defauthor_pomh.mp3"&gt;Piece of My Heat&lt;/a&gt; - The Def Author&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/massive_intelligence_failure/southweststatistic__mif.mp3"&gt;Massive Intelligence Failure&lt;/a&gt; - Southwest Statistic&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/truth_about_aspartame/bewells_taa.mp3"&gt;The Truth About Aspartame&lt;/a&gt; - The BeWells&lt;/li&gt;&lt;li&gt;* &lt;a href="http://www.songfight.org/music/hollywood_fantasy/loyaltyday_hf.mp3"&gt;Hollywood Fantasy&lt;/a&gt; - Loyalty Day&lt;/li&gt;&lt;li&gt;* &lt;a href="http://www.songfight.org/music/bonjour_mon_ami/joshwoodward_bma.mp3"&gt;Bonjour, Mon Amie&lt;/a&gt; - Josh Woodward&lt;/li&gt;&lt;li&gt;* &lt;a href="http://www.songfight.org/music/things_to_do_in_new_york/fifteenyears_ttdiny.mp3"&gt;Things To Do In New York&lt;/a&gt; - Fifteen Years&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/as_icons_of_my_youth_fall_silent/fortysecondsongs_icons.mp3"&gt;As Icons of My Youth Fall Silent&lt;/a&gt; - Forty Second Songs&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/quentin_tarantino/doctorworm_qt.mp3"&gt;Quentin Tarantino&lt;/a&gt; - Doctor Worm&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.songfight.org/music/i_thought_i_loved_you/svenmullet_itily.mp3"&gt;I Thought I Loved You&lt;/a&gt; - Sven Mullet&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;The asterisks mark songs that are my particular favorites, but they're all pretty interesting. Track #2 is not actually from Songfight, but &lt;a href="http://www.frontalot.com/"&gt;MC Frontalot&lt;/a&gt; has participated in the past and I thought it went well in the mix. Sue me.
&lt;/p&gt;&lt;p&gt;

Notice anything? &lt;a href="http://joshwoodward.com/"&gt;Josh Woodward&lt;/a&gt; made the list three times. I was curious, so I checked him out. Turns out he's got a blog and he's local to me, relatively speaking. Findlay's about two hours away. I don't know if we'll make it over to see him at a live show, but perhaps we'll take a detour on one of our trips up to Michigan if the timing is right. He seems like an interesting guy... not many songwriters &lt;a href="http://joshwoodward.com/d/1361.html"&gt;use grep to write songs&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-111041377859359065?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/111041377859359065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=111041377859359065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111041377859359065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/111041377859359065'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/03/songfight-mix.html' title='Songfight Mix'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-110992828938611265</id><published>2005-03-03T21:58:00.000-05:00</published><updated>2007-09-04T02:57:40.864-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PlayStation'/><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='parenting'/><category scheme='http://www.blogger.com/atom/ns#' term='PS2'/><title type='text'>Great PS2 Games for Young Kids, Part One</title><content type='html'>&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B0000C7GHG/drewthaler-20" target="_blank"&gt;&lt;img border="0" src="http://images.amazon.com/images/P/B0000C7GHG.01._SCMZZZZZZZ_.jpg" align="right" alt="Playstation 2" /&gt;&lt;/a&gt;&lt;p&gt;More than &lt;a href="http://ps2.ign.com/articles/578/578454p1.html"&gt;80 million&lt;/a&gt; homes have a &lt;a href="http://www.us.playstation.com/consoles.aspx?id=2"&gt;Playstation 2&lt;/a&gt;, and ours is one of them. I originally bought it several years ago to play a few games for myself. Then my stepdaughter came into my life, and I started looking at the console in an entirely new way.
&lt;/p&gt;&lt;p&gt;

The &lt;acronym title="Playstation 2"&gt;PS2&lt;/acronym&gt; is not really a gaming system for young children. Go to any store and look around; the vast majority of the games created for it are really targeted much more at teenagers and twenty-somethings. A lot of games either have very mature subject matter, or are very complicated and require a lot of skill and coordination and concentration. When Olivia started playing games on my &lt;acronym title="Playstation 2"&gt;PS2&lt;/acronym&gt; at the age of 6, I had two thoughts. First of all, I firmly believe that video games are good for kids so I was very happy that she was excited about playing these games... but in the next moment I very quickly realized that most of the games I had were completely wrong for her.
&lt;/p&gt;&lt;p&gt;

Even after scratching the obvious ones like Grand Theft Auto, Devil May Cry, and Evil Dead, almost all of the games I had were unplayable. &lt;a href="http://www.amazon.com/exec/obidos/ASIN/B00005TNI6/drewthaler-20"&gt;Final Fantasy X&lt;/a&gt;? &lt;a href="http://www.amazon.com/exec/obidos/ASIN/B00004ZDFY/drewthaler-20"&gt;Dark Cloud&lt;/a&gt;? No way; far too complicated. In fact, &lt;acronym title="role playing games"&gt;RPGs&lt;/acronym&gt; in general were just too involved. &lt;a href="http://www.amazon.com/exec/obidos/ASIN/B00006GSNX/drewthaler-20"&gt;Ratchet &amp;amp; Clank&lt;/a&gt;? It's actually pretty hard for a 6-year-old. &lt;a href="http://www.amazon.com/exec/obidos/ASIN/B00005R5PO/drewthaler-20"&gt;Jak and Daxter&lt;/a&gt;? Better, but it was really easy for her to get lost in the map and not have any idea what to do next. Even the simple-seeming cartoony games wound up requiring a lot of visualization, control skills, and just plain gaming experience that she didn't quite have.
&lt;/p&gt;&lt;p&gt;

To use a technical term, she was brand-new to the world of video games, and most &lt;acronym title="Playstation 2"&gt;PS2&lt;/acronym&gt; games were either too challenging in general, or lacked sufficient &lt;b&gt;scaffolding&lt;/b&gt; to teach her the skills she needed to play them. What's that, you ask?
&lt;/p&gt;&lt;p&gt;

&lt;a href="http://www.fno.org/dec99/scaffold.html"&gt;Scaffolding&lt;/a&gt; is a term from education which describes the process of helping a student (or in this case, gamer) learn by providing supports which are later removed as experience is gained. Walkers for babies and training wheels on a bike are examples of simple scaffolding.
&lt;/p&gt;&lt;p&gt;

Video games will often try to provide scaffolding in the form of an in-game tutorial. The crucially important part, however, is that whatever scaffolding is present usually assumes a basic minimum skill level. In today's games that contain immersive &lt;acronym title="three dimensional"&gt;3D&lt;/acronym&gt; landscapes, for example, that means that the game designers often assume you can figure out where inside that world you are and where to go next. Easy enough for me, but it was a brand-new challenge for Olivia. Another skill that is often assumed is understanding the in-game physics well enough to be able to jump and land on a target platform. Again, not so easy for a kid just exploring video games for the first time. Even the "save game" interface that so many games have is tricky; kids forget to save or accidentally save over old games. Autosave is much easier. When too many of these difficulties add up, the kid spends more time frustrated than engaged, so as I was looking for a game for a six-year-old to play I wanted scaffolding that started at the ground up, moved forward slowly, and really kept the game from getting too hard.
&lt;/p&gt;&lt;p&gt;

So I started doing some research. That took some time, because there really aren't any good sites that look at games specifically from the perspective of kids and parents. The big game mega-sites like &lt;a href="http://gamespot.com/"&gt;GameSpot&lt;/a&gt; and &lt;a href="http://ign.com/"&gt;IGN&lt;/a&gt; tend to be focused on tweens, teens and twenty-somethings. A game might be great for young kids, but these sites may score it lower than it deserves because it's too simple for their target market. The reverse happens too: a game might score high because it's great fun for an adult, but it's just too darn hard for a younger child.
&lt;/p&gt;&lt;p&gt;

But finally, after a few false starts and a lot of trips to my local EB Games, we've found some games that Olivia loves. I can't possibly fit them all into one blog post, so this is just the first installment in a series. 
&lt;/p&gt;

&lt;h3&gt;Sly Cooper and the Thievius Raccoonus&lt;/h3&gt;&lt;p&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=drewthaler-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=B0000690ZE&amp;amp;fc1=000000&amp;amp;=1&amp;amp;lc1=0000ff&amp;amp;bc1=000000&amp;amp;lt1=_blank&amp;amp;IS2=1&amp;amp;f=ifr&amp;amp;bg1=ffffff&amp;amp;f=ifr" width="160" height="280" scrolling="no" marginwidth="20" marginheight="20" frameborder="0" align="right"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B0000690ZE/drewthaler-20" target="_blank"&gt;&lt;img border="0" src="http://images.amazon.com/images/P/B0000690ZE.01._SCMZZZZZZZ_.jpg" align="right" alt="Sly Cooper box cover" /&gt;&lt;/a&gt;&lt;/iframe&gt;
One of Olivia's early favorites. Sly Cooper is a sly, charming, and honorable thief. Think about a dashing movie Robin Hood reincarnated as a raccoon, and you're in the right ballpark. He's trying to recover the book that is his family's legacy, the Thievius Raccoonus, which was stolen by another not-so-honorable gang of thieves called the Klaww Gang. As Sly proceeds through the game and recovers pages from the book, he learns cool new moves.
&lt;/p&gt;&lt;p&gt;

The characters, voices, and storytelling are just fantastic. The &lt;a href="http://www.gamedev.net/reference/programming/features/celshading/"&gt;cel-shaded graphics&lt;/a&gt; are smooth and very cartoony, a familiar look to kids. The levels aren't overly complicated; in fact, despite being three-dimensional, most levels progress very linearly so it's hard to get lost. Sly's pal Bentley pops up several times in each level and tells you what you need to do -- audibly, not just in on-screen text which kids are inclined to skip over. There is violence, but it's fairly cartoonish; for example, Sly whacks bad guys with his cane and has to avoid barking dogs on leashes. Enemies only take one whack to defeat, and have simple patterns. A few guns appear but they are also big and cartoonish, and Sly himself only fights with his cane. The game's focus is really not on fighting. If anything, the best way to get through a level is to avoid getting into fights. The challenges in the game also work very smoothly and are very forgiving. 
&lt;/p&gt;&lt;p&gt;

The controls are both simple and consistent, and the game is much better because of that. Sly has many special moves that look great on screen: he can grab ropes, land on tiny points, use his cane to swing from hooks, and more. And most of these feats are triggered by a single button. The game uses context clues to "just do the right thing" when you press it, and it's very forgiving about how close you are to the target. If you're anywhere near a rope, the button makes Sly grab it. If you're jumping near a spiky point, the button makes Sly land on it. And so on. This is fun for adult gamers, but it's particularly great for kids; it really makes you feel like you're doing these terrific-looking stunts when really all you've done is press a button.
&lt;/p&gt;&lt;p&gt;

Because the whole game is so consistent and provides a lot of direction, it was easy for her to understand. Of course, it still took a fair bit of help from dad to get her through some of the levels the first time through. A lot of the levels &lt;b&gt;look&lt;/b&gt; hard but really aren't, and she had to get over being freaked out by those. Others were legitimately difficult and just needed practice; I got her past those the first several times, but she's since gotten good enough to handle them on her own.
&lt;/p&gt;&lt;p&gt;

In the end, one of the best signs of a great game is when a kid goes back and plays it again and again and again... and that's what Olivia has done with Sly Cooper. She started playing it at age 6, and will still go back to it almost two years later. Fantastic. Well worth the money.
&lt;/p&gt;&lt;p&gt;

There's a sequel out now, &lt;a href="http://www.amazon.com/exec/obidos/ASIN/B00004TNB0/drewthaler-20"&gt;Sly 2: Band of Thieves&lt;/a&gt;. It's a very different game from the first. Olivia has played it and likes it well enough, but it's more difficult and is skewed a bit more toward the tween/teen age spectrum. 
&lt;/p&gt;

&lt;h3&gt;Katamari Damacy&lt;/h3&gt;&lt;p&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=drewthaler-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=B0002Y2XXQ&amp;amp;fc1=000000&amp;amp;=1&amp;amp;lc1=0000ff&amp;amp;bc1=000000&amp;amp;lt1=_blank&amp;amp;IS2=1&amp;amp;f=ifr&amp;amp;bg1=ffffff&amp;amp;f=ifr" width="160" height="280" scrolling="no" marginwidth="20" marginheight="20" frameborder="0" align="right"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B0002Y2XXQ/drewthaler-20" target="_blank"&gt;&lt;img border="0" src="http://images.amazon.com/images/P/B0002Y2XXQ.01._SCMZZZZZZZ_.jpg" align="right" alt="Katamari Damacy box cover" /&gt;&lt;/a&gt;&lt;/iframe&gt;
Not only do Olivia and I like this game, but her mom does too! That's rare; my wife usually doesn't find video games interesting at all. But this game's weirdness and simplicity attracted even her.
&lt;/p&gt;&lt;p&gt;

The stars have fallen from the sky, and you play a tiny little guy, the Prince, whose father is the King of All Cosmos. He orders you in his own bizarre quirky way to roll up ordinary objects into an ever-growing ball (called a katamari) until the ball reaches the size which has been set as the goal for each level. You start out rolling a 10cm ball, rolling up thumbtacks and coins and caramels... and as you grow you are soon rolling up dogs, cats, and people... then cars and buildings... then trees, boats, and giant squid... and finally skyscrapers, airports, and entire islands. The thrill this provides is difficult to explain until you've tried it. There's literally nothing you can't roll up into your ball once it's big enough.
&lt;/p&gt;&lt;p&gt;

The music is beautifully composed; like the rest of the game, it's simultaneously weird and wonderful. The controls are simple and accessible to all ages. The two joysticks are used together to roll your ball, and that's really all you need to know. There is no violence to speak of. Okay, so some levels are filled with people screaming and running away as your giant katamari swallows up their town, but nobody is killed and it's very absurdly unrealistic. The net effect is much more comical and silly than scary. Some of the levels can be challenging, but this is made up for by the fact that every single level has replay value. If you can't beat level 4 within the time limit, you can go back and play levels 1 through 3 over and over again and still be just as entertained.
&lt;/p&gt;&lt;p&gt;

Highly recommended for all ages. The only danger is that the adults will want to spend more time playing it than the kids!
&lt;/p&gt;

&lt;h3&gt;EyeToy: Play&lt;/h3&gt;&lt;p&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=drewthaler-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=B00009YEK0&amp;amp;fc1=000000&amp;amp;=1&amp;amp;lc1=0000ff&amp;amp;bc1=000000&amp;amp;lt1=_blank&amp;amp;IS2=1&amp;amp;f=ifr&amp;amp;bg1=ffffff&amp;amp;f=ifr" width="160" height="280" scrolling="no" marginwidth="20" marginheight="20" frameborder="0" align="right"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/B00009YEK0/drewthaler-20" target="_blank"&gt;&lt;img border="0" src="http://images.amazon.com/images/P/B00009YEK0.01._SCMZZZZZZZ_.jpg" align="right" alt="EyeToy: Play box cover" /&gt;&lt;/a&gt;&lt;/iframe&gt;
The original EyeToy games are a lot of fun for everyone. Olivia and I like EyeToy, it's fun at sleepovers, and it's another game that has the very rare Mom Seal of Approval too!
&lt;/p&gt;&lt;p&gt;

EyeToy is a small camera that you attach to your &lt;acronym title="Playstation 2"&gt;PS2&lt;/acronym&gt;'s &lt;acronym title="Universal Serial Bus"&gt;USB&lt;/acronym&gt; port. The game that comes with the EyeToy is called &lt;b&gt;EyeToy: Play&lt;/b&gt;. Control is handled entirely through the camera -- you don't use the normal controller at all. The camera displays an image as if the TV were a mirror, and it's overlaid by graphics. Waving your hand over a button will select it. There are a bunch of different mini-games to choose from that use the camera in different ways: Kung Fu, window washing, dancing, soccer, and more. One game just uses crazy camera effects to distort the image in various ways, and kids love it.
&lt;/p&gt;&lt;p&gt;

Using the camera as the controller is unusual but surprisingly simple and intuitive. It can be a little tricky to set the camera up initially -- mom and dad need to help with that. You have to draw the blinds, and and then get plenty of artificial light in the room. But once it's set up it's fun for the whole family. And it's also the sort of game you can just leave a bunch of kids alone with. Sharing is easy and sometimes not even necessary, like in the crazy-camera-effects section. There's a tiny bit of violence in some of the games, like Kung Fu, but it's so cartoonish -- your onscreen image is a giant, and little tiny guys jump at you and you get to smack them -- that it winds up being absurd and comical. 
&lt;/p&gt;&lt;p&gt;

Highly recommended for all ages. Kids as young as a few years old should be able to understand this and interact with it. And it's still fun as a party game even after the novelty wears off. Well worth the money.
&lt;/p&gt;

&lt;h3&gt;More to Come&lt;/h3&gt;
&lt;p&gt;That's all for now, but I'm not done. Keep your eyes out for the next installment!
&lt;/p&gt;&lt;p&gt;

[&lt;b&gt;Update:&lt;/b&gt; &lt;a href="http://drewthaler.blogspot.com/2006/10/great-ps2-games-for-young-kids-part.html"&gt;Great PS2 Games for Young Kids, Part Two&lt;/a&gt; is now available.]&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-110992828938611265?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://drewthaler.blogspot.com/feeds/110992828938611265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7898615&amp;postID=110992828938611265' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110992828938611265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110992828938611265'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/03/great-ps2-games-for-young-kids-part.html' title='Great PS2 Games for Young Kids, Part One'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-110764053283303966</id><published>2005-02-05T16:55:00.000-05:00</published><updated>2007-09-04T02:54:39.389-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='satire'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Weapons of Social Destruction</title><content type='html'>&lt;p&gt;A few days ago George W. Bush got up in front of Congress and gave his State of the Union address for 2005.
&lt;/p&gt;&lt;p&gt;
He started off by reminding us how wonderfully the economy has been performing. I think he's got a point there. It's certainly true that I've never felt quite the same way about my job security since he was elected.
&lt;/p&gt;&lt;p&gt;
Without a doubt, the keystone of his speech came when he warned us that Social Security has weapons of mass destruction. Although a shocking statement, this was not a surprise to anyone who's been paying attention. The administration has been laying the groundwork for months now.
&lt;/p&gt;&lt;p&gt;
Remember when Secretary of Defense Rumsfeld said that no federal program "&lt;b&gt;poses a greater or more immediate threat to the security of our people and the stability of the world&lt;/b&gt;" than Social Security? Vice-President Cheney also stated forcefully that Social Security "&lt;b&gt;is busy enhancing its capabilities in the field of chemical and biological agents,&lt;/b&gt;" and continues to pursue "&lt;b&gt;an aggressive nuclear weapons program.&lt;/b&gt;"
&lt;/p&gt;&lt;p&gt;
In fact, President Bush himself said in a recent interview that "&lt;b&gt;There is a real threat, in my judgment, a real and dangerous threat to America&lt;/b&gt;" in the form of Social Security.
&lt;/p&gt;&lt;p&gt;
Before he resigned, Secretary of State Colin Powell even appeared before the UN, held up a vial of anthrax, and showed some fuzzy photographs of the areas where he claimed Social Security was hiding its weapons systems. "&lt;b&gt;How do I know that? How can I say that? Let me give you a closer look. Look at the image on the left. On the left is a close-up of one of the four chemical bunkers. The two arrows indicate the presence of sure signs that the bunkers are storing chemical munitions.&lt;/b&gt;"
&lt;/p&gt;&lt;p&gt;
Wow, that sounds frightening! Shouldn't Americans be concerned about this? I know what many of you are thinking: Break out the &lt;b&gt;duct tape and plastic sheeting!&lt;/b&gt; But not so fast. 
&lt;/p&gt;&lt;p&gt;
Remember just a few years ago, when the very same administration told us that it was critical that we invade Iraq, because the country was about to go bankrupt? We all know how well that turned out.
&lt;/p&gt;&lt;p&gt;
During the lead-up to the war, Vice-President Cheney assured us that there was no recourse other than invasion. "&lt;b&gt;With an aging population, and a steadily falling ratio of workers to retirees,&lt;/b&gt;" Iraq "&lt;b&gt;is on a course to eventual bankruptcy.&lt;/b&gt;"  Treasury Secretary John Snow claimed that the country was "&lt;b&gt;in jeopardy&lt;/b&gt;" and "&lt;b&gt;it's a pretty serious situation&lt;/b&gt;".
&lt;/p&gt;&lt;p&gt;
Bush himself said in a previous State of the Union address that "&lt;b&gt;By the year 2042,&lt;/b&gt;" Iraq would "&lt;b&gt;be exhausted and bankrupt. If steps are not taken to avert that outcome, the only solutions would be drastically higher taxes.&lt;/b&gt;"
&lt;/p&gt;&lt;p&gt;
Sound familiar? In the end it turned out that Iraq wasn't going to run out of money after all. Over a thousand American troops gave their lives, more than a hundred thousand Iraqis were killed, and countless more on both sides wounded severely -- all in the name of restoring solvency to Iraq. Three years and hundreds of billions of dollars in tax money later, we now know that Iraq was never in danger of going bankrupt.
&lt;/p&gt;&lt;p&gt;
Are the parallels clear yet? They should be. It's too late for all those who died fulfilling the President's folly in Iraq, but it's not too late for us here in America.
&lt;/p&gt;&lt;p&gt;
Does Social Security really have weapons of mass destruction? Will privatizing it &lt;i&gt;really&lt;/i&gt; cause future generations to greet us as liberators? 
&lt;/p&gt;&lt;p&gt;
The answer is no. The President has cried wolf once too often, and the American people are wising up.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-110764053283303966?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110764053283303966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110764053283303966'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/02/weapons-of-social-destruction.html' title='Weapons of Social Destruction'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-110676687743992636</id><published>2005-01-26T13:40:00.000-05:00</published><updated>2007-09-04T02:53:58.138-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Vote No on Gonzales</title><content type='html'>&lt;p&gt;Alberto Gonzales made it through the Senate Judiciary Committee today, with the vote split evenly along party lines. I'm sad to say that one of my representatives, Mike DeWine of Ohio, toed the Republican party line like a good little kid and voted to confirm him. Now it goes to a vote in the full Senate.&lt;/p&gt;

&lt;p&gt;I've written my senators already. Or, I should say, I've written to their staff. It's pretty much a given that the senators don't bother to read any correspondence they receive from the ordinary people they represent, but I had to try anyway. Here is a copy of my letter to Senator Voinovich. It's a shame; Voinovich is well-regarded here in Cleveland for helping to turn the city around, and I've heard him speak: he seems basically like a good guy. If not for the fact that since he's been in office he's been like a rubber stamp for the bad policies of the Bush administration, I might have even voted for him.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Please listen to your conscience and vote NO on Alberto Gonzales for Attorney General.&lt;/p&gt;

&lt;p&gt;I am very disappointed to hear that Sen. DeWine voted to confirm Alberto Gonzales as Attorney General in the SJC, and I hope that you won't make the same mistake when it comes to a vote in the full Senate.&lt;/p&gt;

&lt;p&gt;Gonzales is the author of the US justification for torture. That's the issue, and that is how history will judge you.&lt;/p&gt;

&lt;p&gt;As a citizen, a representative, a father, a husband, a grandfather, a member of the church, and a Cleveland resident... Please help our country put a stop to this madness. No more rubberstamping bad policies. You are a better man than this. &lt;/p&gt;

&lt;p&gt;If you don't stand up, who will?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Senator Voinovich is one of a scant hundred Americans with the opportunity to stand up and really make his voice heard, to speak for the millions of Americans he represents and say no to torture. Will he do so? Probably not. But if you feel the same way, I urge you to &lt;a href="http://www.senate.gov/general/contact_information/senators_cfm.cfm"&gt;write to your Senators&lt;/a&gt; and try to convince them to see reason. Gonzales doesn't deserve a place in the U.S. government, and confirming him would be a mistake with far-reaching implications.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-110676687743992636?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110676687743992636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110676687743992636'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/01/vote-no-on-gonzales.html' title='Vote No on Gonzales'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-110665743087544978</id><published>2005-01-25T07:44:00.000-05:00</published><updated>2007-09-04T02:53:13.853-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPod'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>If Wishes Were iPods</title><content type='html'>&lt;p&gt;How popular is the iPod? How about the iTunes Music Store?&lt;/p&gt;

&lt;p&gt;Insanely popular.&lt;/p&gt;

&lt;p&gt;You already knew that, of course. But I've got a few sources of both subjective and objective data to share. First of all, since subjective data is so much more fun, let's look at Amazon's new feature, the &lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fzg%2F-%2F03%2Fce%2Fref%3Dpd_zg_mw_e_l"&gt;Most Wished For&lt;/a&gt; list in electronics. Here's what it looks like right now as I write this:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0002OZXHO" class="plain"&gt;&lt;b&gt;Apple 20 GB iPod M9282LL/A&lt;/b&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0001A99MO" class="plain"&gt;&lt;b&gt;Apple 4 GB iPod Mini Silver M9160LL/A&lt;/b&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0002CZPPG" class="plain"&gt;&lt;b&gt;iTunes $15 Prepaid Card&lt;/b&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB000204SWE" class="plain"&gt;Philips DVP642 DivX-Certified Progressive-Scan DVD Player&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0002OZXGU" class="plain"&gt;&lt;b&gt;Apple 40 GB iPod M9268LL/A&lt;/b&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB00007KDVI" class="plain"&gt;Linksys WRT54G Wireless-G Router&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB00067TTZY" class="plain"&gt;Creative Zen Micro 5 GB MP3 Player Black&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0002XQJFA" class="plain"&gt;Canon EOS 20D 8.2MP Digital SLR Camera with EF-S 18-55mm f/3.5-5.6 Lens&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0000C8VEK" class="plain"&gt;Canon EOS 6.3MP Digital Rebel Camera with Lens 18-55MM Lens&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB00019068G" class="plain"&gt;&lt;b&gt;Monster Cable iCarPlay iPod Wireless FM Transmitter (AI-IP-FM-CH)&lt;/b&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0002OD3JY" class="plain"&gt;Canon PowerShot A95 5MP Digital Camera with 3x Optical Zoom&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0001AP8CE" class="plain"&gt;&lt;b&gt;Apple iPod In-Ear Headphones (M9394G/A)&lt;/b&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB00066EK36" class="plain"&gt;SanDisk 256 MB MP3 Player Red&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0002IQ1I0" class="plain"&gt;Verbatim 8x 4.7 GB DVD+R Spindle (100 Discs)&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB00011G5FW" class="plain"&gt;Sony Cybershot DSC-T1 5.1MP Digital Camera with 3x Optical Zoom&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0001G6U5M" class="plain"&gt;Canon PowerShot S410 4MP Digital Elph with 3x Optical Zoom&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0001DJSYU" class="plain"&gt;Kodak CX7300 3.2 MP Digital Camera&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB00017IX10" class="plain"&gt;&lt;b&gt;Altec Lansing INMOTION Ipod Portable Speaker System&lt;/b&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0000ULJWS" class="plain"&gt;&lt;b&gt;Belkin TuneDok Car Holder for iPod&lt;/b&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB00067KZA2" class="plain"&gt;Creative MuVo Micro N200 512 MB MP3 Player (Black)&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0002OBQMA" class="plain"&gt;&lt;b&gt;Apple iPod Dock Kit (M9602G/A)&lt;/b&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB00004Z5M1" class="plain"&gt;Belkin Pro Series USB 2.0 Device Cable (USB A/USB B, 10 Feet)&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB0002GDIII" class="plain"&gt;Apple AirPort Express with Air Tunes (M9470LL/A)&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB000092YQW" class="plain"&gt;Sony MDR-EX71SL Fontopia Headphones with Closed Type Design&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/redirect?tag=drewthaler-20&amp;amp;path=tg%2Fdetail%2F-%2FB00064O89Y" class="plain"&gt;Canon Powershot SD300 4MP Digital Elph Camera with 3x Optical Zoom&lt;/a&gt;
&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;Today, iPods and iPod accessories fill 9 of the top 25 slots. I've counted the iTunes Music Store card, since it's a pretty safe bet that almost everyone using the iTunes Music Store regularly either has an iPod or will be getting one soon. Other closely related items didn't count because they are not exclusive to the iPod: the AirTunes base station, the USB 2.0 cable, the headphones.&lt;/p&gt;

&lt;p&gt;Just a few days ago, the same list showed 13 of 25 items that were iPod-related. The only MP3 player on the list at that time was the Creative Zen Micro 5GB, sliding in at number 22.&lt;/p&gt;

&lt;p&gt;So there are a lot of people out there wishing for iPods. By Amazon's wish list metric, more people want iPods than want digital cameras, DVD players, TiVos, wireless networks, or any other MP3 player. You should definitely keep in mind that this is an entirely subjective and arbitrary sample; practically speaking it's meaningless, but I found it interesting anyway.&lt;/p&gt;

&lt;h3&gt;iTunes Music Store Sales&lt;/h3&gt;
&lt;p&gt;Want some real data? I've got that too. Not about the iPod, but about the iTunes Music Store. As I pointed out above, the popularity of the &lt;acronym title="iTunes Music Store"&gt;iTMS&lt;/acronym&gt; should generally track the popularity of the iPod pretty well. They are marketed together, and combined they provide a lot more functionality than either one alone.&lt;/p&gt;

&lt;p&gt;How well is the &lt;acronym title="iTunes Music Store"&gt;iTMS&lt;/acronym&gt; doing? Apple does not release specific numbers about how many tracks the iTunes Music Store sells at any given time, but they do make press releases when they hit certain milestones. Here they are:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;April 28, 2003 - &lt;a href="http://www.apple.com/pr/library/2003/apr/28musicstore.html"&gt;Launch&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;May 5, 2003 - &lt;a href="http://www.apple.com/pr/library/2003/may/05musicstore.html"&gt;1 million&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;May 14, 2003 - &lt;a href="http://www.apple.com/pr/library/2003/may/14musicstore.html"&gt;2 million&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;June 23, 2003 - &lt;a href="http://www.apple.com/pr/library/2003/jun/23itunes.html"&gt;5 million&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;September 8, 2003 - &lt;a href="http://www.apple.com/pr/library/2003/sep/08musicstore.html"&gt;10 million&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;December 15, 2003 - &lt;a href="http://www.apple.com/pr/library/2003/dec/15itunes.html"&gt;25 million&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;March 15, 2004 - &lt;a href="http://www.apple.com/pr/library/2004/mar/15itunes.html"&gt;50 million&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;July 11, 2004 - &lt;a href="http://www.apple.com/pr/library/2004/jul/12itunes.html"&gt;100 million&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;October 14, 2004 - &lt;a href="http://www.apple.com/pr/library/2004/oct/14itunes.html"&gt;150 million&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;December 16, 2004 - &lt;a href="http://www.apple.com/pr/library/2004/dec/16itunes.html"&gt;200 million&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;January 24, 2005 - &lt;a href="http://www.apple.com/pr/library/2005/jan/24itms.html"&gt;250 million&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Here's what that looks like on a chart:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/iTMS-sales-20050125.jpg" width="500" height="440" alt="iTMS performance through January 2005" /&gt;&lt;/p&gt;

&lt;p&gt;A strong exponential growth trend is clearly visible. This trend has actually been obvious since July 2004, and every data point since then has followed the same path. Graphing the data on a logarithmic scale makes that even more clear.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/iTMS-sales-20050125-log.jpg" width="500" height="440" alt="iTMS performance through January 2005, log scale" /&gt;&lt;/p&gt;

&lt;p&gt;The growth is almost a flat line against the log scale. I'd say it's probably flattening out slightly, but it's hard to say for sure. One argument against that is that we're currently getting data points more often, so we could just be seeing seasonal fluctuation that we didn't have the resolution to see before.&lt;/p&gt;

&lt;p&gt;But one thing is clear: even in the flattest period we've seen, &lt;acronym title="iTunes Music Store"&gt;iTMS&lt;/acronym&gt; total sales are still increasing exponentially, at an astonishing rate of about &lt;b&gt;14% per month&lt;/b&gt;. At times it's as high as 26% per month. That's anywhere from 500% to 1000% growth &lt;b&gt;per year&lt;/b&gt;.&lt;/p&gt;

&lt;h3&gt;&lt;acronym title="iTunes Music Store"&gt;iTMS&lt;/acronym&gt; to hit a billion in 2005&lt;/h3&gt;
&lt;p&gt;If this keeps up -- and the January 24th press release follows the trend exactly, and gives no reason to suggest it will stop -- then the current growth rate suggests that Apple will sell its one BILLIONTH song through the iTunes Music Store by the end of 2005. And that's actually a pretty conservative statement.&lt;/p&gt;

&lt;p&gt;It only took ten months for the sales to increase tenfold from 10M to 100M tracks. If it takes the same amount of time to go from 100M to 1B, the store would reach 1,000,000,000 tracks sold by the beginning of May. Unbelievably, that's less than four months away.&lt;/p&gt;

&lt;p&gt;My personal impression of the data is that the growth rate is slowing a bit, and it'll reach a billion in September or October 2005. But we'll see what the future holds.&lt;/p&gt;

&lt;h3&gt;Other music services&lt;/h3&gt;
&lt;p&gt;So how are all those other music stores doing? Not so well.&lt;/p&gt;

&lt;p&gt;The &lt;acronym title="International Federation of Phonographic Industry"&gt;IFPI&lt;/acronym&gt; reported last week that &lt;a href="http://www.ifpi.org/site-content/press/20050119.html"&gt;over 200 million songs were legally downloaded in 2004&lt;/a&gt;, compared to 20 million in 2003. If both these numbers and Apple's are considered accurate, and if they are measuring roughly the same data set, then we can actually get some idea about the market share of the &lt;acronym title="iTunes Music Store"&gt;iTMS&lt;/acronym&gt;.&lt;/p&gt;

&lt;p&gt;(For the sake of this discussion, I'm going to assume both sets of numbers are both accurate and consistent, even though they might not be perfectly so. I'm inclined to believe Apple's numbers. They should be capable of very accurate tracking and are subject to shareholder lawsuits if they misrepresent their sales. The &lt;acronym title="International Federation of Phonographic Industry"&gt;IFPI&lt;/acronym&gt; has no reason to be inaccurate, but neither would it be held accountable if it got any numbers wrong. I don't know whether they are measuring the same data; Apple is probably counting free downloads that don't generate revenue, and the &lt;acronym title="International Federation of Phonographic Industry"&gt;IFPI&lt;/acronym&gt; might not be. Apple is probably also counting every track, including audio books, while the &lt;acronym title="International Federation of Phonographic Industry"&gt;IFPI&lt;/acronym&gt; release was only interested in digital music -- however, I doubt that audio books are more than a drop in the bucket of Apple's sales.)&lt;/p&gt;

&lt;p&gt;The &lt;acronym title="International Federation of Phonographic Industry"&gt;IFPI&lt;/acronym&gt;'s numbers state that over 220M songs have been legally downloaded and purchased over 2003 and 2004, which just so happens to extend back through the lifetime of Apple's iTunes Music Store. Well, Apple just reported on December 16th that it had sold 200M songs over the lifetime of its store. If Apple has really sold about 200M of those 220M songs, that gives them a market share of more than 90%.&lt;/p&gt;

&lt;p&gt;To put it in perspective, these two sets of numbers suggest that everybody else added together has sold about 20M songs over the &lt;b&gt;entire lifetime&lt;/b&gt; of their stores. Apple sold more than twice that number in &lt;b&gt;just the past month&lt;/b&gt;, selling 50M in the period from Dec 16th to Jan 24th.&lt;/p&gt;

&lt;p&gt;When you read an article like the &lt;acronym title="International Federation of Phonographic Industry"&gt;IFPI&lt;/acronym&gt;'s release about the explosive growth of "legal downloading", they really mean "the iTunes Music Store". Because honestly, that's where all the action is right now.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-110665743087544978?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110665743087544978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110665743087544978'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/01/if-wishes-were-ipods.html' title='If Wishes Were iPods'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-110490120775009740</id><published>2005-01-04T23:26:00.000-05:00</published><updated>2007-09-04T02:50:02.342-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Anonymity and the Web</title><content type='html'>&lt;p&gt;From time to time I encounter people who wonder why I don't use some creative online name. You know, some AOL-inspired unique handle like "drewsome" or "hyperthought" or "knockinboots16". Better still, when I intelligently argue an opinion against someone who'd rather not be rational, I've received dark comments about how it's surprising that I'd use my real name to "spout that kind of garbage".&lt;/p&gt;

&lt;p&gt;(As an aside, I find it interesting that the latter kind of vague threat -- and it is definitely meant as a threat -- has only so far come from people who hold far-right-wing political views. Whenever that happens, though, it's a sure sign that you've won an argument; remember, violence is the &lt;a href="http://en.wikiquote.org/wiki/Isaac_Asimov"&gt;last refuge&lt;/a&gt; of the incompetent.)&lt;/p&gt;

&lt;p&gt;So why do I use my real name, anyway?&lt;/p&gt;

&lt;p&gt;Part of it is that I can't be bothered to keep finding new names when the one I want is taken. For example, I could choose to be "drewsome" on half a dozen accounts, but then have to come up with something new when it's taken elsewhere. Well, that just stinks. My full name is not the most unique one in the world -- I'm no &lt;a href="http://www.deeptrouble.com/"&gt;Deep Jawa&lt;/a&gt; -- but I can get by with using it most of the time.&lt;/p&gt;

&lt;p&gt;I also find that using my real name helps a lot in business, since there's no need to explain why I've chosen it. It's simple, to the point, and easy to remember if you know my name, which you should if you're doing business with me. And if you are using it to email me, you will have to spell my last name correctly. Hint: there is no Y in it whatsoever.&lt;/p&gt;

&lt;p&gt;But one of the biggest reasons is that I truly believe that anonymity on the web is an illusion. And since it is an illusion I don't see that it's worth the bother to go out of my way to maintain it. I try to act online the same way I do in real life: I'm polite, I respect the opinions of others, and even when I have a very strong opinion I still try to see both sides of the story.&lt;/p&gt;

&lt;p&gt;That's quite a sweeping statement to make, so let me clarify it. I do not mean that anonymity is an illusion in the absolute sense. It's still very possible in this day and age to keep your identity hidden online from anyone but the government if you work at it, and if you're extra paranoid it's probably even possible to keep hidden from the government. (Although I guarantee they do not reveal everything they might be able to do to track you down.)&lt;/p&gt;

&lt;p&gt;But for the average person, if you spend a reasonable amount of time online interacting with others and you don't go well out of your way to protect your identity, you are &lt;b&gt;not&lt;/b&gt; anonymous. You may feel anonymous, but it's an illusion. &lt;/p&gt;

&lt;p&gt;If you make comments on blogs and use the same identity over a period of time so that people can recognize you, &lt;b&gt;you are not anonymous&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;If you ever mention personal details of your life online or fill them out in forms, &lt;b&gt;you are not anonymous&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;If you have an internet connection in your home which keeps the same &lt;acronym title="Internet Protocol"&gt;IP&lt;/acronym&gt; address for a long period of time, whether it's static or dynamic, &lt;b&gt;you are not anonymous&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;If you maintain an account on a webserver which keeps logs (and pretty much all of them do, with rare &lt;a href="http://www.eff.org/effector/17/33.php#III"&gt;exceptions&lt;/a&gt;), then to anyone with access to the logs &lt;b&gt;you are not anonymous&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;The technologically savvy among you are saying, "Sure, but there are ways to get around all that." And you're right. There are. But in the end they are impractical for the average person. To be anonymous to everyone but the government, you need to be fairly antisocial. You can't maintain a consistent identity -- for any system where an account is required, you generally would have to create multiple names/accounts and never linger in any one for too long. Furthermore you'd need to watch out for quirks of spelling, typing, word choice, and grammar which might provide hints to which accounts are the same people. And you must trust the webmaster of the site, since most server software normally keeps logs of which accounts are accessed from which &lt;acronym title="Internet Protocol address"&gt;IP&lt;/acronym&gt;. Anonymizing proxy servers are possible, but due to the vanishingly small number of people that use them, you can actually make yourself &lt;b&gt;less&lt;/b&gt; anonymous by doing so! And most obviously, but perhaps the thing that people forget most often, is that you can NEVER reveal to anyone your real name; the memory of a web server is much longer than the memory of a person, and in many cases things you say on the web NEVER go away.&lt;/p&gt;

&lt;p&gt;A recent example of how anonymity failed on the web came to my attention this summer. Remember the book &lt;i&gt;Unfit for Command&lt;/i&gt;? It was not much more than an ugly hack job written to smear John Kerry, but the book got some attention from the paid conservative onanists. Then a micro-scandal flared up when it was revealed that one of the co-authors, Jerry Corsi, had made some &lt;a href="http://mediamatters.org/items/200408060010"&gt;nasty, hateful, and often racist comments&lt;/a&gt; on the nasty, hateful, and often racist far-right-wing political website Free Republic. Oops. &lt;/p&gt;

&lt;p&gt;It turns out that Corsi fell victim to the last and most obvious pitfall -- he revealed his name, and it later came back to bite him. But take a closer look. Joe Conason of Salon had &lt;a href="http://www.salon.com/opinion/conason/2004/08/06/mccain_on_swift_boat_veterans/index.html"&gt;just documented&lt;/a&gt; the links between the Swift Boat Veterans for Truth and Free Republic, two organizations whose names are very much &lt;a href="http://www.virushead.net/rmuse/2004/10/you-lost-us-at-orwellian.html"&gt;Orwellian&lt;/a&gt; &lt;a href="http://www.disinfopedia.org/wiki.phtml?title=Doublespeak"&gt;doublespeak&lt;/a&gt;. To the best of my recollection, Conason was first to pick up on the link and then someone else found Corsi's name. But even if Corsi hadn't made the obvious slip, it really might not have been very long before Corsi was identified from his posts on Free Republic anyway.&lt;/p&gt;

&lt;p&gt;Don't believe me? Perhaps you remember the protestors who "infiltrated" the Republican National Convention and made a nuisance of themselves. They were quickly tackled and subdued, but a &lt;abbr title="television"&gt;TV&lt;/abbr&gt; camera caught a young-looking guy kicking one of them, a girl, while she was pinned down on the floor by event security. A lot of people were outraged, and there were a flurry of blog posts like &lt;a href="http://coeusgroup.com/en/archives/181-Young-Republican-caught-on-tape-kicking-anti-Bush-protestor-at-RNC.html"&gt;this one&lt;/a&gt; trying to identify him. &lt;/p&gt;

&lt;p&gt;With nothing to go on but his obvious political leanings and a &lt;abbr title="video capture"&gt;vidcap&lt;/abbr&gt; of his fairly nondescript face, a likely candidate named Scott Robinson from &lt;abbr title="University of Pennsylvania"&gt;UPenn&lt;/abbr&gt;'s Wharton was &lt;a href="http://www.reason.com/hitandrun/2004/09/kicking_em_whil.shtml#006640"&gt;tracked down&lt;/a&gt;. He eventually denied it, and it's not quite proved beyond a reasonable doubt. But there are things that make you go hmmm. Someone with a guilty conscience cropped him out of &lt;a href="http://www.ntu.org/images/interns/2004interns.jpg"&gt;a picture&lt;/a&gt; on the National Taxpayer's Union website while the brouhaha was going on. Hmmm. People came forward who knew him and said yeah, sounds exactly like something he would do. Hmmm. The chair of the &lt;abbr title="University of Pennsylvania"&gt;UPenn&lt;/abbr&gt; College Republicans even said it &lt;a href="http://www.dailypennsylvanian.com/vnews/display.v/ART/2004/09/20/414e80e9ee4dd"&gt;looks like him&lt;/a&gt;. Hmmm. What do you think?&lt;/p&gt;

&lt;p&gt;There are many more stories like these two. I'll spare you the details, but I've been working online for more than a decade (closer to two decades, if you count &lt;acronym title="Bulletin Board System"&gt;BBS&lt;/acronym&gt; systems), and the same pattern keeps showing up.&lt;/p&gt;

&lt;p&gt;Are you really anonymous? No. Not really, not when somebody really wants to know.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-110490120775009740?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110490120775009740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110490120775009740'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2005/01/anonymity-and-web.html' title='Anonymity and the Web'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-110075645911005347</id><published>2004-11-17T19:36:00.000-05:00</published><updated>2007-09-04T02:47:28.162-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>The Echo Chamber</title><content type='html'>&lt;p&gt;After you've been bouncing around weblogs for a while, you start to notice that there's an awful lot of echo (echo... echo...) in the blogosphere. (sphere... sphere...) In fact, sometimes it's downright annoying to see a dozen different posts on the same subject. What ever happened to diversity? Or sticking to what you know, rather than floating wild-assed guesses and making inane comments about something you know very little about?&lt;/p&gt;

&lt;p&gt;Sure, people do that a lot in their everyday conversation. And blogs by their nature are going to reflect that. Believe me, I have no illusions of anything changing. And it's not just blogs -- 24 hour news channels, news magazines, and tabloids all suffer from the same effect. &lt;/p&gt;

&lt;p&gt;Personally, I find it a lot more interesting when someone speaks with authority about their field of expertise, or talks about things that are decidedly off the bandwagon. That's why I keep tabs on Iraq via Juan Cole's &lt;a href="http://www.juancole.com/"&gt;Informed Comment&lt;/a&gt;, look for interesting and solid investigative reporting at &lt;a href="http://salon.com/"&gt;Salon&lt;/a&gt;, geek out with &lt;a href="http://daringfireball.net/"&gt;Daring Fireball&lt;/a&gt;, and occasionally check for updates on below-the-media world events through Soj's excellent &lt;a href="http://www.weblog.ro/soj/"&gt;Flogging the Simian&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Linking and bandwagoneering has its place, certainly. It can provide a lot of ready detail and perspective on whatever topics are being attacked by the bandwagon at the moment. However, it can also serve as a distraction from other topics. After a certain point, the information content of each additional link starts to decrease, until the additional links are more noise than signal.&lt;/p&gt;

&lt;p&gt;The more interesting thing to me is increasing the diversity of topics, which you get from people who post original articles with meaningful content. And in the long run, I think that's going to be what the Internet is really all about. Original content will be the pearls that people seek out in the ocean of information -- or more colloquially, the bucket of shit -- that is the 'net. &lt;/p&gt;

&lt;p&gt;And that's my take on blogging in a nutshell: &lt;b&gt;Be the pearl, not the shit.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;'Nuff said.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-110075645911005347?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110075645911005347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/110075645911005347'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2004/11/echo-chamber.html' title='The Echo Chamber'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-109589945417617859</id><published>2004-09-22T19:29:00.000-04:00</published><updated>2007-09-04T02:46:33.500-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>The Bottle Let Me Down</title><content type='html'>&lt;p&gt;&lt;a href="http://click.linksynergy.com/fs-bin/stat?id=Z7VP2ShD4E0&amp;amp;offerid=78941&amp;amp;type=3&amp;amp;subid=0&amp;amp;tmpid=1826&amp;amp;RD_PARM1=http%253A%252F%252Fphobos.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewAlbum%253FplayListId%253D4671083%2526originStoreFront%253D143441%26partnerId%3D30" target="_blank"&gt;&lt;img src="http://homepage.mac.com/drewthaler/images/blog-bottleletmedown.jpg" border="0" align="right" alt="Album cover" /&gt;&lt;/a&gt;I ran across this album in iTunes while searching for something else. It caught my attention first because of the title, and then the whole concept and the interesting glimpses available through the preview.&lt;/p&gt;

&lt;p&gt;Check it out: &lt;a href="http://click.linksynergy.com/fs-bin/stat?id=Z7VP2ShD4E0&amp;amp;offerid=78941&amp;amp;type=3&amp;amp;subid=0&amp;amp;tmpid=1826&amp;amp;RD_PARM1=http%253A%252F%252Fphobos.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewAlbum%253FplayListId%253D4671083%2526originStoreFront%253D143441%26partnerId%3D30"&gt;The Bottle Let Me Down&lt;/a&gt; - Country Songs for Young Suckers. (At &lt;a href="http://www.amazon.com/exec/obidos/ASIN/B000066JE8/drewthaler-20" target="_blank"&gt;Amazon&lt;/a&gt; for those who aren't &lt;a href="http://www.apple.com/itunes/" target="_blank"&gt;iTunes&lt;/a&gt;-enabled.) Nice play on words. Yes, it's a kid's album, and yes, it's got a country theme... but that's not a problem because you have an open mind, right? Besides, most of them are pretty mild and they're honest country songs; not that glitzy fake western stuff.&lt;/p&gt;

&lt;p&gt;Figuring it was worth $10 just for kicks, I bought it. There are a few notable standouts in the album.&lt;/p&gt;

&lt;p&gt;The musical:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.linksynergy.com/fs-bin/stat?id=Z7VP2ShD4E0&amp;amp;offerid=78941&amp;amp;type=3&amp;amp;subid=0&amp;amp;tmpid=1826&amp;amp;RD_PARM1=http%253A%252F%252Fphobos.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewAlbum%253FselectedItemId%253D4671001%2526playListId%253D4671083%2526originStoreFront%253D143441%26partnerId%3D30"&gt;&lt;b&gt;Sad and Dreamy&lt;/b&gt;&lt;/a&gt;, by Alejandro Escovedo - "I hit the big 1-0, I feel so old, candy just doesn't taste as good any more." Oh, life is so hard when you turn ten whole years old! The mournful tone reminds me of Nil Lara.&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.linksynergy.com/fs-bin/stat?id=Z7VP2ShD4E0&amp;amp;offerid=78941&amp;amp;type=3&amp;amp;subid=0&amp;amp;tmpid=1826&amp;amp;RD_PARM1=http%253A%252F%252Fphobos.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewAlbum%253FselectedItemId%253D4671039%2526playListId%253D4671083%2526originStoreFront%253D143441%26partnerId%3D30"&gt;&lt;b&gt;Three Little Fishes&lt;/b&gt;&lt;/a&gt;, by Andy Hopkins &amp;amp; Jon Rauhouse - definitely a kid's song, but the refrain is catchy.&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.linksynergy.com/fs-bin/stat?id=Z7VP2ShD4E0&amp;amp;offerid=78941&amp;amp;type=3&amp;amp;subid=0&amp;amp;tmpid=1826&amp;amp;RD_PARM1=http%253A%252F%252Fphobos.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewAlbum%253FselectedItemId%253D4671074%2526playListId%253D4671083%2526originStoreFront%253D143441%26partnerId%3D30"&gt;&lt;b&gt;Little Red Riding Hood&lt;/b&gt;&lt;/a&gt;, by Freakwater - surprisingly dark and sexy. "You're everything a big bad wolf could want." Rowr.&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.linksynergy.com/fs-bin/stat?id=Z7VP2ShD4E0&amp;amp;offerid=78941&amp;amp;type=3&amp;amp;subid=0&amp;amp;tmpid=1826&amp;amp;RD_PARM1=http%253A%252F%252Fphobos.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewAlbum%253FselectedItemId%253D4671079%2526playListId%253D4671083%2526originStoreFront%253D143441%26partnerId%3D30"&gt;&lt;b&gt;Rubber Duckie&lt;/b&gt;&lt;/a&gt;, by Kelly Hogan - she's got a very sexy voice, on par with Stacy Kent, and this is a fun song which shows it off well.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;And the silly:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.linksynergy.com/fs-bin/stat?id=Z7VP2ShD4E0&amp;amp;offerid=78941&amp;amp;type=3&amp;amp;subid=0&amp;amp;tmpid=1826&amp;amp;RD_PARM1=http%253A%252F%252Fphobos.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewAlbum%253FselectedItemId%253D4671003%2526playListId%253D4671083%2526originStoreFront%253D143441%26partnerId%3D30"&gt;&lt;b&gt;Godfrey&lt;/b&gt;&lt;/a&gt;, by Robbie Fulks - "Godfrey, the sickly unemployed amateur children's magician... he's got tricks you haven't seen." Whoa.&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.linksynergy.com/fs-bin/stat?id=Z7VP2ShD4E0&amp;amp;offerid=78941&amp;amp;type=3&amp;amp;subid=0&amp;amp;tmpid=1826&amp;amp;RD_PARM1=http%253A%252F%252Fphobos.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewAlbum%253FselectedItemId%253D4671031%2526playListId%253D4671083%2526originStoreFront%253D143441%26partnerId%3D30"&gt;&lt;b&gt;I Am My Own Grandpa&lt;/b&gt;&lt;/a&gt;, by the Asylum Street Spankers - fast-paced familial silliness, served up in bluegrass.&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.linksynergy.com/fs-bin/stat?id=Z7VP2ShD4E0&amp;amp;offerid=78941&amp;amp;type=3&amp;amp;subid=0&amp;amp;tmpid=1826&amp;amp;RD_PARM1=http%253A%252F%252Fphobos.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewAlbum%253FselectedItemId%253D4671060%2526playListId%253D4671083%2526originStoreFront%253D143441%26partnerId%3D30"&gt;&lt;b&gt;Funky Butt&lt;/b&gt;&lt;/a&gt;, by Devil in a Woodpile - "She got the funky butt, stinky butt... open up the window and let the funk go out." The laid-back New Orleans blues sound is actually pretty nice on the ears too.&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/7898615-109589945417617859?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/109589945417617859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/109589945417617859'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2004/09/bottle-let-me-down.html' title='The Bottle Let Me Down'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-109226755668966573</id><published>2004-08-11T16:44:00.000-04:00</published><updated>2007-09-04T02:44:56.628-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>John Kerry, Hero</title><content type='html'>&lt;p&gt;Here are a few collected stories about the lives that John Kerry has saved with his quick, decisive actions.&lt;/p&gt;

&lt;p&gt;There are more stories besides the life-saving ones, if you choose to seek them out, about Kerry's &lt;a href="http://www.telegram.com/static/fire/pol121191.html"&gt;sympathy and caring&lt;/a&gt;. For the most part I'll leave that up to you. But really, these four stories show exactly why John Kerry is a man deserving of everyone's respect regardless of your political views.&lt;/p&gt;

&lt;p&gt;Think about the man you're reading about here, and then consider the motives of those who have been attempting to smear him. And always remember to check non-partisan sources like &lt;a href="http://www.factcheck.org/"&gt;Annenberg Political FactCheck&lt;/a&gt; for the real truth.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.latimes.com/news/nationworld/nation/la-na-vietnamvet13mar13,1,4247569.story?coll=la-headlines-nation"&gt;Jim Rassmann&lt;/a&gt; in 1969&lt;br /&gt;
Source: Los Angeles Times, March 13 2004&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Rassmann was 21 at the time, a Special Forces lieutenant in charge of a company of American and Chinese fighters. On that day, they traveled on a convoy of five patrol boats led by the 25-year-old Kerry, a Navy lieutenant — and they were on the run, being chased down the Bay Hap River by enemy soldiers firing guns and rockets. &lt;/p&gt;

&lt;p&gt;The group had already lost one soldier that day. As they sped down the river, one boat was blown out of the water, and then another. An explosion wounded Kerry in the arm and threw Rassmann into the river. Rassmann dove to the bottom to avoid being run over by the other boats. When he surfaced, he saw the convoy had gone ahead.&lt;/p&gt;

&lt;p&gt;Viet Cong snipers fired at him, and Rassmann submerged over and over to avoid being hit. The bullets came from both banks, and Rassmann had nowhere to go. He began thinking his time had come, but the fifth time he came up, he saw the convoy had turned around. Kerry had ordered the boats back to pick up the man overboard. &lt;/p&gt;

&lt;p&gt;Kerry's boat, under heavy fire, sidled up to the struggling soldier. Rassmann tried to scramble up a cargo net at the bow but was too exhausted to make it all the way. He clung to the net as bullets whizzed past.&lt;/p&gt;

&lt;p&gt;"Next thing I knew, John came out in the middle of all this," Rassmann says. "I couldn't believe it. He was going to get killed. He ran to the edge, reached over with his good arm [Kerry had been wounded in his right arm] and pulled me over the lip."&lt;/p&gt;

&lt;p&gt;Rassmann later recommended Kerry for the Silver Star, and was upset when the Army instead awarded Kerry a lesser Bronze Star with a "V" for valor. The medal citation described Kerry's actions on the river that day.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://www.lasvegassun.com/sunbin/stories/sun/2004/feb/06/516309920.html"&gt;Former US Senator Chic Hecht&lt;/a&gt; in 1988&lt;br /&gt;
Source: Las Vegas Sun, February 6 2004.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Former U.S. Sen. Chic Hecht of Nevada is a staunch Republican, but he thanks his lucky stars for Democratic presidential hopeful Sen. John Kerry of Massachusetts.&lt;/p&gt;

&lt;p&gt;On July 12, 1988, Hecht was attending a weekly Republican luncheon when a piece of apple lodged firmly in his throat.&lt;/p&gt;

&lt;p&gt;Hecht stumbled out of the room, thinking he might vomit but not wanting to do it in front of his colleagues. Sen. Kit Bond, R-Mo., thumped his back, but Hecht quickly passed out in the hallway.&lt;/p&gt;

&lt;p&gt;Just then, Kerry stepped off an elevator, rushed to Hecht's side and gave him the Heimlich maneuver -- four times.&lt;/p&gt;

&lt;p&gt;The lifesaving incident made international news, and Dr. Henry Heimlich, who invented the maneuver in 1974, called Hecht to say that had Kerry intervened just 30 seconds later Hecht might have been in a vegetative state for life.&lt;/p&gt;

&lt;p&gt;"This man gave me my life," the 75-year-old Hecht said Thursday.&lt;/p&gt;

&lt;p&gt;Hecht said he was amazed that Kerry acted so quickly -- some people were assuming that he was having a heart attack.&lt;/p&gt;

&lt;p&gt;"He knew exactly what to do," he said. "But a lot of people know what to do. They just don't size up the situation immediately."&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://www.washingtonpost.com/wp-dyn/articles/A22247-2004Jul28.html"&gt;Del Sandusky&lt;/a&gt;&lt;br /&gt;
Source: Washington Post, July 28 2004&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;When George Butler, a college friend, broke his hip and femur in 1994, Kerry tracked him down the next day at a hospital in New York. Butler had been lying alone, worrying about a blood clot going to his brain. Suddenly, there was Kerry ringing his phone. He was in Tokyo, where it was 4 a.m.&lt;/p&gt;

&lt;p&gt;Another time, Sandusky, Kerry's former helmsman, called him from Illinois and said, "I'm ready to cash it in. I can't stop the bad dreams, and I can't stop the drinking." Over the next 24 hours, Kerry talked to Sandusky -- canceling meetings, instructing aides to yank him off the Senate floor -- until his isolated friend agreed to check into a treatment center. Over the next 12 weeks, Kerry called Sandusky's doctors to make sure they hadn't forgotten his crewmate.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://transcripts.cnn.com/TRANSCRIPTS/0407/29/se.03.html"&gt;Licorice the hamster&lt;/a&gt; - Alexandra Kerry at the Democratic National Convention, July 30 2004&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Well, it is an incredible experience to be here tonight. And I have to admit that it hasn't been easy to sift through years of memories about my father and find those few that might best tell you who John Kerry really is. So let me just begin with one July day when Vanessa and I were kids. It's a silly story, but it's true, and it's one of my favorite memories about my father.&lt;/p&gt;

&lt;p&gt;We were standing on a dock waiting for a boat to take us on a summer trip. Vanessa, the scientist, had packed all of her animals, including her favorite hamster. Our overzealous golden retriever got tangled in his leash and knocked the hamster cage off the dock. We watched as Licorice, the unlucky hamster, as he became termed, bubbled down into a watery doom.&lt;/p&gt;

&lt;p&gt;Now, that might have been the end of the story, a mock funeral at sea and some tears for a hamster lost. But my dad jumped in, grabbed an oar, fished the cage from the water, hunched over the soggy hamster and began to administer CPR. Now, there are still to this day, there are some reports of mouth-to-mouth, but I admit that's probably a trick of memory. The hamster was never quite right after that, but he lived.&lt;/p&gt;

&lt;p&gt;Now, like I said, it may sound silly and we still laugh about it today, but it was serious. And that's what mattered to my father.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-109226755668966573?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/109226755668966573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/109226755668966573'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2004/08/john-kerry-hero.html' title='John Kerry, Hero'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-7898615.post-109200635970227477</id><published>2004-08-08T19:07:00.000-04:00</published><updated>2006-10-28T13:50:02.255-04:00</updated><title type='text'>First posts</title><content type='html'>First posts are pretty much useless things. So let's just get this out of the way quick, &lt;i&gt;Annie Hall&lt;/i&gt; style, and not have to worry about it. Right now my darling wife is heading home with sushi for the family so I don't have much time. We all like sushi here, even my 8-year-old stepdaughter, a fact for which I am incredibly grateful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7898615-109200635970227477?l=drewthaler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/109200635970227477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7898615/posts/default/109200635970227477'/><link rel='alternate' type='text/html' href='http://drewthaler.blogspot.com/2004/08/first-posts.html' title='First posts'/><author><name>Drew Thaler</name><uri>http://www.blogger.com/profile/01081923007415869973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_dBL5Q_d0aB4/SmQG60ff4xI/AAAAAAAAAAU/RzpkBvzJYX8/S220/drew.png'/></author></entry></feed>
