<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Buggin&amp;#39; My Life Away</title><subtitle type="html">Musings of a Mad Mac Maven</subtitle><id>http://blogs.msdn.com/b/rick_schaut/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/rick_schaut/atom.aspx" /><generator uri="http://telligent.com" version="5.6.583.19431">Telligent Community 5.6.583.19431 (Build: 5.6.583.19431)</generator><updated>2006-06-16T18:42:29Z</updated><entry><title>The Glaring Hole in the NSTextInputClient Protocol</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2011/11/28/the-glaring-hole-in-the-nstextinputclient-protocol.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2011/11/28/the-glaring-hole-in-the-nstextinputclient-protocol.aspx</id><published>2011-11-28T17:04:25Z</published><updated>2011-11-28T17:04:25Z</updated><content type="html">&lt;p&gt;The fine folks at Apple generally do a pretty good job of designing the programmatic interfaces, "protocols" in Objective-C speak, that the system and applications use to communicate with each other. I mean that most sincerely. Designing programmatic interfaces is hard, because you have to anticipate the needs of different system components. Sometimes, you have to do that before relevant components have been written, so you'll not always anticipate those needs in a way that leads to a suitable user experience.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;NSTextInputClient&lt;/code&gt; protocol has a classic example of this problem. Take some time to &lt;a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSTextInputClient_Protocol/Reference/Reference.html#//apple_ref/occ/intf/NSTextInputClient"&gt;read the reference&lt;/a&gt;, and see if you can spot the hole. Go ahead. Take your time. I'll wait.&lt;/p&gt;
&lt;p&gt;Did you spot it? No? OK. Try this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make sure you have the Kotoeri input source enabled (System Preferences/Language &amp;amp; Text/Input Sources; check Kotoeri and at least the Hirigana sub-item). You'll also want to check the "Show Input menu on menu bar" check box.&lt;/li&gt;
&lt;li&gt;Launch TextEdit&lt;/li&gt;
&lt;li&gt;Go to the Input menu (a US flag if you're a US user), and select "Hiragana"&lt;/li&gt;
&lt;li&gt;Type "sa"&amp;lt;return&amp;gt;&amp;lt;space&amp;gt;"sa"&amp;lt;return&amp;gt;"&lt;/li&gt;
&lt;li&gt;Back up a character, without selecting it, by pressing the left arrow key&lt;/li&gt;
&lt;li&gt;On the Input menu, under Kotoeri, select "Reverse Conversion"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At this point, you'll get a popup menu that provides a number of alternative characters to be inserted instead of the default "さ" that was inserted in place of the second "sa" that you typed in step 4.&lt;/p&gt;
&lt;p&gt;What just happened? Well, you asked the Kotoeri IME (Input Method Editor) to try to reconvert some text in the document. At that point, Kotoeri needs to figure out what text you want to reconvert. Now, put yourself in the place of someone who's implementing this feature in Kotoeri. Go back to the reference for the &lt;code&gt;NSTextInputClient&lt;/code&gt; protocol, and ask yourself, how do I implement this feature?&lt;/p&gt;
&lt;p&gt;Well, the first thing you'll do is, see if the user has any text selected, because that's a pretty clear indication of exactly which text the user wants to reconvert. So, you'll call the &lt;code&gt;selectedRange&lt;/code&gt; method. If the selected range isn't empty, then you'll just call &lt;code&gt;attributedSubstringForProposedRange:actualRange:&lt;/code&gt; passing the selected range you just got from calling the &lt;code&gt;selectedRange&lt;/code&gt; method.&lt;/p&gt;
&lt;p&gt;In the steps above, however, the user selection is an insertion point. The &lt;code&gt;selectedRange&lt;/code&gt; method returns an empty range. Now what? You'll need to probe the document content to figure out what text to reconvert. But, the insertion point can be at the end of the document. As a Kotoeri implementer, the first question you're likely to ask is, how long is the document? Unfortunately, there's no method in the &lt;code&gt;NSTextInputClient&lt;/code&gt; protocol that provides a direct answer to this question. Thus, the glaring hole in the protocol.&lt;/p&gt;
&lt;p&gt;At this point, as someone who is implementing an input method editor, you have two options. You can create a reasonable range of text to probe based on the location of the insertion point, and call &lt;code&gt;attributedSubstringForProposedRange:actualRange:&lt;/code&gt; paying attention to the &lt;code&gt;&lt;em&gt;actualRange&lt;/em&gt;&lt;/code&gt; value that you get back. Or, you can simply call the &lt;code&gt;attributedString&lt;/code&gt; method, and get the length of the result.&lt;/p&gt;
&lt;p&gt;It's possible that the Kotoeri IME has been revised for Lion, but, as of Snow Leopard, Kotoeri actually uses the second option. And, note that the &lt;code&gt;attributedString&lt;/code&gt; method is optional. If you've written an application that implements the &lt;code&gt;NSTextInputClient&lt;/code&gt; protocol but have omitted an implementation for the &lt;code&gt;attributedString&lt;/code&gt; method, then nothing will happen if the user selects "Reverse Conversion" in the above scenario.&lt;/p&gt;
&lt;p&gt;OK, so what's the big deal? The protocol does provide a solution to the problem from the IME's perspective, so everything's fine, right? Well, not quite. Let's put our end-user hats back on. Some users have documents that are thousands of pages long. You do not want to implement the &lt;code&gt;attributedString&lt;/code&gt; method in a way that simply returns a standard &lt;code&gt;NSAttributedString&lt;/code&gt;, or even just a regular &lt;code&gt;NSString&lt;/code&gt;. Both the performance and the memory usage is not likely to lead to a satisfying end-user experience for people who spend their days editing long documents.&lt;/p&gt;
&lt;p&gt;Careful readers of the &lt;a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html"&gt;&lt;code&gt;NSString&lt;/code&gt; class reference&lt;/a&gt; will figure out a reasonable solution to this problem, but a more robust design for the &lt;code&gt;NSTextInputClient&lt;/code&gt; protocol might have obviated the need for applications developers to pay such close attention. Having said that, it's probably not fair to either Apple systems engineers or the folks who implemented the Kotoeri IME to argue that they should have thought of this. Anticipating this kind of corner case is something even very smart people will miss.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Rick&lt;/p&gt;
&lt;p&gt;Currently playing in iTunes: &lt;em&gt;Days Is Almost Gone&lt;/em&gt; by The Derek Trucks Band&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10242072" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Programming" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Programming/" /></entry><entry><title>Steve Jobs</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2011/10/06/steve-jobs.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2011/10/06/steve-jobs.aspx</id><published>2011-10-06T19:16:53Z</published><updated>2011-10-06T19:16:53Z</updated><content type="html">&lt;p&gt;There's a lot being written about Steve's passing, but I'm afraid there's so much of it that truly misses what Steve really did for our industry. For example, Matt Yglesias asks, "&lt;a href="http://thinkprogress.org/yglesias/2011/10/06/337507/why-so-few-steve-jobses/"&gt;Why so view?&lt;/a&gt;" I posted a brief comment there, but I think the point deserves a good bit of elaboration.&lt;/p&gt;
&lt;p&gt;Steve's contribution to the industry I think is epitomized in this video:&lt;/p&gt;
&lt;p&gt;&lt;iframe src="http://www.youtube.com/embed/oBISzVRmYIM" width="420" height="315" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;As &lt;a href="http://www.nadynerichmond.com/blog/"&gt;Nadyne&lt;/a&gt; might say, there are really two parts of user experience: aesthetics and functionality. Aesthetics is about your emotional reaction to using a product--a certain joy or excitement. It's what people are really talking about when they refer to the "cool" factor. Functionality is what a product helps you to achieve. Does it relieve you of mundane tasks, thereby allowing you to focus your energies on your own creative output? How does a product help you achieve your goals?&lt;/p&gt;
&lt;p&gt;Aesthetics leads you to want to break with the past. Functionality leads you to want to build on the past in ways that don't leave people stranded. There's always a certain level of tension between the two, and the amount of emphasis you place on one over the other can lead to some widely divergent design decisions.&lt;/p&gt;
&lt;p&gt;Steve placed far more emphasis on aesthetics than the rest of us did. He always thought that if people didn't experience joy in using his products, then he'd failed in some important and fundamental way. The rest of us generally focused on functionality. The one quibble I have with Steve's criticism is this: it's not a question of whether or not we had any taste. It's more a question of whether or not we thought it was an important place to focus our energies. Steve thought it was. We didn't.&lt;/p&gt;
&lt;p&gt;But, the key insight that I think is missing in most of the tributes being paid to Steve is that both of these aspects of user experience are important. I truly believe that Steve understood this. He was, after all, the one who had said, back in the dark days of the early 90's, that Apple couldn't survive without Microsoft. He took a lot of flack from people in the industry for that stance, but I think he understood, at least intuitively, Apple users needed our functional focus just as much as they needed his aesthetic focus.&lt;/p&gt;
&lt;p&gt;Steve's true contribution to the industry, then, is the way he married both of these concerns. He and Apple set the aesthetic parameters that determined the boundaries in which those of use who developed software for the Mac would fill in the functional aspects of user experiences. That combination leads to some fascinating synergy that began with movable-modal dialog boxes and combination edit/drop-down menu controls in Mac Word 4 all the way on up to how we did the ribbon in Mac Office 2011. If there is any legacy of Steve's that I would hope this industry could cary forward, it's this balance between aesthetics and functionality.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Rick&lt;/p&gt;
&lt;p&gt;Currently playing in iTunes: &lt;em&gt;Wayfaring Stranger&lt;/em&gt; by The Tierney Sutton Band&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10221256" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="History" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/History/" /><category term="Mac BU" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Mac+BU/" /><category term="UI Design" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/UI+Design/" /></entry><entry><title>Usability and Styles</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2010/05/30/usability-and-styles.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2010/05/30/usability-and-styles.aspx</id><published>2010-05-30T16:20:43Z</published><updated>2010-05-30T16:20:43Z</updated><content type="html">&lt;p&gt;According to &lt;a href="http://www.betalogue.com/2010/05/06/styles/"&gt;Pierre&lt;/a&gt;, I'm too ossified to discuss this subject. On the other hand, when Pierre uses the word "usability," it's very much like the way Vizzini uses the word "inconceivable" in &lt;em&gt;The Princess Bride&lt;/em&gt;, and I'm often moved to quote Inigo Montoya, "You keep using that word. I do not think it means what you think it means."&lt;/p&gt;
&lt;p&gt;The problem with Pierre's discussion of usability is that it's completely devoid of any discussion of user tasks. Pierre never talks about &lt;em&gt;why&lt;/em&gt; a user would want to know what styles are applied to a given location in the document, and how the presentation of that information simplifies common user tasks. Had he done so, he would quickly realize that Pages' solution to some key user problems isn't as elegant as Pierre would have us believe. Indeed, there's one key problem where Pages offers no effective solution at all.&lt;/p&gt;
&lt;p&gt;People use styles for two general reasons that are not incompatible with one another: to denote structure in the document, and to maintain a consistent look throughout the document. A common task associated with both goals is to review the document for consistent usage, and it's worth noting that the person doing the review is often not the same person who originally wrote the document.&lt;/p&gt;
&lt;p&gt;Note that I've used the word "review," and I've done so for an important reason. A review might involve a scan of the document, but that's not always the case. Indeed, one of the more important questions users ask is, where are certain styles used within the document? Both Word and Pages have a rather quick way to answer that question via the "Select All" or "Select All Uses..." menu options on the individual style items in either the styles pane in Word or the styles drawer in Pages. Though, here, I would argue that Word's solution is better in two ways. First, in Word, you can filter the list of styles to only those styles in use. In Pages, you have to scan a list of styles looking for styles that are in use. Second, in Pages, you have to select the entire document. In Word you don't.&lt;/p&gt;
&lt;p&gt;So, think about the work flow for reviewing the use of several styles in a document. In Word, you'd filter the styles list to styles that are in use, then choose "Select All" on the style item menu for each style you'd want to review. In Pages, you first have to select the entire document, then scan the styles drawer for the style you're interested in reviewing, and then choose "Select All Uses" from the style item in the drawer. To review the next style, in Word, you just choose the "Select All" item for the next style you want to review. In Pages, you have to reselect the entire document and then repeat the scan through the list of styles. In this case, Word's UI allows the user to complete the task in less time and with fewer steps.&lt;/p&gt;
&lt;p&gt;Now, that covers how users would answer the question, "Where have I used this style?" There are times when the user will want to ask, "What styles are used here?" For character styles, Pages is marginally better than Word. Pierre is correct in noting that Word currently does not give the user a way to answer that question for any arbitrary sub-section of the document. On the other hand, in both Word and Pages, you still need to click around in the document in order to see what styles have been applied in particular locations, and it's not at all clear how seeing the styles used in an arbitrary selection simplifies the overall task of reviewing a document for style consistency.&lt;/p&gt;
&lt;p&gt;Moreover, with Pages, the user is still saddled with having to scan a list of styles in order to see which ones are applied. And, as a side note, the two different style menus do not provide a particularly elegant solution either. The little "-" sign next to the style items is difficult for some users to even see, and the fact that the user has to drop two menus to find the relevant information adds yet another step to any user task in which the user seeks to answer the question, "What styles have I applied here?"&lt;/p&gt;
&lt;p&gt;A far better solution would be to provide visual cues in the document itself showing what styles have been applied. For paragraph styles, Word has long had this feature in draft view. On the "Word" menu, select "Preferences" and then click on the "View" icon. In the "Window" section, you'll see a "Style area width" edit item.&lt;/p&gt;
&lt;p&gt;But, that's not an ideal solution either. First, there's no information about character styles. Second, the user has to switch document views. For Word 2011, we've come up with a better solution. You'll likely see a post on Mac Mojo talking about the work we've done here, but it's a far better solution than those offered by either Pages 2009 or Word 2008. No selection required, no need to drop a menu or scan through a list of styles in the styles drawer. In order to see what styles have been applied, the user will merely need to scroll through the document.&lt;/p&gt;
&lt;p&gt;Now, we've talked about two different questions that users often ask: "Where has this style been used?" and, "What styles are used here?" There's a third question that users ask, and it's often more important than the other two. That question is, "Where has direct formatting been used when a style should have been used?" The goal, here, is to correct these cases; to replace the direct formatting with the styles that should have been used in the first place.&lt;/p&gt;
&lt;p&gt;Pages currently offers no real solution to this problem. At present, Word does have a solution, but it still requires the user to scan through the document and click where the formatting appears to be different from the underlying style. Though, to Word's credit, the "Current style of selected text" control in the styles pane gives the user a way to select all instances of that combination of style + direct formatting in the document, at which point the user can then simply apply the style that ought to have been applied in lieu of the direct formatting.&lt;/p&gt;
&lt;p&gt;As with the "style area width" feature in Word, this is also not an ideal solution to the problem. We can do better. Indeed, perhaps there's a solution that allows the user to merely scroll through the document...&lt;/p&gt;
&lt;p&gt;When it comes to usability, it's not enough to just "think different." You have to think about what users are trying to do and what tasks they need to perform in order to achieve those goals. Ultimately, if your "usability" does little to shorten the amount of time it takes for users to complete important tasks, then it really has nothing to do with "usability" at all.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: &lt;/strong&gt;I couldn't talk about the work we've done when I first posted this, but here's a nice screen shot of Word 2011's Styles Guides:&lt;/p&gt;
&lt;p&gt;&lt;img title="0,1425,i=235534&amp;amp;sz=1,00.jpg" src="http://common3.ziffdavisinternet.com/util_get_image/23/0,1425,i=235534&amp;amp;sz=1,00.jpg" border="0" alt="0,1425,i=235534&amp;amp;sz=1,00.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;The full article is &lt;a href="http://www.pcmag.com/article2/0,2817,2369733,00.asp"&gt;here&lt;/a&gt;, and I'm particularly fond of Edward Mendelson's description of this feature:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The other terrific new feature is the Styles Guide display. When you turn this on, a color-coded column appears (on screen only) in the margin of your document. Each block of color has a number, and the colors and numbers match colors and numbers in the styles menu, so you can see at a glance which styles are attached to every paragraph. This is impossible in all other versions of Word, and all other word-processors. Another option, also available from the Styles menu, turns on a "direct formatting indicator" that outlines in blue all the text in the file that is formatted directly from a menu with (for example) italics or bold, instead of being formatted with a style. I only hope that Windows users will get this terrific feature before too long.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you look closely at the left-hand document, near the bottom, you'll see a bluish "9" box to the right of the yellowish "7" block. That means there's a character style applied within that line.&lt;/p&gt;
&lt;p&gt;Notice, also, that the "7" is drawn black while the "9" is drawn white. I'm proud to say that I came up with the algorithm for figuring the color for the number based on whether the human eye would perceive the background color as being "dark" or "light".&lt;/p&gt;
&lt;p&gt;And, by the way, that entire Styles pane is done completely in Cocoa. So, it has some nice animation features when you change the "List:" menu to change the collection of styles that's shown in the list.&lt;/p&gt;
&lt;p&gt;Was it John Gruber who said something about attention to detail when he linked to Pierre's original post?&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Rick&lt;/p&gt;
&lt;p&gt;Currently playing in iTunes: &lt;em&gt;I've Been Working&lt;/em&gt; by Van Morrison&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10017484" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Microsoft Word" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Microsoft+Word/" /><category term="UI Design" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/UI+Design/" /></entry><entry><title>Managing Shared Code</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2010/05/27/managing-shared-code.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2010/05/27/managing-shared-code.aspx</id><published>2010-05-27T23:08:49Z</published><updated>2010-05-27T23:08:49Z</updated><content type="html">&lt;p&gt;Brent Simmons has some thoughts on &lt;a href="http://inessential.com/2010/05/24/shared_code_management"&gt;managing shared code&lt;/a&gt;. Those ideas are a good start, the most important being that this code needs to be under some kind of source code management tool, preferably one with good branching/merging facilities.&lt;/p&gt;
&lt;p&gt;There are a couple of other ideas to keep in mind.  Brent's further bifurcation of code into Foundation and UIKit sub-sections is a good idea. Indeed, it's not a bad idea to start thinking of the relationship between your app and the OS as being the meat (tofu for the vegans out there) in a sandwich. The Foundation code is the bottom slice of bread, and the UIKit/NSFramework stuff is the top slice of bread.&lt;/p&gt;
&lt;p&gt;However, I'd take it a step further and break the code up into functional units. In Brent's case, I'd imagine that there's a networking stack, some XML parsing/XML RPC code and some data store manipulation just in the Foundation tree alone. I'd keep those separate from each other.&lt;/p&gt;
&lt;p&gt;I'd also reconsider the idea of building static libraries. The shared code, along with the unit tests and any other acceptance testing code, should be in at least one separate project, but it's even better to have each functional unit of code in its own project. The linker should be able to dead-strip anything that any given client doesn't use, especially if these are static libraries, and having separate projects ensures that the code is always built the same way regardless if which client is using it. Managing the build settings for one shared project is much simpler than trying to ensure that the build settings are consistent across all the projects that use the shared code.&lt;/p&gt;
&lt;p&gt;If debugging is a problem, then create separate build and debugging/development projects. The latter can help reduce the time required for the edit/build/debug cycle to complete, yet still retain the functional separation that is beneficial to code that's shared.&lt;/p&gt;
&lt;p&gt;Once you've separated pieces out into projects according to functional units, have each project build a framework that exports the symbols that are "public" for that shared piece. You can still link the static libraries for actual distribution bits. Indeed, the target that builds the framework should have a single, dummy source file while the framework links in the static library that's actually shared.  Doing this will tell you what the interdependencies are between the various functional units. You'll discover whether or not some circular dependencies have crept into your code, and those will almost certainly end up causing you headaches in the future (if they aren't already causing you headaches now).&lt;/p&gt;
&lt;p&gt;Remember, agile programming isn't about &lt;em&gt;you&lt;/em&gt; being agile. It's about making &lt;em&gt;your code&lt;/em&gt; agile. And, if you're sharing code, it really needs to be agile enough to work in the variety of contexts in which its shared.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Rick&lt;/p&gt;
&lt;p&gt;Currently playing in iTunes: &lt;em&gt;Lost In the Flood&lt;/em&gt; by Bruce Springsteen &amp;amp; The E Street Band&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10016628" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Other" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Other/" /></entry><entry><title>UX Design: Context is Everything</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2010/05/14/ux-design-context-is-everything.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2010/05/14/ux-design-context-is-everything.aspx</id><published>2010-05-14T14:59:30Z</published><updated>2010-05-14T14:59:30Z</updated><content type="html">&lt;p&gt;Well, that didn't take long, did it? My &lt;a href="http://blogs.msdn.com/rick_schaut/archive/2010/05/11/john-gruber-makes-a-mistake.aspx"&gt;second post&lt;/a&gt; after a lengthy hiatus, and I end up on the front page of &lt;a href="http://daringfireball.net/linked/2010/05/12/office-mac-floppy"&gt;Daring Fireball&lt;/a&gt;. Clearly my talent for stirring the pot hasn't waned in the least over the past couple of years.&lt;/p&gt;
&lt;p&gt;I'm also amused at a number of the comments on that post. It's a product of my age. Not only do I remember a time when floppy disks really were floppy, my experience with them dates back to high-school when I had the, um, pleasure of doing accounting on an old IBM work station connected to a computer housed in a semi trailer that seemed to use up half the back parking lot. Those were 12" floppy disks, and they didn't hold very much data.&lt;/p&gt;
&lt;p&gt;But neither my age nor floppy disks address the overall point I was trying to make; a point that commenter &lt;a href="http://mmcwatters.com/blog/"&gt;Michael McWatters&lt;/a&gt;, stated very succinctly:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As in most things UX-related, there can be no immutable laws, only best practices and context-sensitive design solutions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;"UX" stands for User eXperience. It goes beyond just usability, and involves a systematic effort to understand how users feel when they use something. It's applicable outside the world of software, but it's becoming increasingly important in the software industry. In my previous post, I linked to &lt;a href="http://en.wikipedia.org/wiki/User_experience"&gt;this Wikipedia entry&lt;/a&gt;, which gives the ISO definition of user experience as "a person's perceptions and responses that result from the use or anticipated use of a product, system or service﻿."  You'll also see the word "affective," in the psychological sense, used to describe these feelings.&lt;/p&gt;
&lt;p&gt;User experience is inherently subjective. Indeed, it's about as far to the subjective end of the objective-subjective spectrum as you can get. We can't measure it directly, but we can take a look at the factors that determine a user's perceptions and responses. The user's past experience, for example, is one of these factors. Another factor is what the user wants to achieve--the user's goals. Yet another factor is the user's aesthetics.&lt;/p&gt;
&lt;p&gt;We use the word "context" to refer to the collective set of factors that determine a user's perceptions and responses to using a system, hence Michael's use of the phrase "context-sensitive design solutions."&lt;/p&gt;
&lt;p&gt;And it's the user's context that matters, not mine or John Gruber's, or yours unless you're a user. Even then, as an individual user, your context only matters to the extent that your context shares elements of the contexts of other users. That last statement is important, because users aren't homogeneous. The "average" user is as much of a statistical fiction as is the "average" household that, at one point, had 2.5 children and 1.5 cars.&lt;/p&gt;
&lt;p&gt;Users don't all have the same shared context. A couple of comments on my previous post help to illustrate this point.&lt;/p&gt;
&lt;p&gt;One commenter pointed out that, for Mac users, the use of a floppy-disk icon seems to be unique to Office. Let's take that as true. However, we've already had to limit our user population to Mac users. Furthermore, given the history of Mac Office, the use of a floppy-disk icon is part of the context for existing Mac Office users--the people most likely to use newer versions of Mac Office.&lt;/p&gt;
&lt;p&gt;Another commenter suggested doing away with the save operation altogether. We actually did that once, not with Mac Office, but with another app. We were quite surprised to see the number of users who were disturbed by their inability to figure out how to save their work. It never occurred to them that the app was saving their work as they went along.&lt;/p&gt;
&lt;p&gt;Since applications inherently target different users, the archetypical context for one app won't be the same as that for another app. Hence, a particular design decision that makes sense in one app, e.g. using a floppy disk as the icon for a save button, wouldn't make sense in another app.&lt;/p&gt;
&lt;p&gt;As an exercise, go back and read Apple's HIG in light of this idea of "context." Do those guidelines favor certain user contexts over others? Might there be some users for whom the target context inherent in Apple's HIG wouldn't be appropriate?  Why, indeed, are they called "guidelines," and not "rules"?&lt;/p&gt;
&lt;p&gt;I'll leave you with that thought for now. In an upcoming post, I'll talk a bit about how we break down user contexts into relatively homogeneous groups, and how that helps us prioritize the work we've done on Mac Office.&lt;/p&gt;
&lt;p&gt;Oh, and John, if you're still paying attention, the next time someone asks you what icon they should use on a "save" button, tell them to use a piggy bank.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Rick&lt;/p&gt;
&lt;p&gt;Currently playing in iTunes: &lt;em&gt;I'd Rather Be Blind, Crippled and Crazy&lt;/em&gt; by The Derek Trucks Band&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10013161" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="UI Design" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/UI+Design/" /></entry><entry><title>John Gruber Makes a Mistake</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2010/05/11/john-gruber-makes-a-mistake.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2010/05/11/john-gruber-makes-a-mistake.aspx</id><published>2010-05-12T02:08:02Z</published><updated>2010-05-12T02:08:02Z</updated><content type="html">&lt;p&gt;Over on DaringFireball, John Gruber points out &lt;a href="http://daringfireball.net/linked/2010/05/11/winphone7"&gt;an annoyance he has&lt;/a&gt; with icons used for "Save". Specifically, he doesn't like the idea of using a floppy disk as the icon, and he, rather snarkily, suggests using "S-a-v-e" to mean "Save".&lt;/p&gt;
&lt;p&gt;Couple of problems with this. First, the question is about icons, not labels. In the vast majority of cases, the label for a save button at least includes the word "save". There are, however, legitimate cases where you'd want to have an icon as well, so suggesting that developers not use any icons at all isn't really a viable choice.&lt;/p&gt;
&lt;p&gt;Second, text in an icon violates one of the cardinal rules of localization. Once you put text in an icon, you then have to have a version of the icon for every language you want to support.&lt;/p&gt;
&lt;p&gt;John closes his remarks by saying, "I can’t think of a single floppy-disk-for-save button anywhere in Mac OS X or iPhone OS..." Well, I can think of three: Word, PPT and Excel use a floppy disk as the icon. It's the icon we've been using for "Save" since back when having a floppy disk for that icon actually had meaning.&lt;/p&gt;
&lt;p&gt;Now, this does raise a rather interesting question for apps that have been around the block a few times. Do you change an icon which has a rather established meaning for current users when the nature of changes in computing have stripped some of the meaning from that icon? Personally, if we were doing Mac Office for the first time today, I'd much prefer something like Mars Edit's document-into-a-folder icon. But, for an icon that has an established meaning, the "right" answer isn't obvious.&lt;/p&gt;
&lt;p&gt;For any app that gets past version 1.0, this general question is a constant issue. We face it so often, that we've expanded user experience (UX) as an engineering discipline within MacBU. We've made it coequal with the development, testing and program management disciplines, and are increasingly incorporating a variety of UX design techniques, not just usability testing, into our development process.&lt;/p&gt;
&lt;p&gt;As I find time, I hope to be able to talk a bit more about what this means, but, if you're interested, the &lt;a href="http://en.wikipedia.org/wiki/User_experience"&gt;Wikipedia entry&lt;/a&gt; isn't a bad place to start.&lt;/p&gt;
&lt;p&gt;None of this, though, actually highlight's John Gruber's mistake. What was that mistake? Never get snarky in a blog post that includes the phrase, "I can't think of."&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Rick&lt;/p&gt;
&lt;p&gt;Currently playing in iTunes: &lt;em&gt;It's Only A Paper Moon&lt;/em&gt; by The Tierney Sutton Band&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10011350" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Am I Back?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2010/05/08/am-i-back.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2010/05/08/am-i-back.aspx</id><published>2010-05-08T14:07:57Z</published><updated>2010-05-08T14:07:57Z</updated><content type="html">&lt;p&gt;OK, so &lt;a href="http://blogs.msdn.com/nadyne/default.aspx"&gt;Nadyne&lt;/a&gt;, after posting a nice article about &lt;a href="http://www.officeformac.com/blog/PowerPoint-is-not-the-right-tool-for-every-job"&gt;using PowerPoint&lt;/a&gt; on &lt;a href="http://www.officeformac.com/blog/"&gt;Mac Mojo&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/nadyne/archive/2010/05/06/powerpoint-is-not-the-right-tool-for-every-job.aspx"&gt;spilled the beans&lt;/a&gt;, so I suppose I should say something. Though, the fact that I wanted to title a blog post with, "Use the Right Tool for the Job and You won't become One," is probably more than ample evidence that I should &lt;em&gt;not&lt;/em&gt; be blogging.&lt;/p&gt;
&lt;p&gt;The problem with blogging is really finding something to talk about.  Well, there is a lot that I &lt;em&gt;could&lt;/em&gt; talk about, but there's this fine print in my employment contract that leaves quite a bit of what I'm working on off the table.&lt;/p&gt;
&lt;p&gt;For example, I could talk about the travails of transitioning from Carbon to Cocoa, but it doesn't take a rocket scientist to put two and two together to figure out that Microsoft is moving Mac Office to Cocoa. And, of course, the more details I discuss, the more people can figure out just how far we have progressed along that transition.&lt;/p&gt;
&lt;p&gt;I see comments on various blog posts where people ask or this or ask for that, and I want to say, "Guess What!" But, I can't! And it's horribly frustrating.&lt;/p&gt;
&lt;p&gt;So, am I back? I don't know. I'm contemplating. In the mean time, &lt;a href="http://www.red-sweater.com/"&gt;Red Sweater&lt;/a&gt; has released &lt;a href="http://www.red-sweater.com/marsedit/"&gt;Mars Edit 3.0&lt;/a&gt;. So, I'm taking it for a spin. Now, if I can only remember where "Currently Playing in iTunes" is.  Ah, yes...&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Rick&lt;/p&gt;
&lt;p&gt;Currently playing in iTunes: &lt;em&gt;Change It&lt;/em&gt; by Stevie Ray Vaughan&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10009596" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Mac BU" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Mac+BU/" /></entry><entry><title>Craig's Bug</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2008/01/31/craig-s-bug.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2008/01/31/craig-s-bug.aspx</id><published>2008-02-01T05:01:00Z</published><updated>2008-02-01T05:01:00Z</updated><content type="html">&lt;!--StartFragment--&gt;&lt;p class="MsoNormal"&gt;One of the things I love about this job is tracking downinteresting bugs.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;It’s like readinga good who-done-it, complete with plot twists, multiple potential suspects and a fascinating array of characters.&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Late last September, Craig Eisler submitted a bug that had all of these elements.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Now, when your general manager submits a bug, you don’t necessarily have to get on it right away.&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;But, it’s not a good idea to let it linger for too long.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;So, after this bug had been on the list for about a week or so, I decided it was time to figure out what was up.&lt;/p&gt;&lt;p class="MsoNormal"&gt;The bug involved a document Craig had been editing with revision marking turned on.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;He’d made some changes to the document, saved it, quit Word and, when he opened the document back up, some of the spaces between words were missing.&lt;/p&gt;&lt;p class="MsoNormal"&gt;With a bug like this, the first thing I do is open it up in Win Word.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;If the problem appears there, then there’s a strong likelihood that the bug is in the code that writes the file.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;If the bug doesn’t appear in Win Word, then I know to start looking at the code that reads files.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;In this case, the problem appeared in Win Word, so my first suspect is going to be somewhere in the save code.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Also, the missing spaces seemed to be in or around areas of the document where revisions had been made.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;So, the first suspect was somewhere in the code that writes revisions.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;I created a document, added some text, turned on revisions made some changes and saved the file stepping through the code that handles revision marking.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Nothing.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Everystep along the way, everything was happy.&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;The code was writing all the appropriate XML tags, and none of the text was missing.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Of course those two sentences summarize about two-three hours of sleuthing, after which I was able to exclude the revision marking save code as a suspect.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Well, maybe it’s something that only appears to be related to revision marking.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Let’s take two files, one that exhibits the problem and one that doesn’t, and compare the contents (much easier to do now that the document content is XML).&lt;/p&gt;&lt;p class="MsoNormal"&gt;Again, nothing.&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Other than a few gratuitous differences (revision save ID’s, for example, which are uniquely generated every time new text is saved in a document), everything in and around the missing spaces was identical.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Another couple of hours spent cracking open various documents and comparing the XML, and I still haven’t a clue whothe real culprit is.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Well, but, if the documents are identical, maybe the problem happens when we read the file.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;So, I set a breakpoint on the code that handles runs of text from the XML parser, and, sure enough, our “characters” callback wasn’t getting called for just the missing spaces.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Hm…&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Progress.&lt;/p&gt;&lt;p class="MsoNormal"&gt;About another hour or so, I had tracked it down to some general XML parsing code we’d ported from Win Office.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;One of the problems with writing filing code that’s intended to handle future situations is that, when you write the code, the future hasn’t arrived yet.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Well, for Win Office, Mac Office represented the future, and some of the stuff we’d added exposed a subtle bug in the code we’d ported (note: the problem has been fixed in WinOffice before Mac Office shipped, so people shouldn’t run into this at all).&lt;/p&gt;&lt;p class="MsoNormal"&gt;By the time I had finished all of this, implemented a fix and verified the fix, it was about 1:30 in the morning.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;When I get engrossed in a good mystery, I sometimes find it difficult to put the book down.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Same thing goes with good mystery bugs.&lt;/p&gt;&lt;p class="MsoNormal"&gt;And, the bug being a good mystery bug that geeks like Craig and I appreciate, I sent off an e-mail to Craig outlining the basic nature of the bug and the fix (which turned out to be just a couple lines of code—this is almost always the case with a good mystery bug).&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;This being in the middle of the FIFA Women’s World Cup, I ended the mail by saying that I was going to go home, drink some coffee, and stay up to catch the USA match (I forget who the opponent was).&lt;/p&gt;&lt;p class="MsoNormal"&gt;The next day, I got a response from Craig with some questions about the bug.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;I replied to Craig’s questions and, at the end of the e-mail, lamented over the fact that, after all that effort and all that coffee to stay up to watch a soccer match, our local cable company saw fit to pre-empt the last 30 minutes of the match with a taped question-and-answer program starring Mike Holmgren, the Seahawks coach.&lt;/p&gt;&lt;p class="MsoNormal"&gt;For a born-in-Green-Bay, prick-me-and-I-bleed-green-and-gold, Packers fan like me, having a soccer match for which I’d stayed up all night to be able to watch be preempted by Mike Holmgren is seriously rubbing salt into the wound, and I conveyed my displeasure at this to Craig by saying that the only reason we still have a working television in the house is the fact that there were people asleep in the house at that time.&lt;/p&gt;&lt;p class="MsoNormal"&gt;What ensued was a series of e-mails between Craig and I with a dual thread about the bug he’d reported and my television set.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;His response to my previous e-mail was to suggest that I should have taken the TV outside and smashed it there.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Wake up the neighbors instead of the kids, and I get to vent my hostilities.&lt;/p&gt;&lt;p class="MsoNormal"&gt;In my reply, I explained that this was not an option giventhe size (36”) and weight (over 260 lbs) of my TV set, to which Craig replied, “A CRT!?&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;How quaint!&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Do you get slivers when you go to the bathroom after watching that TV?”&lt;/p&gt;&lt;p class="MsoNormal"&gt;Having an uber-geek general manager is cool.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;You get great bug reports, and he likes to hear about the nature of the bug and the fix.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;Just be a little careful when you talk about the technology around your house.&lt;/p&gt;&lt;p class="MsoNormal"&gt; &lt;/p&gt;&lt;p class="MsoNormal"&gt;Rick&lt;/p&gt;&lt;p class="MsoNormal"&gt;Currently playing in iTunes: New World Blues by Gov't Mule &lt;/p&gt;&lt;!--EndFragment--&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7363990" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Programming" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Programming/" /><category term="Mac BU" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Mac+BU/" /></entry><entry><title>What the Hell is That?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2008/01/21/what-the-hell-is-that.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2008/01/21/what-the-hell-is-that.aspx</id><published>2008-01-22T01:54:04Z</published><updated>2008-01-22T01:54:04Z</updated><content type="html">&lt;p&gt;Seattle.&amp;nbsp; Middle of January.&amp;nbsp; Nothing in the sky but this huge, yellow thing.&amp;nbsp; Looking at it hurts your eyes.&amp;nbsp; In that context, read &lt;a href="http://snltranscripts.jt.org/79/79awhatthehell.phtml"&gt;this transcript&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;"Don't put your lips on it!"&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Rick&lt;/p&gt; &lt;p&gt;Currently playing in iTunes: &lt;em&gt;Afternoon&lt;/em&gt; by the Pat Metheny Group&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7189753" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Trading Fours</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2008/01/11/trading-fours.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2008/01/11/trading-fours.aspx</id><published>2008-01-11T22:56:44Z</published><updated>2008-01-11T22:56:44Z</updated><content type="html">&lt;p&gt;I've had quite a bit of positive feedback on my last post, so I thought I'd do another musical post.&lt;/p&gt; &lt;p&gt;"Trading fours," or "trading eights," is a jazz term that refers to one or more soloists taking turns in a solo.&amp;nbsp; The idea is for each musician to pick up where the previous one left off, as if the alternating musicians are really playing the same solo.&amp;nbsp; It takes an enormous amount of skill and practice to pull this thing off.&lt;/p&gt; &lt;p&gt;Below is a video from a 1989 concert involving members of Dizzy Gillespie's "United Nations Orchestra"--an all-star group of musicians who are, today, very prominent in Latin jazz. This particular number is a medley of &lt;em&gt;Seresta&lt;/em&gt;, a duet between clarinetist Paquito D'Rivera and pianist Danilo Perez, that segues into a full orchestra performance of &lt;em&gt;Samba for Carmen&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;The latter opens with long solos by trombonist Slide Hampton and trumpeter Claudio Roditi, but closes with a round of trading fours where D'Rivera, Hampton and Roditi work the idea to perfection.&lt;/p&gt; &lt;p&gt;As something of a side note, it wasn't until I'd seen this video that I realized that D'Rivera had put down the clarinet and picked up his alto sax for the round of trading fours--such is the mastery of the instrument's range that D'Rivera exhibits in this piece.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:a5f93de6-e3ca-4860-934c-588df64b4cf2" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;div id="9ea7c9be-3166-46ec-8b9f-5a9fdc26b3dc" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=lF6_bSd_4vk&amp;amp;rel=1&amp;amp;border=1" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rick_schaut/WindowsLiveWriter/TradingFours_A7F6/video68db009bb4ee.jpg" galleryimg="no" onload="var downlevelDiv = document.getElementById('9ea7c9be-3166-46ec-8b9f-5a9fdc26b3dc'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;350\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/lF6_bSd_4vk&amp;amp;rel=1&amp;amp;border=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;param name=\&amp;quot;wmode\&amp;quot; value=\&amp;quot;transparent\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/lF6_bSd_4vk&amp;amp;rel=1&amp;amp;border=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;350\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7078634" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Music" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Music/" /></entry><entry><title>The Music of Derek Trucks</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2008/01/08/the-music-of-derek-trucks.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2008/01/08/the-music-of-derek-trucks.aspx</id><published>2008-01-08T23:49:45Z</published><updated>2008-01-08T23:49:45Z</updated><content type="html">&lt;p&gt;It's mid afternoon Saturday, July 27, 2007.&amp;nbsp; The scene is Toyota Park, suburban Chicago, Illinois, home of some minor league soccer team.&amp;nbsp; We're between acts during the Crossroads Guitar Festival, and Bill Murray walks out to introduce the next act.&amp;nbsp; A few folks in the audience have heard this guy play, and are on the edge just itching to hear his band.&lt;/p&gt; &lt;p&gt;"This is a guy who works two jobs," Murray begins.&amp;nbsp; "He works days with this fellow, Eric Clapton.&amp;nbsp; Night time, he masquerades and plays for these fellows called the Allman Brothers.&amp;nbsp; He's got a beautiful wife who can sing like a bird, he's come all the way to you from Florida, he's gonna rip this place apart and do a lot of damage to you.&amp;nbsp; Let's [unintelligble] The Darryl Trucks Band!"&lt;/p&gt; &lt;p&gt;What?!&amp;nbsp; Did he just say, "Darryl?!"&amp;nbsp; Aw crap!&amp;nbsp; Derek Trucks is about to perform with his own band in a venue that's likely to result in his widest exposure yet, and Bill Murray screws up his name.&amp;nbsp; The irony is bitter.&amp;nbsp; If there's anyone in music today who's music deserves far more notice than it's getting, Derek Trucks is it.&lt;/p&gt; &lt;p&gt;There's a lot that can be said about Derek Trucks himself.&amp;nbsp; Most of it's already been said.&amp;nbsp; The nephew of Allman Brothers charter member Butch Trucks, he was a child prodigy.&amp;nbsp; Currently 28 years old, he's already had a professional career that's well into its second decade.&amp;nbsp; Derek, along with Warren Haynes and Oteil Burbridge, has been an integral force in the resurgence of the Allman Brothers band earlier this decade.&amp;nbsp; He's toured with Eric Clapton, and, while many went to see the original guitar God himself, many came way talking about the tall, baby-faced kid with the long blonde pony-tail.&lt;/p&gt; &lt;p&gt;But, it's the music that matters.&amp;nbsp; And Derek is doing something insanely new and unique, and worthy of in-depth study and review.&lt;/p&gt; &lt;p&gt;To illustrate this point, I'm going to deconstruct the various elements of the first song that Derek Trucks and his band played at the Crossroads Festival.&amp;nbsp; I've embedded the You Tube video below.&amp;nbsp; RSS folks can click &lt;a href="http://www.youtube.com/watch?v=uyEbunCxtLs"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:d5065662-b1aa-49b2-aebc-5bf79fd33db7" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;div id="5cd2fd56-4799-4f73-8850-3eac80b8f50b" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=uyEbunCxtLs&amp;amp;rel=1" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rick_schaut/WindowsLiveWriter/TheMusicofDerekTrucks_8D2B/video783007620393.jpg" galleryimg="no" onload="var downlevelDiv = document.getElementById('5cd2fd56-4799-4f73-8850-3eac80b8f50b'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;350\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/uyEbunCxtLs&amp;amp;rel=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;param name=\&amp;quot;wmode\&amp;quot; value=\&amp;quot;transparent\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/uyEbunCxtLs&amp;amp;rel=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;350\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;The raw material he's working with is a couple of songs, &lt;em&gt;Sahib Teri Bandi&lt;/em&gt; and &lt;em&gt;Maki Madni&lt;/em&gt;, written by Nusrat Fateh Ali Khan.&amp;nbsp; This is Punjabi folk music, known as Qawwali, in the Islamic, Sufi tradition, and is generally performed by large groups in pursuit of Sufi mystical experience.&lt;/p&gt; &lt;p&gt;A Qawwali song follows a general pattern.&amp;nbsp; A lead singer begins with a subtle, improvised introduction that leads into a "raga," which conveys the melodic theme of the song.&amp;nbsp; In this case, the raga is six bars.&amp;nbsp; The raga is repeated as others join in, and this builds in a crescendo as singers emphatically increase the intensity of their effort, until the performance comes to an abrupt end.&lt;/p&gt; &lt;p&gt;There are several things worth noting about this performance.&amp;nbsp; The first is that Derek's own performance of the song is done with a Gibson SG '61 Reissue plugged straight into a 60's vintage Fender Reverb amp.&amp;nbsp; There are no pedals, and no effects.&amp;nbsp; Just Derek's slide technique with which he mimics the sound of a Qawwali singer's voice right down to the micro-tonal variations.&amp;nbsp; At times, you can almost hear the plaintive wail of the Sufi supplicant in the midst of a mystical experience--as if Trucks, himself, is having his own mystical experience.&lt;/p&gt; &lt;p&gt;The second notable aspect of the performance is that, while the band loosely follows the Qawwali pattern, the execution more closely follows a tradition in Jazz music wherein a familiar melody is purloined as a vehicle for improvisation.&amp;nbsp; On a fundamental level, this is a &lt;em&gt;jazz&lt;/em&gt; performance, even though the music isn't what we'd generally consider to be jazz.&lt;/p&gt; &lt;p&gt;This point is made even more clear following the flute solo when the band transitions into the &lt;em&gt;Maki-Madni&lt;/em&gt; portion of the song.&amp;nbsp; This digression incorporates an additional element of a raga, in that the band builds to a crescendo before returning to the &lt;em&gt;Sahib Teri Bandi&lt;/em&gt; theme.&amp;nbsp; This melding of two similar, yet complimentary, melodies into one song is, again, a traditional element of jazz music.&lt;/p&gt; &lt;p&gt;A third notable aspect of this performance is that, at 6 minutes and 35 seconds, it is shortened considerably from the usual performance which is often more than twice that long.&amp;nbsp; Even the studio version released on the &lt;em&gt;Songlines&lt;/em&gt; album is nearly 10 minutes long.&amp;nbsp; The usual performance is even more free and less structured than this performance, and incorporates a wider array of improvisation.&lt;/p&gt; &lt;p&gt;The last, and perhaps most remarkable, aspect of the performance I want to point out is how taught the improvisations are.&amp;nbsp; This isn't a free-rambling, almost aimlessly wandering, form of improvisation that's commonplace for jam bands like, say, The Grateful Dead or Widespread Panic.&amp;nbsp; The band exercises a strict discipline that also involves a subtle interplay amongst all the musicians producing a cohesive whole.&amp;nbsp; While the song is used as a vehicle for improvisation, the improvisation itself is kept within, and contributes to, the overall aim and effect of the song itself.&lt;/p&gt; &lt;p&gt;This last element is really more something out of the blues tradition than the jazz tradition, which is largely why the end result isn't really jazz per se, though the performance also lacks many of the complex harmonic interactions that would also move it more fully into the jazz realm.&lt;/p&gt; &lt;p&gt;This performance, in overall effect, is typical of what Derek Trucks is trying to achieve musically, but that effect is also why Trucks' music remains relatively obscure.&amp;nbsp; It's not jazz, so you won't hear it on jazz radio stations.&amp;nbsp; It's certainly not pop, but it also doesn't fall into any other convenient categories like blues, funk, gospel, rock or r&amp;amp;b.&amp;nbsp; His music incorporates and interweaves, to varying degrees at different times, elements of all of these forms of music in such a way as to create an entirely new category all its own.&lt;/p&gt; &lt;p&gt;By any objective standard, this is musical art of the highest order.&amp;nbsp; But I fear for its obscurity.&amp;nbsp; A good part of the greatness of other musical pioneers is that they blazed a path that others were able to follow.&amp;nbsp; That Trucks is blazing a new musical path is indisputable.&amp;nbsp; In blazing his particular path, however, Trucks and his compatriots bring such an amazing level of virtuosity to the table as to lead me to wonder whether or not anyone will be able to follow.&lt;/p&gt; &lt;p&gt;Perhaps it's too soon to tell, and perhaps I'm underestimating the virtuosity that other musicians are able to bring to the table.&amp;nbsp; Or, perhaps I'm overestimating the ability of Trucks' music to inspire other musicians to follow.&amp;nbsp; But there is one thing I find disturbing.&amp;nbsp; I've assiduously searched the web looking for a similar analysis of his music to the one I've given here, and I've not found any.&amp;nbsp; I'd expect someone other than a relatively obscure software developer to have already written something like this.&lt;/p&gt; &lt;p&gt;So, the question is, when Bill Murray messed up Derek's name, was it an omen?&amp;nbsp; Or was it merely a bump along the way?&amp;nbsp; I hope it's the latter, but I guess it's really up to us to decide.&amp;nbsp; Isn't it?&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Rick&lt;/p&gt; &lt;p&gt;Currently playing in iTunes: &lt;em&gt;Desdemona&lt;/em&gt; by the Allman Brothers Band&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7032491" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Music" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Music/" /></entry><entry><title>Finding My Voice Again</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2008/01/07/finding-my-voice-again.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2008/01/07/finding-my-voice-again.aspx</id><published>2008-01-08T02:19:08Z</published><updated>2008-01-08T02:19:08Z</updated><content type="html">&lt;p&gt;Wow.&amp;nbsp; What a stretch.&amp;nbsp; We shipped the bits for Office 2008 off to manufacturing back in December, and that very day I was still in the office until 10:00 that night doing some prep work for the next release of Office.&amp;nbsp; Having been head down in Office 2008 for so long and so hard, to just flip the switch from ship-mode to down time would have been like jamming the car into reverse while driving at highway speed.&lt;/p&gt; &lt;p&gt;Mac Office 2008 has been my 8th major release since I started working here, and this release is the first time I haven't been able to flip that switch--the first time I've had to ease my way back out of that intensity that permeates what we generally refer to as "ship-mode."&lt;/p&gt; &lt;p&gt;This has affected my blogging, and I've spent some thinking about the direction to take this blog in the future--an introspective exploration into what I want to say, even to the point of figuring out &lt;em&gt;if&lt;/em&gt; I have anything left to say.&lt;/p&gt; &lt;p&gt;I've always been a sporadic blogger.&amp;nbsp; To a certain extent, that comes with the territory of being a part-time blogger with a job that alternates between periods of high intensity and periods of reflective down time.&amp;nbsp; But I also find it exceedingly difficult to just sit down and blog about something for the sake of putting a post up on the blog.&amp;nbsp; I tend to not say anything unless I think something needs to be said.&lt;/p&gt; &lt;p&gt;So, I'm trying to ease my way back into blogging, and I'm looking for things that need to be said.&amp;nbsp; As I do that, I'll probably not talk all that much about Word or Office.&amp;nbsp; If I do, those posts will likely end up on &lt;a href="http://blogs.msdn.com/macmojo"&gt;Mac Mojo&lt;/a&gt;.&amp;nbsp; This space will get more personal.&amp;nbsp; There are a few things I have in the pipeline, and I'll get to them as I can.&lt;/p&gt; &lt;p&gt;In the mean time, I'll be down at Mac World next week doing at least a stint or two in the blogger lounge.&amp;nbsp; Who knows, I might get more of my voice back then.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Rick&lt;/p&gt; &lt;p&gt;Now playing in iTunes: &lt;em&gt;Hercules&lt;/em&gt; by the Derek Trucks Band&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7021385" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>The OOF Infinite Loop</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2007/07/27/the-oof-infinite-loop.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2007/07/27/the-oof-infinite-loop.aspx</id><published>2007-07-27T22:42:00Z</published><updated>2007-07-27T22:42:00Z</updated><content type="html">
&lt;p&gt;I'm surprised that I haven't hit this before at Microsoft, but I actually hit an OOF infinite loop today.&lt;/p&gt;

&lt;p&gt;For those who don't know, "OOF" is an acronym that refers to someone being out of the office.&amp;nbsp; The Exchange team gives a nice run-down on the history the term &lt;a href="http://msexchangeteam.com/archive/2004/07/12/180899.aspx" mce_href="http://msexchangeteam.com/archive/2004/07/12/180899.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When people are out of the office, it's common to set up an auto-reply e-mail message providing contact information, and these messages often refer the sender to someone else for urgent issues.&amp;nbsp; By now, you've probably guessed what an OOF infinite loop is: person A has an auto-reply OOF message that says to contact person B, and person B has an auto-reply OOF message that says to contact person A.&lt;/p&gt;&lt;p&gt;Of course, it doesn't have to be that simple.&amp;nbsp; There really is no limit to the number of people who can be involved in one of these infinite loops.&amp;nbsp; Which gives me an idea for what to do right after we ship Mac Office...&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Rick&lt;/p&gt;&lt;p&gt;Currently Playing in iTunes: &lt;i&gt;Will it Go Round in Circles&lt;/i&gt; by Billy Preston &lt;br&gt;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4085562" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>The GM Shuffle</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2007/06/09/the-gm-shuffle.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2007/06/09/the-gm-shuffle.aspx</id><published>2007-06-09T20:21:00Z</published><updated>2007-06-09T20:21:00Z</updated><content type="html">&lt;P&gt;By now you’ve &lt;A target="_blank" mce_href="http://www.macminute.com/2007/06/08/macbu-roz-ho/" href="http://www.macminute.com/2007/06/08/macbu-roz-ho/"&gt;read&lt;/A&gt; &lt;A target="_blank" mce_href="http://www.macobserver.com/article/2007/06/08.8.shtml" href="http://www.macobserver.com/article/2007/06/08.8.shtml"&gt;the&lt;/A&gt; &lt;A target="_blank" mce_href="http://www.tuaw.com/2007/06/08/microsofts-macbu-gets-new-gm-craig-eisler/" href="http://www.tuaw.com/2007/06/08/microsofts-macbu-gets-new-gm-craig-eisler/"&gt;news&lt;/A&gt;.  MacBU has a &lt;A target="_blank" mce_href="http://blogs.msdn.com/macmojo/archive/2007/06/08/hello-from-the-new-general-manager-of-the-macintosh-business-unit-craig-eisler.aspx" href="http://blogs.msdn.com/macmojo/archive/2007/06/08/hello-from-the-new-general-manager-of-the-macintosh-business-unit-craig-eisler.aspx"&gt; new general manager&lt;/A&gt;.  I only found out about this via e-mail on Thursday, and, yesterday, I got a chance to meet Craig.  I’ll get to my initial impressions of Craig in a bit, but I also want to talk a bit about Roz Ho.&lt;/P&gt;

&lt;P&gt;Before I talk about Roz, I should point out that, in Microsoft terms, I’m a wierdo.  That’s not just because I work on Mac software.  No, I’m an anomoly in a very different sense.  In a couple of weeks, I’ll mark my 17th anniversary of working on various versions of Word, all but one of them for the Macintosh.  That’s so rare, that people have suggested they make a place for me somewhere in the Microsoft Museum (just what I want: to become a museum piece).&lt;/P&gt;

&lt;P&gt;Microsoft is pretty big on career advancement. It’s not a “move up or move out” kind of thing.  It’s more of a do something cool and good here, you get to do something cool and good somewhere else.  That’s why I’m such a freak.  I keep managing to advance my career without having to move on to something completely different.&lt;/P&gt;

&lt;P&gt;For a general manager, this career advancement thing becomes something of a problem.  Opportunities to climb the management ladder start getting really thin.  So, how do you reward a GM for doing a great job?  You find a different kind of business for that GM to run—something that might involve cool new technologies, or something that requires a different approach to management, or a host of other kinds of chances to do something, well, different.&lt;/P&gt;

&lt;P&gt;So, earlier this year, a very interesting and exciting opportunity opened up for Roz to advance her career.  This kind of thing always brings out mixed emotions in me.  I hate losing someone as good as Roz, but I’m also proud that someone from MacBU is being recognized for doing a great job.  I’m very excited for Roz in her new role, and I think it will be good for both her and for Microsoft.&lt;/P&gt;

&lt;P&gt;Roz became the general manager of MacBU back in December of 2002.  She oversaw the release of what has been the most successful version of  Mac Office ever.  Her more than four years as general manager covers nearly half of Mac BU’s ten year existence.  Of the three general manager’s I’ve worked with until now, I think Roz has been the best, and she’s certainly been the most pleasant to work with (which is, by no means, a knock on either Ben Waldman or Kevin Browne).&lt;/P&gt;

&lt;P&gt;I say all of this to express my personal gratitude to Roz for what she’s done for MacBU, for the Macintosh in general, and for me personally.  I’ll miss you Roz, though I still think you messed up the Connectix deal for not getting all of us our own “Switch/Switch Back” t-shirts.&lt;/P&gt;

&lt;P&gt;So, what about Craig Eisler?  As I said, I only found out about this on Thursday, but I see that he’s &lt;A target="_blank" mce_href="http://craig.theeislers.com/" href="http://craig.theeislers.com/"&gt;a blogger&lt;/A&gt; and enough of &lt;A target="_blank" mce_href="http://craig.theeislers.com/2007/05/im_outing_myself.php" href="http://craig.theeislers.com/2007/05/im_outing_myself.php"&gt;an Apple enthusiast&lt;/A&gt; as to have 5 Apple TV’s, 3 iMacs, a Mac Mini, a Mac Cube and a PowerMac G4.  Oh, and, ah, I think there’s a video iPod in the mix as well.  So far, so good.&lt;/P&gt;

&lt;P&gt;I did a bit of poking around the internet, and found quite a bit of &lt;A target="_blank" mce_href="http://www.iwantapinkzune.com/?p=291" href="http://www.iwantapinkzune.com/?p=291"&gt;information about Craig&lt;/A&gt;, like he was once a competitive power lifter, and he once, quite by accident, managed to bring down the entire Canadian banking system.  Four times.  In one day.&lt;/P&gt;

&lt;P&gt;UWTV did &lt;A target="_blank" mce_href="http://www.uwtv.org/programs/displayevent.aspx?rID=2340" href="http://www.uwtv.org/programs/displayevent.aspx?rID=2340"&gt;this interview&lt;/A&gt; back in April of 2004.  It’s a bit long, but very interesting.&lt;/P&gt;

&lt;P&gt;On Friday, we had a bit of a get-together out on the patio outside our building, and I had a chance to chat with Craig.  If I had to choose a single word to describe my first impressions, it would be “exuberant”—almost, but not quite, effusive. We swapped a few stories. Someone mentioned my suggestion box, and he said that he’d read my blog and thought the suggestion box was a scream.&lt;/P&gt;

&lt;P&gt;So, he gets the Mac, he gets Microsoft and he understands that running a successful business is measured in terms of the value of the product to users and customers. Best of all, he gets my twisted sense of humor.  I’ll have to try out some of the Canadian jokes my daughter brings back from school.  C-eh?  N-eh?  D-eh?&lt;/P&gt;

&lt;P&gt; &lt;/P&gt;

&lt;P&gt;Rick&lt;/P&gt;

&lt;P&gt;Currently playing in iTunes: &lt;I&gt;You da Mann&lt;/I&gt;, by the Derek Trucks Band&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3187103" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Mac BU" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Mac+BU/" /></entry><entry><title>Your Text Here</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2007/05/02/your-text-here.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2007/05/02/your-text-here.aspx</id><published>2007-05-03T00:48:00Z</published><updated>2007-05-03T00:48:00Z</updated><content type="html">&lt;p&gt;On one of the many informational, internal e-mail lists of which I am&amp;nbsp;a member, someone, today, posted one of those ubiquitous "How-Do-I" requests where the&amp;nbsp;solution involves some form of "your text here".&lt;/p&gt; &lt;p&gt;Someone replied with a nice and quick answer to the original question where the "your text here" phrase was "booga booga," and the person who sent the original request replied:&lt;/p&gt; &lt;blockquote&gt;Perfect.&amp;nbsp; Elegant in its simplicity.&amp;nbsp; I might just keep the “booga booga” as well.&lt;/blockquote&gt; &lt;p&gt;I'ts one of those things you just &lt;i&gt;have&lt;/i&gt; to preserve for posterity, hence this post.&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Rick&lt;/p&gt; &lt;p&gt;Currently playing in iTunes: &lt;i&gt;Ain't Life Grand&lt;/i&gt;, by Widespread Panic&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2381483" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>There Comes a Time</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2007/04/04/there-comes-a-time.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2007/04/04/there-comes-a-time.aspx</id><published>2007-04-05T04:48:00Z</published><updated>2007-04-05T04:48:00Z</updated><content type="html">&lt;P&gt;In every project, there's a point where you have to stop tweaking this and touching up that little bit of behavior and focus on just fixing bugs.&amp;nbsp; If you don't, then you never ship.&amp;nbsp; Nadyne &lt;A href="http://blogs.msdn.com/macmojo/archive/2007/03/15/ship-it.aspx" mce_href="http://blogs.msdn.com/macmojo/archive/2007/03/15/ship-it.aspx"&gt;gave some of the details&lt;/A&gt; over on &lt;A href="http://blogs.msdn.com/macmojo/" mce_href="http://blogs.msdn.com/macmojo/"&gt;mac mojo&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Well, we're getting close to that time with Mac Office 12.&amp;nbsp; In honor of nearing such a milestone, I prepared something for our program management friends.&amp;nbsp; These are the folks who are responsible for designing how the various features are supposed to behave from the user's point of view.&amp;nbsp; It's a suggestion box, and it looks like this:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/rick_schaut/WindowsLiveWriter/ThereComesaTime_10853/x1pXjQifqRFQ7oxMft2jDMrP9HH8Kqo184YJQf544Mm9SSDVMW8Z9R0BXcQfqgcJGQzuG5OTcWCwEsoCavOFSCufuZ-0q00wHlc1U0xlbyMp9izeXB2FpLMgQ%5B1%5D%5B1%5D.jpg" atomicselection="true" mce_href="http://blogs.msdn.com/blogfiles/rick_schaut/WindowsLiveWriter/ThereComesaTime_10853/x1pXjQifqRFQ7oxMft2jDMrP9HH8Kqo184YJQf544Mm9SSDVMW8Z9R0BXcQfqgcJGQzuG5OTcWCwEsoCavOFSCufuZ-0q00wHlc1U0xlbyMp9izeXB2FpLMgQ%5B1%5D%5B1%5D.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=192 src="http://blogs.msdn.com/blogfiles/rick_schaut/WindowsLiveWriter/ThereComesaTime_10853/x1pXjQifqRFQ7oxMft2jDMrP9HH8Kqo184YJQf544Mm9SSDVMW8Z9R0BXcQfqgcJGQzuG5OTcWCwEsoCavOFSCufuZ-0q00wHlc1U0xlbyMp9izeXB2FpLMgQ%5B1%5D.jpg" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/rick_schaut/WindowsLiveWriter/ThereComesaTime_10853/x1pXjQifqRFQ7oxMft2jDMrP9HH8Kqo184YJQf544Mm9SSDVMW8Z9R0BXcQfqgcJGQzuG5OTcWCwEsoCavOFSCufuZ-0q00wHlc1U0xlbyMp9izeXB2FpLMgQ%5B1%5D.jpg"&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/rick_schaut/WindowsLiveWriter/ThereComesaTime_10853/x1pXjQifqRFQ7oxMft2jDMrP9EYWH2HE395YyKpsTeM_VqZhLgrE5Zb4KJaq_PZeYyuWrVw4tnVKNxfyqIV_BlnsvAVtKwTIUIn3qRJdPvIMLU9iS_fdBqbSg%5B1%5D%5B1%5D.jpg" atomicselection="true" mce_href="http://blogs.msdn.com/blogfiles/rick_schaut/WindowsLiveWriter/ThereComesaTime_10853/x1pXjQifqRFQ7oxMft2jDMrP9EYWH2HE395YyKpsTeM_VqZhLgrE5Zb4KJaq_PZeYyuWrVw4tnVKNxfyqIV_BlnsvAVtKwTIUIn3qRJdPvIMLU9iS_fdBqbSg%5B1%5D%5B1%5D.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=192 src="http://blogs.msdn.com/blogfiles/rick_schaut/WindowsLiveWriter/ThereComesaTime_10853/x1pXjQifqRFQ7oxMft2jDMrP9EYWH2HE395YyKpsTeM_VqZhLgrE5Zb4KJaq_PZeYyuWrVw4tnVKNxfyqIV_BlnsvAVtKwTIUIn3qRJdPvIMLU9iS_fdBqbSg%5B1%5D.jpg" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/rick_schaut/WindowsLiveWriter/ThereComesaTime_10853/x1pXjQifqRFQ7oxMft2jDMrP9EYWH2HE395YyKpsTeM_VqZhLgrE5Zb4KJaq_PZeYyuWrVw4tnVKNxfyqIV_BlnsvAVtKwTIUIn3qRJdPvIMLU9iS_fdBqbSg%5B1%5D.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Mind you, this suggestion box is for PGM use only.&amp;nbsp; Think of it as my way of saying that now is the time&amp;nbsp;for us&amp;nbsp;to shut up and listen to the real users who are trying out the product during the private beta.&lt;/P&gt;
&lt;P&gt;Enough fun.&amp;nbsp; I need to get back to fixing bugs.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Rick&lt;/P&gt;
&lt;P&gt;Currently playing in iTunes: &lt;EM&gt;Beautifully Broken&lt;/EM&gt; by Gov't Mule (w/ George Porter Jr.)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2028545" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Programming" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Programming/" /><category term="Mac BU" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Mac+BU/" /></entry><entry><title>John Madden?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2007/01/16/john-madden.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2007/01/16/john-madden.aspx</id><published>2007-01-17T06:50:00Z</published><updated>2007-01-17T06:50:00Z</updated><content type="html">
&lt;p&gt;&lt;object height="350" width="425"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/r8L39UwOS-Y"&gt;
&lt;param name="wmode" value="transparent"&gt;
&lt;embed src="http://www.youtube.com/v/r8L39UwOS-Y" mce_src="http://www.youtube.com/v/r8L39UwOS-Y" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Kinda makes ya wonder...&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Rick&lt;/p&gt;
&lt;p&gt;Currently playing in iTunes: &lt;i&gt;Boom! Boom!&lt;/i&gt; by John Lee Hooker&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1481436" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Lounging Around at MacWorld</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2007/01/10/lounging-around-at-macworld.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2007/01/10/lounging-around-at-macworld.aspx</id><published>2007-01-11T02:18:00Z</published><updated>2007-01-11T02:18:00Z</updated><content type="html">&lt;p&gt;MacWorld always has its surprises, but some of them are quite personal.&amp;nbsp; For me, the surprise was the discovery, at 5:20 this morning, that a previous occupant of my hotel room had set the alarm-clock but hadn't turned off the alarm.&amp;nbsp; I've been told by others that my failure to check the alarm clock when I checked in is a sign that I don't attend trade shows often enough.&amp;nbsp; Actually, I think I probably attend too many as it is.&lt;/p&gt;&lt;p&gt;Whatever the case, thanks to this inconsiderate person, the Word file format converter is now about four hours closer to being done than it would have been had said person learned how to turn the alarm clock off.&amp;nbsp; I expect, however, that those hours will revert back during an upcoming, afternoon nap.&lt;br&gt;&lt;/p&gt;&lt;p&gt;I got a chance to chat with &lt;a href="http://www.bynkii.com" mce_href="http://www.bynkii.com"&gt;John Welch&lt;/a&gt; today, and I'm happy to inform you all that he appears to be in much better shape than he did &lt;a href="http://www.bynkii.com/archives/2007/01/for_those_of_you_wondering_why.html" mce_href="http://www.bynkii.com/archives/2007/01/for_those_of_you_wondering_why.html"&gt;yesterday&lt;/a&gt;.&amp;nbsp; And, you know, things were so busy in the &lt;a href="http://blogs.msdn.com/ControlPanel/Blogs/" mce_href="http://blogs.msdn.com/ControlPanel/Blogs/" title="http://blogs.msdn.com/macmojo/archive/2007/01/03/visit-our-blogger-lounge-at-macworld.aspx"&gt;Blogger Lounge&lt;/a&gt;, that I forgot to ask John if he's been able to check out &lt;i&gt;Songlines&lt;/i&gt; by the Derek Trucks Band.&lt;br&gt;&lt;/p&gt;&lt;p&gt;I've yet to get any opportunity to personally wish &lt;a href="http://blogs.msdn.com/ControlPanel/Blogs/" mce_href="http://blogs.msdn.com/ControlPanel/Blogs/" title="http://www.yourmaclife.com/"&gt;Shawn and Lesa&lt;/a&gt; a happy wedding anniversary, so I will here.&amp;nbsp; Happy anniversary, Shawn and Lesa.&amp;nbsp; In one of those cute MacWorld stories, Shawn and Lesa met at MacWorld three years ago.&amp;nbsp; Two years ago, Shawn proposed to Lesa at MacWorld, and, last year, they got married at MacWorld.&amp;nbsp; I think we should petition the event sponsors to rename MacWorld the Shawn and Lesa Wedding Anniversary Celebration.&lt;/p&gt;&lt;p&gt;Shawn does have a lot of pictures from the show, and a couple of cool interviews with &lt;a href="http://ymlmedia.com/events/MWSF07/MWSF07ChuckLeavell/MWSF07ChuckLeavell.html" mce_href="http://ymlmedia.com/events/MWSF07/MWSF07ChuckLeavell/MWSF07ChuckLeavell.html"&gt;Chuck Leavell&lt;/a&gt; and &lt;a href="http://ymlmedia.com/events/MWSF07/MWSF07BobWeir/MWSF07BobWeir.html" mce_href="http://ymlmedia.com/events/MWSF07/MWSF07BobWeir/MWSF07BobWeir.html"&gt;Bob Weir&lt;/a&gt;.&amp;nbsp; It seems MacWorld always has at least one musician I admire roaming the floor, but I still think my personal best was getting Herbie Hancock's autograph in the Microsoft booth a few years back.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Lastly, I almost got a chance to chat with &lt;a href="http://www.cwob.com:16080/yellowtext/" mce_href="http://www.cwob.com:16080/yellowtext/"&gt;Andy Ihnatko&lt;/a&gt;. I still remember Andy raking me over the coals about &lt;a href="http://blogs.msdn.com/rick_schaut/archive/2004/02/26/80193.aspx" mce_href="http://blogs.msdn.com/rick_schaut/archive/2004/02/26/80193.aspx"&gt;Mac Word 6&lt;/a&gt;.&amp;nbsp; I hadn't realized how much shorter than me Andy is, and that's saying quite a lot, but I still think Andy is much taller in stature.&amp;nbsp; He's still one of the best writers in the Mac commentary field.&lt;/p&gt;&lt;p&gt;That's about all from the Blogger Lounge.&amp;nbsp; I need to bag some z's before it's time to spend an evening with the Mac MVP's.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Rick&lt;/p&gt;&lt;p&gt;Currently playing in iTunes: &lt;i&gt;Midnight Pass&lt;/i&gt; by Sea Level &lt;br&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1446877" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Mac BU" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Mac+BU/" /></entry><entry><title>BBEdit 8.5</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2006/12/14/bbedit-8-5.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2006/12/14/bbedit-8-5.aspx</id><published>2006-12-15T01:14:00Z</published><updated>2006-12-15T01:14:00Z</updated><content type="html">&lt;p&gt;MacWorld has a decent &lt;a href="http://www.macworld.com/2006/12/reviews/bbedit85/" target="_blank" mce_href="http://www.macworld.com/2006/12/reviews/bbedit85/"&gt;review of BBEdit 8.5&lt;/a&gt;, but it fails to mention a new feature that is of particular use to programmers.&lt;/p&gt;&lt;p&gt;One of the features of CodeWarrior that I'd missed was the syntax highlighting that the IDE applied to symbols that were defined within the project.&amp;nbsp; In fact, I hadn't realized just how much I'd come to rely on that feature when writing new code until I started working with BBEdit and XCode.&amp;nbsp; I had a sudden, new-found paranoia about whether or not I'd typed in a symbol name correctly.&lt;/p&gt;&lt;p&gt;Well, if you use ctags in association with BBEdit, BBEdit will apply syntax highlighting to any symbol that's in the tags file that it would use for the "Find Definition" command on the Search menu.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Rick&lt;/p&gt;&lt;p&gt;Currently playing in iTunes: &lt;i&gt;The Rainy Season&lt;/i&gt; by Marc Cohn&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1288471" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Programming" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Programming/" /><category term="Other" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Other/" /></entry><entry><title>Open XML Converters for Mac Office</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2006/12/07/open-xml-converters-for-mac-office.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2006/12/07/open-xml-converters-for-mac-office.aspx</id><published>2006-12-07T21:04:00Z</published><updated>2006-12-07T21:04:00Z</updated><content type="html">&lt;p&gt;There’s been a bit of flak about the Office Open XML file format converters for Mac Office.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Sheridan posted &lt;a href="http://blogs.msdn.com/macmojo/archive/2006/12/05/converters-coming-free-and-fairly-fast.aspx" mce_href="http://blogs.msdn.com/macmojo/archive/2006/12/05/converters-coming-free-and-fairly-fast.aspx"&gt;an update&lt;/a&gt; on MacMojo, and Schwieb &lt;a href="http://www.schwieb.com/blog/2006/12/05/conversion-factors/" mce_href="http://www.schwieb.com/blog/2006/12/05/conversion-factors/"&gt;weighed in&lt;/a&gt; regarding some of the comments that people have made.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;There’s quite a bit of speculation gong on, and not a whole lot of information, so I’m going to try to dispel some of the fog.&lt;/p&gt;
&lt;p&gt;This discussion centers on Word, because I’m a Word developer, but the general ideas hold for all three of the affected Office applications.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The most significant difference between Word and the rest of the suite is that Word has a converter API.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;There’s a WinWord converter SDK that’s downloadable from the &lt;a href="http://support.microsoft.com/kb/111716" mce_href="http://support.microsoft.com/kb/111716"&gt;Microsoft support&lt;/a&gt; web site.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;While there are some subtle differences (FSRef’s instead of file paths, for example), the overall API is the same for Mac Word.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Of particular importance is the fact that the lingua franca for converting Word files formats is RTF.&lt;/p&gt;
&lt;p&gt;So, in order to write a converter for Word, you need two things: 1) a component that reads and writes the external file format; and 2) a component that generates and parses RTF.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Also, because of the hierarchical structure of XML, you need to have some form of intermediate representation of the file.&lt;/p&gt;
&lt;p&gt;Let’s put our Win Word hat on for a second, go back in time about two years, and think about how we might do this.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Well, by the time Win Office ships, we’ll have a software component that satisfies all of those needs: Word itself, or the new version of Word, to be precise.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So, one, very efficient, way to implement that converter is to refactor the UI out of Word 12, repackage the result up with any other necessary components, and write a wrapper around all of it that exposes the API that the older version of Word expects converters to implement.&lt;/p&gt;
&lt;p&gt;Do that, and you can ship the converters the same time you ship Office.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The big upside of this idea is that you can really narrow down the scope of testing you do on the converter itself, because you’ve already tested both the RTF and the Open XML components by testing Word itself.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So, you gain leverage from both a development and a testing perspective.&lt;/p&gt;
&lt;p&gt;Now, let’s put our Mac Word hat back on, and think of what our options are given the reasoning I’ve stated above.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;You can’t really ask the Win Office team to toss their idea in the trash just so you can work on the converters in tandem.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Well, you can, but one would have to be very optimistic to expect more than a polite, “Sorry.” I can’t think of a clearer example of the tail trying to wag the dog.&lt;/p&gt;
&lt;p&gt;Instead of following in Win Word’s footsteps, how about we spin off a separate development team to work on the converters separately from Word itself?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I've read suggestions made by some that writing converters from scratch could have been done in a relatively (in some cases ridiculously) short amount of time.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So, let's test that idea by doing some back-of-the envelope calculations.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;You can check these numbers for yourself by downloading the &lt;a href="http://www.ecma-international.org/news/TC45_current_work/TC45-2006-50_final_draft.htm" mce_href="http://www.ecma-international.org/news/TC45_current_work/TC45-2006-50_final_draft.htm"&gt;reference XML schemas&lt;/a&gt; and performing some searches through the .xsd files.&lt;/p&gt;
&lt;p&gt;First, when could we have realistically started working on this?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Well, not before Office 2004 shipped in April of 2004, so, ignoring the availability of specifications for the new format, let's assume that we began work on this roughly two years ago.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The final draft of the spec wasn't submitted to the ECMA until this past October, so in terms of actually having a spec to write to, 24 months is extremely optimistic for the time period available.&lt;/p&gt;
&lt;p&gt;How big is the task? Word, alone, has more than 1100 individual XML elements that need to be processed.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;We do this processing by writing something called a "handler", and each one of these elements needs a handler.&lt;/p&gt;
&lt;p&gt;Now, some of these elements are more complex than others.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;A single, user-defined document property isn't very complex.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;A paragraph, or a document section, can be very complex.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;For some of these handlers, one developer can whip out two or three a day.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Some of the other handlers will take a single developer up to an entire month to complete.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Trying to get more than one developer working on the same handler at the same time ends up being very counter-productive.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So, one handler per developer, and, on average, it's fair to assume productivity of one handler per dev per day.&lt;/p&gt;
&lt;p&gt;At that rate, a team of 5 developers will implement 25 handlers a week, which means that we'd have all the XML handlers written in 44 weeks.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Well, a little more than that, because I've rounded the number of elements down to the nearest 100.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Nevertheless, we’ve taken a little less than a year to get the converters reading the new file format.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;We still aren't writing the new file format, we have the RTF side of things to worry about, which is actually more complex than the XML side, and I’ve completely left out all of the design and coding for the intermediate representation of the file.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The intermediate representation, itself, is at least 6 to 8 months worth of work.&lt;/p&gt;
&lt;p&gt;In other words, we're almost halfway through the schedule, with less than a quarter of the development work done.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;You want more developers?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I don't have more developers.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;This is just for Word.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;We need additional teams for Excel and PowerPoint.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;People want Universal Binaries of Mac Office in their hands, they’re adding new features to Win Office 12 that Mac Office 2004 won’t understand, Apple has a new HIView architecture that requires some re-architecting of parts of Mac Office, and none of this work adds a single new feature to Mac Office.&lt;/p&gt;
&lt;p&gt;More importantly, we’ve also run out of time to test the converters.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Had we started writing converters from scratch, by the time we had something fully tested and ready for public consumption, it would have taken us longer than it has taken us on the route we’ve chosen, in no small part due to the fact that the current route we’ve chosen allows us to leverage almost all of the development work of the Win Office team.&lt;/p&gt;
&lt;p&gt;The only reasonable choice for Mac Word has been to follow in Win Word’s footsteps.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;For those of you who attended the last Mac BU customer council meeting in Redmond and were wondering what I was doing while sitting in the back corner, now you know.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I was busy refactoring Mac Word so that Mac Word 12 could, eventually, become the converter for the new file formats.&lt;/p&gt;
&lt;p&gt;The big win for this strategy is that we get to do all of the things that customers are asking us to do with the next version of Mac Office: Universal Binaries, support for most of the new data types in Win Office 12, re-architecting the UI to take advantage of composited HIViews and add some compelling new features.&lt;/p&gt;
&lt;p&gt;Lastly, can we port the Win Word converter?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Well, actually, in a way, porting the Win Word converter is exactly what we have been doing, but we’re still faced with having to wait until Win Word ships before we have the final source code to merge into what we’ve already ported.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Once that merge is done, then we still have to go through several months’ worth of testing and bug fixing before they’re ready for public use.&lt;/p&gt;
&lt;p&gt;And &lt;span class="Apple-style-span" style="font-style: italic;"&gt;that&lt;/span&gt;&lt;span&gt; is precisely why there’s a delta between Win Office 2007 shipping and the full availability of converters for Mac Office.&lt;/span&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;b&gt;Update:&lt;/b&gt;&amp;nbsp; I’d like to clear up some things about what I said earlier.&amp;nbsp; My back-of-the-envelope estimates included a lot more work than just supporting Open XML in Mac Office.&amp;nbsp; Open XML is the easy part.&amp;nbsp; It included the work required to generate RTF in both directions and to implement tools for developers.&lt;/p&gt;&lt;p mce_keep="true"&gt;If we had to add support for Open XML to Mac Word 12 without being able to port code from Win Word, the read/write estimates shrinks down to about 8.5 man/years (44 weeks x 5 devs x 2 for read+write).&amp;nbsp; As I recall, this about half of what it took to add HTML support to Word: 10 or so devs over a release cycle of 2 years.&amp;nbsp; Doing the work for PPT and Excel isn’t strictly a multiple of Word, because about 30% of the XML elements are shared between the three apps.&amp;nbsp; So, for all of Mac Office, I’d estimate it would take a total of about 5 devs over the release cycle to add full Open XML support starting from scratch, as part of the larger project.&lt;/p&gt;&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Rick&lt;/p&gt;
&lt;p&gt;Currently playing in iTunes: &lt;span class="Apple-style-span" style="font-style: italic;"&gt;Time Loves a Hero&lt;/span&gt;&lt;span&gt; by Little Feat&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1233620" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Microsoft Word" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Microsoft+Word/" /><category term="Mac BU" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Mac+BU/" /></entry><entry><title>Muddy Mojo Waters</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2006/08/28/richard.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2006/08/28/richard.aspx</id><published>2006-08-28T23:26:00Z</published><updated>2006-08-28T23:26:00Z</updated><content type="html">&lt;p&gt;Somewhere in the backroads of Issaquena County, Mississippi, along the banks of the Mississippi&amp;nbsp;river,&amp;nbsp;McKinley Morganfield was born.&amp;nbsp; Likely due to his&amp;nbsp;early life&amp;nbsp;so close to the Mississippi river, McKinley later&amp;nbsp;came to be&amp;nbsp;known as Muddy Waters.&amp;nbsp; The father of Chicago blues.&amp;nbsp; The man&amp;nbsp;most responsible for introducing&amp;nbsp;the electric guitar into the genre.&amp;nbsp; At one ponint in history, the terms "Electric blues" and "Chicago blues" were synonymous.&lt;/p&gt; &lt;p&gt;Talking about Muddy Waters, Eric Clapton once said, "His music changed my life, and whether you know it or not, and like it or not, it probably changed yours too."&amp;nbsp; The very roots of Rock-n-Roll itself traces directly back to the music of Muddy Waters.&amp;nbsp; His influence is comparable to, nay even surpasses, that of say Charlier Parker or Dizzy Gillespie on Jazz.&amp;nbsp; So wide is Muddy Waters' influence that&amp;nbsp;a long standing British&amp;nbsp;combo&amp;nbsp;and a well-known monthly magazine, as well as a Bob Dylan tribute, took their names from the title of one of his songs, "Rollin' Stone."&lt;/p&gt; &lt;p&gt;But I'm not going to talk about Muddy Waters' music per se.&amp;nbsp; Rather, Muddy Waters is known for another contribution to American culture.&amp;nbsp; More than anyone else, Muddy Waters is responsible for the word "mojo" having made its way into our lexicon.&lt;/p&gt; &lt;p&gt;I say that with some care.&amp;nbsp;&amp;nbsp;His contribution&amp;nbsp;derived not from his skill as a lyricist, but the strength of his performances.&amp;nbsp; Nonetheless, the&amp;nbsp;lyrics of many songs Waters' made popular&amp;nbsp;were suffused with references to African folk magic.&amp;nbsp; The song "Hoochie Coochie Man,"&amp;nbsp;written&amp;nbsp;by Waters' bassist,&amp;nbsp;Willie Dixon,&amp;nbsp;is typical:&lt;/p&gt; &lt;p&gt;I got&amp;nbsp;the black cat bone, I got a mojo tooth&lt;br&gt;I got the&amp;nbsp;John the Conqueror root, I'm gonna mess with you  &lt;p&gt;Another classic is Preston Foster's, "I've Got My Mojo Working," which&amp;nbsp;opens with the line, "I got my mojo working, but it just don't work on you."&lt;/p&gt; &lt;p&gt;So, back on March 29, 2005, Dave Winer was in some kind of&amp;nbsp;Muddy Waters, &lt;a href="http://www.scriptingnews.com/2005/03/29.html" target="_blank"&gt;mojo&amp;nbsp;mood&lt;/a&gt;&amp;nbsp;mostly involving Yahoo 360.&amp;nbsp; Coincidentally, Betsy Aoki shared her &lt;a href="http://blogs.msdn.com/betsya/archive/2005/03/29/403459.aspx" target="_blank"&gt;Got Dot Net Blues&lt;/a&gt; with us, which prompted me to add &lt;a href="http://blogs.msdn.com/betsya/archive/2005/03/29/403459.aspx#403512" target="_blank"&gt;this comment&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Fastfoward to a couple of weeks ago in a meeting where we'd invited Betsy to share some thoughts on running our &lt;a href="http://blogs.msdn.com/macmojo" target="_blank"&gt;Mac Office Team blog&lt;/a&gt;.&amp;nbsp; We'd had a name for it, but hadn't really settled on that name.&amp;nbsp; During the course of the discussion with Betsy, however, she used the phrase, "Your Mac mojo," in a rather off-handed, throw-away kind of fashion.&amp;nbsp; The blog's name itself wasn't the topic of disussion, but, in one of those unpredictable, synergistic moments, the name stuck.&amp;nbsp; So, we now have our Mac Mojo woikin'.&lt;/p&gt; &lt;p&gt;Did my comment have anything to do with Betsy's use of the phrase "Mac mojo" during our meeting?&amp;nbsp; I haven't a clue.&amp;nbsp; But, hey, I'm allowed a certain amount of&amp;nbsp;room for&amp;nbsp;dellusion over such things.&amp;nbsp; Whatever the case, I hope everyone enjoys the new team blog.&amp;nbsp; There are some pretty interestings posts in the queue.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Rick&lt;/p&gt; &lt;p&gt;Currently playing in iTunes: &lt;em&gt;Hoochie Coochie Man&lt;/em&gt; by Eric Claption&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=728889" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Mac BU" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Mac+BU/" /></entry><entry><title>Claiming Technorati</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2006/08/24/720960.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2006/08/24/720960.aspx</id><published>2006-08-25T09:42:00Z</published><updated>2006-08-25T09:42:00Z</updated><content type="html">My profile is &lt;a href="http://www.technorati.com/claim/apai6t8zmy" rel="me"&gt;Technorati Profile&lt;/a&gt;.  Nothing to see.  Move along, now.

Rick&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=720960" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Virtual PC and Visual Basic</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2006/08/09/693499.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2006/08/09/693499.aspx</id><published>2006-08-09T21:01:00Z</published><updated>2006-08-09T21:01:00Z</updated><content type="html">&lt;p&gt;Scene: A fly-over view of Microsoft's campus focuses in on the building that houses Mac BU.  The camera "flight" enters one of the offices through a window.  During the fly-over, a voice-over says:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New 3.0 GHz Mac Pro: $3,599.00&lt;/li&gt;
&lt;li&gt;Two 23" Apple Cinema HD Displays: $1998.00&lt;/li&gt;
&lt;li&gt;Office space: $350.00/mo&lt;/li&gt;
&lt;li&gt;Competent developer...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You get the picture.  For years, one of our program managers has been coming into my office with feature questions that invariably begin with, "Is it possible to...?"  Well, of course it's &lt;emphasis&gt;possible&lt;/emphasis&gt;.  Anything's &lt;emphasis&gt;possible&lt;/emphasis&gt; if you give me enough time.&lt;/p&gt;
&lt;p&gt;So, earlier this week, we announced that we're not going to ship a Universal version of Virtual PC and that we're going to discontinue support for Visual Basic for Applications.  The latter is particularly painful for a number of our customers, and people are quite understandably livid about it.&lt;/p&gt;
&lt;p&gt;While Erik Schwiebert has posted a &lt;a href="http://www.schwieb.com/blog/2006/08/08/saying-goodbye-to-visual-basic/"&gt;sound explanation&lt;/a&gt; of the technical hurdles involved, there remains the more general question of finding the resources capable of doing the work required to overcome those hurdles.  Many people who are not at all familiar with the exigencies of software development look at Microsoft's balance sheet, and the maxim that anything's &lt;emphasis&gt;possible&lt;/emphasis&gt; in this industry, and wonder whether or not we're pulling their legs.  They don't understand that the constraining resource isn't money.  It's people.&lt;/p&gt;
&lt;p&gt;There are two pieces in the people puzzle.  The first is head count, and, for various reasons, Mac BU has always operated with open head count.  "Open head count," means having a budgeted slot to hire someone, but not having an actual employee in that budgeted slot.  Due to the turn-over of people who &lt;a href="http://technosloth.blogspot.com/2006/07/coreclr-at-wwdc.html"&gt;move on to new challenges&lt;/a&gt;, and the difficulty of finding candidates who we believe won't write something worthy of being posted to &lt;a href="http://thedailywtf.com/default.aspx"&gt;The Daily WTF&lt;/a&gt;, despite the steady stream we keep interviewing, I don't see this condition changing in the near future.&lt;/p&gt;
&lt;p&gt;The fact that we've always had open head count points out a subtle aspect of the budgeting issue.  Picture yourself being Roz Ho's boss.  She comes to you asking for an increased budget for more head count.  You look at the existing budget, and see that there are open head count.  Your question is likely to be, "Why are you asking for more head count when you haven't filled the head count you already have?"  The point: the people resource issue isn't a budgeting problem.&lt;/p&gt;
&lt;p&gt;The second part of the people issue is a bit more difficult to understand when you haven't spent a great deal of time trying to ship software in the real world, but there is a point where adding new people to a project results in diminishing returns.  Fred Brooks refers to this as the &lt;a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month"&gt;Mythical Man Month&lt;/a&gt;.  If you ask me whether Mac BU is still on the increasing side of the curve or if we've come close to the diminishing side, I'd honestly have to say that I really don't know.  This is one of those cases where you don't really know you've hit the point of diminishing returns until you get there, and, even then, recognizing that that you have is exceedingly difficult.  There are a number of variables that affect the time it takes to complete a software project, and it's very difficult to account for them all.&lt;/p&gt;
&lt;p&gt;However, Schwieb's estimate of two or more years to rework VB/VBA isn't far off the mark, and it assumes that we put every resource onto that project that we can possibly put on it.  That estimate also takes into account the issue of dependencies.  This part of the Mythical Man Month isn't all that well discussed in the Wikipedia article linked above, but it's one of the more important problems we face.  The number of people you can effectively put on a project is determined by the number of discrete tasks into which the project can be broken down and by the extent to which those discrete tasks depend on the completion of other tasks.&lt;/p&gt;
&lt;p&gt;Consider the VBA execution engine that Schwieb mentioned.  One might be tempted to take each opcode, and turn that into a discrete task to be worked on by an individual developer.  Unfortunately, that kind of approach will lead to less coherence in the overall project.  Are there any common elements to certain subsets of the full set of opcodes?  If there are, and we have one developer per opcode, then there's a high probability we'll have a large number of subtly different implementations of these common elements.  The more discrete tasks into which you break up a project, the greater the logistical difficulty of integrating each of those discrete tasks into a coherent whole.&lt;/p&gt;
&lt;p&gt;Now, I've read a number of suggestions that people have made: take a Ruby on Rails approach, figure out a way to use PowerPC/CFM VBA running under Rosetta, and a few others I can't recall off the top of my head.  There are ideas we'd explored that I haven't seen anyone suggest.  I can't think of any one of them that would not have involved more work than working with the design parameters of the current VBA implementation--not the least of which is the fact that all of the applications implement their object models using the OLE Automation, dual-dispatch/type library approach.  One has to be very careful with such ideas, because there are a number of hidden gotcha's that are very difficult to accurately assess.&lt;/p&gt;
&lt;p&gt;So, could we have done something about VB/VBA?  Certainly, if we'd had enough time.  Do we make those users who really don't care about VB/VBA wait several years before we ship a Universal Binary version of Mac Office?  At some point, the tail starts to wag the dog.&lt;/p&gt;
&lt;p&gt;But that does not mean we are unaware of the pain this will cause to a significant number of users.  If you think we are not aware of that pain, consider this.  &lt;a href="http://davidweiss.blogspot.com/"&gt;David Weiss&lt;/a&gt; can give you a better number on this, but our testing methodology has always made extensive use of scripts for automated tests.  Not just a couple of scripts, but thousands of scripts &lt;emphasis&gt;per Office application&lt;/emphasis&gt;.  At one point, all of those scripts were written in VB/VBA.  In order to carry that testing effort forward into the era of Universal Binaries, every single one of those scripts had to be rewritten in AppleScript.  I don't think it's even a remote exaggeration to say that our use of VB/VBA was at least a couple orders of magnitude greater than even our most automated customers.  Do we know your pain?  You bet we do.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Rick&lt;/p&gt;
&lt;p&gt;Currently playing in iTunes: &lt;i&gt;Feel So Bad&lt;/i&gt; by The Derek Trucks Band&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=693499" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author><category term="Mac BU" scheme="http://blogs.msdn.com/b/rick_schaut/archive/tags/Mac+BU/" /></entry><entry><title>Opportunity Cost</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2006/06/22/643635.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2006/06/22/643635.aspx</id><published>2006-06-23T06:43:00Z</published><updated>2006-06-23T06:43:00Z</updated><content type="html">&lt;p&gt;Back when I started blogging, I had a go-around with Pierre Igot.  I'm not going to rehash it, but I think the best summary of the entire affair can be found &lt;a href="http://www.drunkenbatman.com/drunkenblog-archives/000232.html"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;During that discussion, I made the mistake of bringing up the concept of "opportunity cost."  The mistake wasn't so much that the concept didn't apply to the discussion.  Rather, my mistake was in believing that Pierre and some of the other folks in his echo chamber would understand what I was talking about.&lt;/p&gt;

&lt;p&gt;So, from time to time, one of them tries to mock me by throwing the phrase into a discussion somewhere.  The most recent instance is in a comment made by someone named Warren Beck, on Eric Schwiebert's recent post explaining his take off on J. Geils' &lt;a href="http://www.schwieb.com/blog/2006/06/21/small-clarification/"&gt;Love Stinks&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now, I suppose I could take the time to explain "opportunity cost" to these guys, but I can also spend that time playing a game with my daughter, or reading Dick Davis' recent translation of Abu'l-Qasim Firdawsi's &lt;i&gt;Shahnameh: The Persian Book of Kings&lt;/i&gt;, or watching the latest episode of &lt;i&gt;CSI&lt;/i&gt;.  Better yet, rather than explaining to these guys why I might be inclined to fix someone else's problems before I get around to fixing theirs, I can spend that time actually fixing bugs.&lt;/p&gt;

&lt;p&gt;Now, I'll bet that at least one of these guys will offer a comment complaining about how we place profits over fixing bugs, thereby demonstrating that they really don't get it.  If they do, I will most certainly approve their comments.  Do you think any one of them will stop to ask themselves &lt;i&gt;why&lt;/i&gt; I might be inclined to approve such a comment?&lt;/p&gt;

&lt;p&gt;Do you think I might be allowed to coin the word "egonorant"?  (My daughter suggested that I give the latin term for this: &lt;i&gt;ego rectalitis&lt;/i&gt;.  That's where the head swells, and it gets stuck.)&lt;/p&gt;

&lt;p&gt;By the way, I should point out that none of this has any bearing on whether or not we, at MacBU, pay any attention to Pierre's bug reports.  In fact we do.  I've even &lt;a href="http://blogs.msdn.com/rick_schaut/archive/2004/05/19/135315.aspx"&gt;given him credit&lt;/a&gt; for his assistance in helping to track down a bug.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Rick&lt;/p&gt;

&lt;p&gt;Currently playing in iTunes: &lt;i&gt;Ain't Wastin' Time No More&lt;/i&gt; by The Allman Brothers Band&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=643635" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Michael Bartosh Memorial Scholarship</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/rick_schaut/archive/2006/06/16/634861.aspx" /><id>http://blogs.msdn.com/b/rick_schaut/archive/2006/06/16/634861.aspx</id><published>2006-06-17T04:42:29Z</published><updated>2006-06-17T04:42:29Z</updated><content type="html">&lt;p&gt;Those of you who knew, or knew of, Michael Bartosh, might want to &lt;a href="http://www.macworldexpo.com/michaelbartoshmemorialscholarship"&gt;check this out&lt;/a&gt;.  John Welch, over at &lt;a href="http://www.bynkii.com/"&gt;bynkii.com&lt;/a&gt; is &lt;a href="http://www.bynkii.com/archives/2006/06/an_actual_request_from_me.html"&gt;pretty passionate about it&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Currently playing in iTunes: &lt;i&gt;Fallen Down&lt;/i&gt; by Gov't Mule&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=634861" width="1" height="1"&gt;</content><author><name>Rick Schaut</name><uri>http://blogs.msdn.com/Rick-Schaut/ProfileUrlRedirect.ashx</uri></author></entry></feed>