<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6983287</id><updated>2012-01-01T11:17:50.941-08:00</updated><title type='text'>command center</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://commandcenter.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://commandcenter.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>rob</name><uri>http://www.blogger.com/profile/18259238879445421354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.herpolhode.com/rob/doodles/june062002-1thumb.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6983287.post-3287673047354124772</id><published>2011-12-31T18:15:00.000-08:00</published><updated>2012-01-01T11:17:50.948-08:00</updated><title type='text'>Esmerelda's Imagination</title><content type='html'>&lt;div&gt;An actress acquaintance of mine—let's call her Esmerelda—once said, "I can't imagine being anything except an actress."  To which the retort was given, "You can't be much of an actress then, can you?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was reminded of this exchange when someone said to me about Go, "I can't imagine programming in a language that doesn't have generics."  My retort, unspoken this time, was, "You can't be much of a programmer, then, can you?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is not an essay about generics (which are a fine thing and may arrive in Go one day, or may not) but about imagination, or at least what passes for imagination among computer programmers: complaint. A friend observed that the definitive modern pastime is to complain on line. For the complainers, it's fun, for the recipients of the complaint it can be dispiriting. As a recipient, I am pushing back—by complaining, of course.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not so long ago, a programmer was someone who programs, but that seems to be the last thing programmers do nowadays. Today, the definition of a programmer is someone who complains unless the problem being solved has already been solved and whose solution can be expressed in a single line of code. (From the point of view of a language designer, this reduces to a corollary of language success: every program must be reducible to single line of code or your language sucks. The lessons of APL have been lost.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A different, more liberal definition might be that a programmer is someone who approaches every problem exactly the same way and complains about the tools if the approach is unsuccessful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the programmer population, the modern pastime demands that if one is required to program, or at least to think while programming, one blogs/tweets/rants instead. I have seen people write thousands of words of on-line vituperation that problem X requires a few extra keystrokes than it might otherwise, missing the irony that had they spent those words on programming, they could have solved the problem many times over with the saved keystrokes. But, of course, that would be programming.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Two years ago Go went public. This year, Dart was announced. Both came from Google but from different teams with different goals; they have little in common. Yet I was struck by a property of the criticisms of Dart in the first few days: by doing a global substitution of "Go" for "Dart", many of the early complaints about Go would have fit right into the stream of Dart invective. It was unnecessary to try Go or Dart before commenting publicly on them; in fact, it was important not to (for one thing, trying them would require programming). The criticisms were loud and vociferous but irrelevant because they weren't about the languages at all. They were just a standard reaction to something new, empty of meaning, the result of a modern programmer's need to complain about everything different. Complaints are infinitely recyclable. ("I can't imagine programming in a language without XXX.") After all, they have a low quality standard: they need not be checked by a compiler.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A while after Go launched, the criticisms changed tenor somewhat. Some people had actually tried it, but there were still many complainers, including the one quoted above. The problem now was that imagination had failed: Go is a language for writing Go programs, not Java programs or Haskell programs or any other language's programs. You need to think a different way to write good Go programs. But that takes time and effort, more than most will invest. So the usual story is to translate one program from another language into Go and see how it turns out. But translation misses idiom. A first attempt to write, for example, some Java construct in Go will likely fail, while a different Go-specific approach might succeed and illuminate. After 10 years of Java programming and 10 minutes of Go programming, any comparison of the language's capabilities is unlikely to generate insight, yet here come the results, because that's a modern programmer's job.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's not all bad, of course. Two years on, Go has lots of people who've spent the time to learn how it's meant to be used, and for many willing to invest such time the results have been worthwhile. It takes time and imagination and programming to learn how to use any language well, but it can be time well spent. The growing Go community has generated lots of great software and has given me hope, hope that there may still be actual programmers out there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, I still see far too much ill-informed commentary about Go on the web, so for my own protection I will start 2012 with a resolution:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;I resolve to recognize that a complaint reveals more about the complainer than the complained-about. Authority is won not by rants but by experience and insight, which require practice and imagination. And maybe some programming.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6983287-3287673047354124772?l=commandcenter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/3287673047354124772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/3287673047354124772'/><link rel='alternate' type='text/html' href='http://commandcenter.blogspot.com/2011/12/esmereldas-imagination.html' title='Esmerelda&apos;s Imagination'/><author><name>rob</name><uri>http://www.blogger.com/profile/18259238879445421354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.herpolhode.com/rob/doodles/june062002-1thumb.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6983287.post-1091166294903681506</id><published>2011-09-18T15:19:00.000-07:00</published><updated>2011-09-18T15:27:01.341-07:00</updated><title type='text'>User experience</title><content type='html'>&lt;div&gt;[We open in a well-lit corporate conference room. A meeting has been running for a while. Lots has been accomplished but time is running out.]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[The door opens and a tall, tow-headed twenty-something guy in glasses walks in, carrying a Mac Air and a folder.]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;    &lt;/span&gt;Oh, here he is.  This is Richard. I asked him to join us today. Glad he could make it. He's got some great user experience ideas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Richard:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Call me Dick.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Dick's done a lot of seminal UX work for us.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Hey, aren't you the guy who's arguing we shouldn't have search in e-books?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Absolutely. It's a lousy idea.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;What?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Books are the best UI ever created. They've been perfected over more than 500 years of development. We shouldn't mess with success.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Product manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Well, this is a new age. We should be allowed to ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Books have never had search. If we add search, we'll just confuse the user.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Product manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Oh, you're right. We don't want to do that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;But e-books aren't physical books. They're not words on paper. They're just bits, information.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Our users don't know that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Yes they do! They don't want simple books, they want the possibilities that electronic books can bring. Do you know about information theory? Have you even heard of Claude Shannon?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Isn't he the chef at that new biodynamic tofu restaurant in North Beach?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Uhh, yeah, OK. But look, you're treating books as a metaphor for your user interface. That's as lame as using a trash can to throw away files and folders. We can do so much more!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;You misunderstand. Our goal is to make computers easier to use, not to make them more useful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Product manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Wow, that's good.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Wow.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Let's get back on track. Dick, you had some suggestions for us?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Yeah.  I was thinking about the work we did with the Notes iPhone app. Using a font that looked like a felt marker was a big help for users.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Seriously?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Yes, it made users feel more comfortable about keeping notes on their phone.  Having a font that looks like handwriting helps them forget there's a computer underneath.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;I see....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Yes, so... I was thinking for the Address Book app for Lion, we should change the look to be like a...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Can you show us?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Yeah, sure. I have a mock-up here.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;[Opens laptop, turns it to face the room.]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Product manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;An address book! That's fantastic. Look at the detail! Leather, seams at the corners, a visible spine. This is awesome!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;It's just a book. It's a throwback. What are you doing? Why does it need to look like a physical address book?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Because it &lt;i&gt;is&lt;/i&gt; an address book!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;No it's not, it's an app!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;It's a book.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;You've made it one. This time it's not even a metaphor - it's literally a book. You're giving up on the possibility of doing more.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;As I said, users don't care about functionality. They want comfort and familiarity. An Address Book app that looks like an address book will be welcome. Soothing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;If they want a paper address book, they can buy one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Why would they do that if they have one on their desktop?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Can they at least change the appearance? Is there a setting somewhere?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Oh, no. We know better than the user - otherwise why are we here? Settings are just confusing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;I  ... I really don't understand what's going on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;That's OK, you don't have to, but I'd like to give you the action item to build it.  End of the quarter OK?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Uhhh, sure.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Manager.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Dick, do you have the requirements doc there?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Right here.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;[Pushes the folder across the desk.]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Can't you just mail it to me?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;It's right there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineer:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;I know, but... OK.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;That's a great start, Dick. What else do you have?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Well, actually, maybe this is the time to announce that I'm moving on. Today is my last day here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Manager, Product manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;[Unison] Oh no!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Yeah, sorry about that. I've had an amazing time here changing the world but it's tiem for me to seek new challenges.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Manager:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Do you have something in mind?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dick:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;    &lt;/span&gt;Yes, I'm moving north. Microsoft has asked me to head a group there. They've got some amazing new ideas around paper clips.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;FADE&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6983287-1091166294903681506?l=commandcenter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/1091166294903681506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/1091166294903681506'/><link rel='alternate' type='text/html' href='http://commandcenter.blogspot.com/2011/09/we-open-in-well-lit-corporate.html' title='User experience'/><author><name>rob</name><uri>http://www.blogger.com/profile/18259238879445421354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.herpolhode.com/rob/doodles/june062002-1thumb.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6983287.post-1982234857091660188</id><published>2011-08-22T19:36:00.000-07:00</published><updated>2011-08-22T19:38:38.346-07:00</updated><title type='text'>Regular expressions in lexing and parsing</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;Comments extracted from a code review. I've been asked to disseminate them more widely.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;I should say something about regular expressions in lexing and&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;parsing. Regular expressions are hard to write, hard to write well,&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;and can be expensive relative to other technologies. (Even when they&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;are implemented correctly in N*M time, they have significant&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;overheads, especially if they must capture the output.)&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;Lexers, on the other hand, are fairly easy to write correctly (if not&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;as compactly), and very easy to test. Consider finding alphanumeric&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;identifiers.  It's not too hard to write the regexp (something like&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;"[a-ZA-Z_][a-ZA-Z_0-9]*"), but really not much harder to write as a&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;simple loop. The performance of the loop, though, will be much higher&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;and will involve much less code under the covers. A regular expression&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;library is a big thing. Using one to parse identifiers is like using a&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;Ferrari to go to the store for milk.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;And when we want to adjust our lexer to admit other character types,&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;such as Unicode identifiers, and handle normalization, and so on, the&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;hand-written loop can cope easily but the regexp approach will break&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;down.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;A similar argument applies to parsing.  Using regular expressions to&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;explore the parse state to find the way forward is expensive,&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;overkill, and error-prone. Standard lexing and parsing techniques are&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;so easy to write, so general, and so adaptable there's no reason to&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;use regular expressions.  They also result in much faster, safer, and&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;compact implementations.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.949219); "&gt;Another way to look at it is that lexers and parsing are matching&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.949219); "&gt;statically-defined patterns, but regular expressions' strength is that&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.949219); "&gt;they provide a way to express patterns dynamically.  They're great in&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.949219); "&gt;text editors and search tools, but when you know at compile time what&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.949219); "&gt;all the things are you're looking for, regular expressions bring far&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.949219); "&gt;more generality and flexibility than you need.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;Finally, on the point about writing well.  Regular expressions are, in&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;my experience, widely misunderstood and abused. When I do code reviews&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;involving regular expressions, I fix up a far higher fraction of the&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;regular expressions in the code than I do regular statements.  This is&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;a sign of misuse: most programmers (no finger pointing here, just&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;observing a generality) simply don't know what they are or how to use&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;them correctly.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;Encouraging regular expressions as a panacea for all text processing&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;problems is not only lazy and poor engineering, it also reinforces&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;their use by people who shouldn't be using them at all.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;So don't write lexers and parsers with regular expressions as the&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;starting point. Your code will be faster, cleaner, and much easier to&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; background-color: rgba(255, 255, 255, 0.949219); "&gt;understand and to maintain.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6983287-1982234857091660188?l=commandcenter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/1982234857091660188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/1982234857091660188'/><link rel='alternate' type='text/html' href='http://commandcenter.blogspot.com/2011/08/regular-expressions-in-lexing-and.html' title='Regular expressions in lexing and parsing'/><author><name>rob</name><uri>http://www.blogger.com/profile/18259238879445421354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.herpolhode.com/rob/doodles/june062002-1thumb.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6983287.post-8832382660654367625</id><published>2010-08-27T18:24:00.000-07:00</published><updated>2010-08-27T18:46:58.782-07:00</updated><title type='text'>Know your science</title><content type='html'>&lt;div&gt;Except for the TV show "The Big Bang Theory", popular culture gets science wrong.  We all know that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But there's a way it tends to get science wrong that upsets me more than most.  That is when it misuses the tools of science by willfully ignoring what science actually means.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One common example is celebrity equations, wherein some mathematical-looking expression mixes two or more celebrities together, as in (I'm making this one up and I'm not a cultural critic, let alone a comic, so please bear with me): Lady Gaga = (2*Madonna + Carrot Top)/3.  Mathematically savvy readers will recognize that I normalized that equation.  If you don't know what that means, you shouldn't be writing celebrity equations, because mathematical equations mean something, they're not just symbols.  Like musical comedy based on bad notes, bogus mathematical equations are not funny, just lazy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some years ago I even wrote a letter to Entertainment Weekly when they had a long article full of egregious celebrity equations.  To their credit, they published the letter and even mended their ways for a while. I quote the &lt;a href="http://www.ew.com/ew/article/0,,284051,00.html"&gt;letter&lt;/a&gt; here:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;According to EW math, the more buzz or intelligence you have, the less likely you are to be on the It List. That may be true, but I bet you didn't mean that. Your equation is art-directed nonsense. EW seems to think the joke is that the equations look cute: If Einstein is funny, his square root is hilarious...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;In short, mathematics may look funny if you don't understand it but that doesn't make it funny if you misuse it in ignorance.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another sort of abuse is comedy periodic tables:  periodic tables of the vegetables, period table of the desserts, periodic table of the presidents, and on and on.  There are zillions of them.   I believe the vegetables one was the first widely distributed example.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What's wrong with them?  Again, they miss the point about the one true periodic table, Mendeleev's periodic table of the elements.  In fact, to put things with no structure into a periodic table not only misses the point of the periodic table, it misses the profound idea that some things have periods.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mendeleev's table, by recognizing the &lt;i&gt;periodic&lt;/i&gt; &lt;i&gt;structure&lt;/i&gt; of the elements, predicted not only properties of the elements, but the very &lt;i&gt;existence&lt;/i&gt; of undiscovered elements. It was a breakthrough.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The periodic table is not some artistic layout of letters, it's science at its very best, one of the great results of the 19th century and the birth of modern chemistry.  It doesn't honor science to take, say, &lt;a href="http://gizmodo.com/5169466/the-periodic-table-of-typefaces"&gt;typefaces&lt;/a&gt; and put them in a funny-looking grid.  That just mocks the idea that science can predict the way the world works.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Science is not arbitrary.  Making arbitrary cultural artifacts by abusing scientific ideas is not just wrong, it's offensive.  It cheapens science.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another area of abuse is quantum mechanics, and a common victim is Heisenberg's uncertainty principle.  Despite what some ill-informed academics would have you believe, Heisenberg's principle is not some general statment about weird shit happening in the world, it is a fantastically precise scientific statement about the limits of measurement of two simultaneous physical properties: position and momentum.  &lt;i&gt;It's not a metaphor!&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What's really sad is that many of the commonest misuses of the terminology of quantum mechanics come from other areas of science and technology.  For instance, there is a term in computer engineering called a Heisenbug, which refers to faults that are unpredictable, most often for bugs that go away when you examine them.  It's a cute name but it isn't even a correct reference.  The quantum mechanical property of things changing when you observe them is not the Heisenberg uncertainty principle, it's the observer effect. These two ideas are often confused but they are not the same. They're not even closely related.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The observer effect in quantum mechanics describes how the act of measuring a quantum system forces the system to cough up a measurable quantity, which triggers a "wave function collapse".  Heisenberg's uncertainty principle says that the minimum product of the error in simultaneous measurement of a particle's position and momentum is Planck's constant divided by 4π, or as we write it in physics, ℏ/2. (By the way, that's an extremely small value.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not only are these very different ideas, neither of them has anything to do with computer bugs.  The term Heisenbug is trendy but bogus and ignores some strange and beautiful ideas. It's no better informed than the square root of Einstein or the periodic table of the typefaces.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you're going to use the terms of science to inform your world, please make a point to understand the science too. Your world will be richer for it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6983287-8832382660654367625?l=commandcenter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/8832382660654367625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/8832382660654367625'/><link rel='alternate' type='text/html' href='http://commandcenter.blogspot.com/2010/08/know-your-science.html' title='Know your science'/><author><name>rob</name><uri>http://www.blogger.com/profile/18259238879445421354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.herpolhode.com/rob/doodles/june062002-1thumb.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6983287.post-4171630289831923748</id><published>2008-04-02T01:37:00.001-07:00</published><updated>2008-04-02T01:41:36.332-07:00</updated><title type='text'>MacDonald's not McDonald's</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Fpj1cqLIn_Y/R_NF7kU6pTI/AAAAAAAAAXs/LGXosA-4QgE/s1600-h/mcdonalds.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_Fpj1cqLIn_Y/R_NF7kU6pTI/AAAAAAAAAXs/LGXosA-4QgE/s400/mcdonalds.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5184564485699577138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Same general concept.  Had a hamburger here too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6983287-4171630289831923748?l=commandcenter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/4171630289831923748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/4171630289831923748'/><link rel='alternate' type='text/html' href='http://commandcenter.blogspot.com/2008/04/macdonalds-not-mcdonalds.html' title='MacDonald&apos;s not McDonald&apos;s'/><author><name>rob</name><uri>http://www.blogger.com/profile/18259238879445421354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.herpolhode.com/rob/doodles/june062002-1thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Fpj1cqLIn_Y/R_NF7kU6pTI/AAAAAAAAAXs/LGXosA-4QgE/s72-c/mcdonalds.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6983287.post-6164750921027759867</id><published>2008-04-01T23:32:00.000-07:00</published><updated>2008-04-02T00:21:42.861-07:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Fpj1cqLIn_Y/R_MpY0U6pSI/AAAAAAAAAXk/17GRq7O9SN0/s1600-h/photo.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_Fpj1cqLIn_Y/R_MpY0U6pSI/AAAAAAAAAXk/17GRq7O9SN0/s400/photo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5184533102373545250" /&gt;&lt;/a&gt;&lt;br /&gt;When I travel I like to have a hamburger at a McDonald's restaurant. There are a number of these to be found around the world.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6983287-6164750921027759867?l=commandcenter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/6164750921027759867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/6164750921027759867'/><link rel='alternate' type='text/html' href='http://commandcenter.blogspot.com/2008/04/when-i-travel-i-like-to-have-hamburger.html' title=''/><author><name>rob</name><uri>http://www.blogger.com/profile/18259238879445421354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.herpolhode.com/rob/doodles/june062002-1thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Fpj1cqLIn_Y/R_MpY0U6pSI/AAAAAAAAAXk/17GRq7O9SN0/s72-c/photo.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6983287.post-108698514063518428</id><published>2006-06-11T13:17:00.000-07:00</published><updated>2007-04-12T11:15:24.910-07:00</updated><title type='text'></title><content type='html'>I can't find this on the web, so here follows a note I wrote in 1991&lt;br /&gt;of an odd event in my computing career.&lt;br /&gt;&lt;br /&gt;===&lt;br /&gt;&lt;br /&gt;There's no such thing as bad publicity, the saying goes.&lt;br /&gt;Unless, of course, you have no interest in being a public figure.&lt;br /&gt;That's where Richard Stallman and I start to diverge.&lt;br /&gt;&lt;br /&gt;A friend called early Saturday to report some good news; groggily,&lt;br /&gt;I countered with a feeling of impending doom.  I had to spend the&lt;br /&gt;day preparing for a talk Monday afternoon at MIT.  The talk itself&lt;br /&gt;would be fine: I'd been invited by Butler Lampson to talk about Plan 9&lt;br /&gt;at the Lab for Computer Science and took that as the kind of honor&lt;br /&gt;I rise to.  I'd give a hell of talk, provided I was allowed to.&lt;br /&gt;The problem, I said, is that MIT and I are connected by some history.&lt;br /&gt;&lt;br /&gt;I explained about The League for Programming Freedom,&lt;br /&gt;just the `League' to insiders, whose multiply ambiguous name&lt;br /&gt;hearkens to an innocent age in software.  Free Software is&lt;br /&gt;like Free Love, a hippie pipe dream in which&lt;br /&gt;computing is free from venality, commercial interests, even&lt;br /&gt;capitalism.  The founder of the League, Richard Stallman,&lt;br /&gt;has been preaching the gospel of promiscuous programming&lt;br /&gt;for years now and has won many converts, especially&lt;br /&gt;in academia.  Especially at MIT.  Especially among the undergraduates.&lt;br /&gt;Especially in the building on Technology Square in Cambridge that&lt;br /&gt;the League shares, in part, with LCS.&lt;br /&gt;&lt;br /&gt;Stallman's sermons, in print and in person, always include a&lt;br /&gt;long harangue about patents on software.  The citation in that&lt;br /&gt;harangue is usually #4,555,755, AT&amp;T's US patent on what is&lt;br /&gt;colloquially called ``backing store,'' a technique for implementing&lt;br /&gt;windows on a bitmap display.  This patent is of particular interest&lt;br /&gt;to Stallman because he claims to have used the idea, before the patent&lt;br /&gt;was filed, while writing the window system for the&lt;br /&gt;Lisp Machine at MIT.  The patent is of interest to me because I am&lt;br /&gt;listed as the inventor.&lt;br /&gt;&lt;br /&gt;I don't wish to dive into the legal and technical intricacies of&lt;br /&gt;the patent question here.  I will just state that I know what I&lt;br /&gt;invented and when I invented it, and I know what Stallman did and&lt;br /&gt;when he did it, and I do not believe that Stallman had nearly as&lt;br /&gt;good an idea as I did.  And as for the propriety of software&lt;br /&gt;patents, I signed a contract when I joined AT&amp;T that said, in&lt;br /&gt;effect, that I could work on whatever I fancied and would be&lt;br /&gt;supported well in that endeavor; all AT&amp;T asked in return was that&lt;br /&gt;they be allowed to make money from my work.  In Stallman's&lt;br /&gt;world that is a Faustian deal, but then I always thought only&lt;br /&gt;boring people went to Heaven.&lt;br /&gt;&lt;br /&gt;When the patent was filed (October 7, 1982; issued&lt;br /&gt;November 26, 1985), there were very few software patents and&lt;br /&gt;the occasion was celebrated.  I was congratulated warmly and&lt;br /&gt;people were excited about the future of software patents.&lt;br /&gt;Nowadays, however, the climate in universities at least is&lt;br /&gt;very different, and Richard Stallman is almost single-handedly&lt;br /&gt;responsible for the change.  (The business community, on the other&lt;br /&gt;hand, is still excited.)&lt;br /&gt;&lt;br /&gt;A few years ago, AT&amp;T began quietly pressing its case on a small&lt;br /&gt;portfolio of computer graphics patents, with #4,555,775 being central.&lt;br /&gt;Polite letters were written to a number of places inviting people&lt;br /&gt;to draw up license agreements; polite letters were returned, and&lt;br /&gt;legalities proceeded normally.  (I don't know, and wouldn't say if&lt;br /&gt;I did, what the state of those legalities is today.)  One of the&lt;br /&gt;letters went to the X consortium at MIT, where it was largely&lt;br /&gt;ignored.  A follow-up letter early in 1991 hit the electronic&lt;br /&gt;bulletin boards, however, and I have been a public figure ever&lt;br /&gt;since.&lt;br /&gt;&lt;br /&gt;I hung up and began preparing for the worst.  Stallman and I had&lt;br /&gt;never met, and I felt sure he'd capitalize on my visit to his&lt;br /&gt;building.&lt;br /&gt;&lt;br /&gt;I was therefore not surprised early Monday afternoon, as we were eating&lt;br /&gt;a takeout lunch in the fifth-floor lounge at LCS, when someone&lt;br /&gt;said that Stallman was preparing to stage a protest at my talk.&lt;br /&gt;Jerry Saltzer went to his office to get a copy of the announcement,&lt;br /&gt;made on a local LCS electronic bulletin board:&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;    Date: Sun, 17 Nov 91 20:26:37 -0500&lt;br /&gt;    From: Richard Stallman &lt;rms@gnu.ai.mit.edu&gt;&lt;br /&gt;    To: bboard@lcs.mit.edu&lt;br /&gt;    Subject: Protest the AT&amp;T backing store patent, Monday afternoon&lt;br /&gt;    &lt;br /&gt;    You may have heard that AT&amp;T has a patent on a simple technique called&lt;br /&gt;    "backing store" which consists of saving the hidden parts of a window&lt;br /&gt;    in off-screen memory.  AT&amp;T is using this patent to threaten to sue&lt;br /&gt;    all the users of X windows, including MIT.  A few weeks ago, the X&lt;br /&gt;    consortium stated that these threats are "chilling to university&lt;br /&gt;    research".&lt;br /&gt;    &lt;br /&gt;    Rob Pike, who obtained this patent for AT&amp;T, is going to be visiting&lt;br /&gt;    Tech Square on Monday afternoon.  If you don't like AT&amp;T's&lt;br /&gt;    monopolistic threat, now's the time to express your opinion by joining&lt;br /&gt;    in a quiet protest against his visit.&lt;br /&gt;    &lt;br /&gt;    Let's meet on the fourth floor of 545 Tech Square, near room 430,&lt;br /&gt;    around 2:15pm.&lt;br /&gt;    &lt;br /&gt;    Please make a sign, even an el-cheapo sign, to identify yourself as&lt;br /&gt;    part of the protest.  Make up a slogan on the subject of Pike, AT&amp;T,&lt;br /&gt;    backing store, X windows, patents..., then write it with a magic&lt;br /&gt;    marker on a piece of copier paper.&lt;br /&gt;    &lt;br /&gt;    (Pike has spoken publicly in favor of software patents and the backing&lt;br /&gt;    store patent in particular.  He is thus not a reluctant participant in&lt;br /&gt;    AT&amp;T's campaign of threats.)&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;This notice has some characteristic inaccuracies, of which the worst&lt;br /&gt;is that AT&amp;T has never threatened to sue anyone over the patent,&lt;br /&gt;but I love it anyway.  The penultimate paragraph typifies Stallman&lt;br /&gt;as only Stallman himself can.  I asked if Stallman really believed&lt;br /&gt;that people needed instructions on how to make signs.  I was told&lt;br /&gt;that among MIT undergraduates a bizarre form of political correctness&lt;br /&gt;had developed, putting Stallman in charge of a pack of eager&lt;br /&gt;misguided nerds who in a healthier environment would probably&lt;br /&gt;be protesting the killing of rats in biology class.&lt;br /&gt;&lt;br /&gt;My hosts at LCS were mortified.  Stallman had staged a protest&lt;br /&gt;at a company (to complain about Lotus's ``look and feel'' lawsuit),&lt;br /&gt;but had never picketed a technical talk.  Moreover, I was the&lt;br /&gt;guest of LCS, not the League, had been invited to give this talk,&lt;br /&gt;and was planning to give a technical lecture, not a legal debate,&lt;br /&gt;on a topic unrelated to patents.  There was even a suggestion&lt;br /&gt;about examining the MIT code to see what it said about freedom&lt;br /&gt;of speech.  But then someone pointed out that&lt;br /&gt;Stallman, for all his eccentricities (don't get me started) was&lt;br /&gt;polite, and if he wanted a `quiet' protest it would be quiet, and&lt;br /&gt;I agreed.&lt;br /&gt;A wag remarked that in the cloistered MIT world, participating&lt;br /&gt;in a demonstration like this would be a broadening experience.&lt;br /&gt;&lt;br /&gt;I was admonished not to talk to the protesters, not to answer&lt;br /&gt;any questions about patents, and to let one of my hosts deflect&lt;br /&gt;any verbal missile hurled at me.  I replied that I had expected&lt;br /&gt;as much and was prepared.  For example, I was wearing a Bugs Bunny&lt;br /&gt;T-shirt rather than a three-piece suit; I am a researcher more&lt;br /&gt;than an AT&amp;T Ambassador, to quote a giveaway pencil from a few&lt;br /&gt;years back.&lt;br /&gt;&lt;br /&gt;I needed to go to the lecture room early to prepare a laptop and&lt;br /&gt;overhead projector for a brief demo during my talk.  Because of&lt;br /&gt;a scheduling conflict, the room was not a classroom but a sort&lt;br /&gt;of playroom full of bean bags and not enough chairs.&lt;br /&gt;&lt;br /&gt;I quickly identified the protesters: they were the ones in the back&lt;br /&gt;with hand-written slogans on pieces of copier paper taped to their&lt;br /&gt;chests.  ``We don't back AT&amp;T's Store of Patents,'' was perhaps&lt;br /&gt;the most creative sign, except for a woman in a wheelchair with a&lt;br /&gt;large placard reading, ``Patents Cripple Software.''  I looked&lt;br /&gt;twice to verify that she needed the wheelchair.  I tried to meet&lt;br /&gt;Stallman's gaze but he would only steal surreptitious sideways&lt;br /&gt;glances as he nervously paced back and forth in front of his&lt;br /&gt;entourage.&lt;br /&gt;&lt;br /&gt;My equipment set up easily, so I sat down in a reserved chair&lt;br /&gt;in the front row to await the starting time and began chatting&lt;br /&gt;to someone from LCS.  Someone tapped my shoulder.  I turned to&lt;br /&gt;see a sign-encrusted protester.  Physical contact.  I braced myself.&lt;br /&gt;He spoke.&lt;br /&gt;&lt;br /&gt;- Excuse me, would you mind moving?  I won't be able to see the screen.&lt;br /&gt;&lt;br /&gt;- Don't worry, I'm giving the talk so I'll be moving all through it.&lt;br /&gt;&lt;br /&gt;- Fine.  Thanks.&lt;br /&gt;&lt;br /&gt;He sat down.  At that moment, I finally relaxed with the realization&lt;br /&gt;that nothing ugly was going to happen.&lt;br /&gt;&lt;br /&gt;And nothing did.  The talk went very well; I was pleased with the&lt;br /&gt;story I told, a technical explanation of how distributed applications&lt;br /&gt;are built in Plan 9 using its namespace operations (patent applied for).&lt;br /&gt;The protesters were surprised, I think, that my subject was interesting&lt;br /&gt;to them.  At one point they all applauded spontaneously when I described&lt;br /&gt;a feature of the system.  I also think they were surprised that the&lt;br /&gt;inventor of #4,555,755 was funny, theatrical, and clever.  At least&lt;br /&gt;half the questions (all technical) during and after the talk were from&lt;br /&gt;the protesters.  Stallman said nothing.&lt;br /&gt;&lt;br /&gt;Afterwards an LCS member said that, as a result of Stallman's ploy,&lt;br /&gt;my audience was about twice what it would have been.  The people&lt;br /&gt;he dragged in came for political reasons but ended up learning&lt;br /&gt;something.&lt;br /&gt;&lt;br /&gt;Here's what the League's newsletter said about the event:&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;    CAMBRIDGE, MA, November 18, 1991 -- Rob Pike, a software designer&lt;br /&gt;    from AT&amp;T Bell Labs, expected to deliver an ordinary seminar on&lt;br /&gt;    his latest research project.  Instead, he found a room filled&lt;br /&gt;    with programmers carrying signs to protest the consequences of&lt;br /&gt;    his previous project: the AT&amp;T "backing store" patent which AT&amp;T&lt;br /&gt;    has used to threaten all the members of the X Consortium,&lt;br /&gt;    including MIT itself.&lt;br /&gt;       Of the approximately 80 people present at the talk, about 50&lt;br /&gt;    carried protest signs.  The protestors (sic) did not try to interfere&lt;br /&gt;    with the seminar.  They simply raised their signs as Pike began&lt;br /&gt;    to speak.  This accomplished the purpose of making their ire known.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;I accomplished my purpose of delivering a ``seminar on [my] latest&lt;br /&gt;research project.''  Other than being a good talk, it was also,&lt;br /&gt;in the end, pretty ordinary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6983287-108698514063518428?l=commandcenter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://commandcenter.blogspot.com/feeds/108698514063518428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6983287&amp;postID=108698514063518428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/108698514063518428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/108698514063518428'/><link rel='alternate' type='text/html' href='http://commandcenter.blogspot.com/2006/06/i-cant-find-this-on-web-so-here.html' title=''/><author><name>rob</name><uri>http://www.blogger.com/profile/18259238879445421354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.herpolhode.com/rob/doodles/june062002-1thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6983287.post-141117858140610254</id><published>2006-04-09T13:48:00.000-07:00</published><updated>2007-04-29T13:53:49.778-07:00</updated><title type='text'>A perfect moment</title><content type='html'>Yesterday afternoon was just the right sort of weather for sitting in the park, so towards sunset Renee and I headed down to the little park below us, which has a view across the water and a lovely, long fish pond with a stone bridge across it.  The plan was to sit on a bench and watch the light fade, sunset itself being hidden by the hills behind.&lt;br /&gt;&lt;br /&gt;Our plan stumbled when we discovered a wedding in progress on the half of the park with the best benches, and then there were sprinkles of rain.  We sat on a stone bench by the bridge, sheltered by some trees overhead, and waited for the shower to pass.  The violin players in the wedding didn't seem to mind much; they stayed out even as it sprinkled. But the shower soon passed and we moved to a bench at the other end of the park, away from the wedding but still with musical accompaniment. From there, we could look out across the grass and pond and towards the water.  The park is small, the pond just a few paces in front of us.&lt;br /&gt;&lt;br /&gt;There were five ibises wandering on the grass by the verge of the pond, poking their long beaks into the grass to find worms, plus a couple of gulls and pigeons lolling about.&lt;br /&gt;&lt;br /&gt;Sunset started to get more colorful; the clouds started to go pink and the buildings in the distance, by the harbor, illuminated by the setting sun, glowed a rich orange.&lt;br /&gt;&lt;br /&gt;Here, then, is the scene: in front of us, grass with ibises and other birds, then a babbling pond with koi, a few flowers and bushes, then the harbor with boats.  Towards the right, a stone bridge over the pond, the wedding party, and glowing buildings.  In the sky above, pink puffy clouds against a blue sky and above that, a quarter moon. Through all of this, the violins played gentle music.&lt;br /&gt;&lt;br /&gt;The sunset strengthened, the colors deepened.&lt;br /&gt;&lt;br /&gt;The ibises moved to the right and formed a little pack of five. From the left came a couple of folks with three beagles straining at their leashes.  They pulled towards the ibises, who stared back at them. All froze. These two groups framed the grass, then above them, pond and bushes and boats and water and sky and pink clouds and then a rainbow popped out just below the moon, arcing like an ibis's beak from left, above the beagles, over to the right, towards the orange buildings and the wedding party, whose music continued to accompany this magic scene, a painting in real life, a Victorian tableau, a perfect moment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6983287-141117858140610254?l=commandcenter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/141117858140610254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/141117858140610254'/><link rel='alternate' type='text/html' href='http://commandcenter.blogspot.com/2006/04/perfect-moment.html' title='A perfect moment'/><author><name>rob</name><uri>http://www.blogger.com/profile/18259238879445421354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.herpolhode.com/rob/doodles/june062002-1thumb.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6983287.post-108667834133594497</id><published>2004-06-08T00:02:00.000-07:00</published><updated>2004-06-08T00:07:02.910-07:00</updated><title type='text'>news</title><content type='html'>Ronald Reagan is still dead.&lt;br /&gt;&lt;br /&gt;I suppose it's obvious - legacy and all that - but really I don't see why the death of someone is worth much news. A mention yes but all this?  Plus, in this case, it's someone who had disappeared from public view a decade ago.  He already had things named after him in every state (that's the goal, anyway); all they need to do is add 'memorial' and it's done.&lt;br /&gt;&lt;br /&gt;I will stop before getting political.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6983287-108667834133594497?l=commandcenter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://commandcenter.blogspot.com/feeds/108667834133594497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6983287&amp;postID=108667834133594497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/108667834133594497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/108667834133594497'/><link rel='alternate' type='text/html' href='http://commandcenter.blogspot.com/2004/06/news.html' title='news'/><author><name>rob</name><uri>http://www.blogger.com/profile/18259238879445421354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.herpolhode.com/rob/doodles/june062002-1thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6983287.post-108448452581930334</id><published>2004-05-13T14:41:00.000-07:00</published><updated>2004-05-13T14:42:05.820-07:00</updated><title type='text'>Hello</title><content type='html'>World.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6983287-108448452581930334?l=commandcenter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://commandcenter.blogspot.com/feeds/108448452581930334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6983287&amp;postID=108448452581930334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/108448452581930334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6983287/posts/default/108448452581930334'/><link rel='alternate' type='text/html' href='http://commandcenter.blogspot.com/2004/05/hello.html' title='Hello'/><author><name>rob</name><uri>http://www.blogger.com/profile/18259238879445421354</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://www.herpolhode.com/rob/doodles/june062002-1thumb.jpg'/></author><thr:total>0</thr:total></entry></feed>
