toolkit/components/feeds/test/xml/rfc4287/feed_title_full_feed.xml

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

michael@0 1 <?xml version='1.0' encoding='UTF-8'?>
michael@0 2 <!--
michael@0 3 Description: Feed title works with full entry
michael@0 4 Expect: feed.title.text == 'ongoing'
michael@0 5 -->
michael@0 6 <feed xmlns='http://www.w3.org/2005/Atom'
michael@0 7 xml:base='http://www.tbray.org/ongoing/ongoing.atom'
michael@0 8 xml:lang='en-us'>
michael@0 9 <title>ongoing</title>
michael@0 10 <id>http://www.tbray.org/ongoing/</id>
michael@0 11 <link href='./' />
michael@0 12 <link rel='self' href='' />
michael@0 13 <logo>rsslogo.jpg</logo>
michael@0 14 <icon>/favicon.ico</icon>
michael@0 15 <updated>2006-04-26T20:10:25-08:00</updated>
michael@0 16 <author><name>Tim Bray</name></author>
michael@0 17 <subtitle>ongoing fragmented essay by Tim Bray</subtitle>
michael@0 18 <rights>All content written by Tim Bray and photos by Tim Bray Copyright Tim Bray, some rights reserved, see /ongoing/misc/Copyright</rights>
michael@0 19 <generator uri='/misc/Colophon'>Generated from XML source code using Perl, Expat, XML::Parser, Emacs, Mysql, and ImageMagick. Industrial strength technology, baby.</generator>
michael@0 20
michael@0 21 <entry xml:base='When/200x/2006/04/26/'>
michael@0 22 <title>Spring in White on White</title>
michael@0 23 <link href='Spring-in-White-on-White' />
michael@0 24 <id>http://www.tbray.org/ongoing/When/200x/2006/04/26/Spring-in-White-on-White</id>
michael@0 25 <published>2006-04-26T13:00:00-08:00</published>
michael@0 26 <updated>2006-04-26T20:10:16-08:00</updated>
michael@0 27 <category scheme='http://www.tbray.org/ongoing/What/' term='Arts/Photos' />
michael@0 28 <category scheme='http://www.tbray.org/ongoing/What/' term='Arts' />
michael@0 29 <category scheme='http://www.tbray.org/ongoing/What/' term='Photos' />
michael@0 30 <category scheme='http://www.tbray.org/ongoing/What/' term='Garden' />
michael@0 31 <category scheme='http://www.tbray.org/ongoing/What/' term='Garden' />
michael@0 32 <summary type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>Most people would generally prefer a climate where it&#x2019;s bright and warm most of the time. But for Canadians and others who live where it&#x2019;s not, there are compensations, and one is the experience of spring. I have a picture.</div></summary>
michael@0 33 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 34 <p>Most people would generally prefer a climate where it’s bright
michael@0 35 and warm most of the time. But for Canadians and others who live where it’s
michael@0 36 not, there are compensations, and one is the experience of
michael@0 37 spring. I have a picture.</p>
michael@0 38 <img src="IMGP3247.png" alt="Pear blossoms against cherry blossoms" />
michael@0 39 <div class="caption"><p>The blossoms are pear in the foreground, cherry behind.</p></div>
michael@0 40 <p>After all the months of 50° North Latitude winter—icy-sharp in most
michael@0 41 of Canada, wet and dark here in Vancouver—the soul, the spirit, and the
michael@0 42 libido all spring to life when the sun comes back. We’ve had a solid year of
michael@0 43 crappy weather, but this last Saturday through Monday were solidly summery,
michael@0 44 bright
michael@0 45 and warm; and in this season the days are already long and each gets
michael@0 46 longer so fast you can feel it.</p>
michael@0 47 <p>On the back porch, our pear tree’s branches were silhouetted against the
michael@0 48 neighbors’ big wild old cherry; the cherry yields no edible fruit but who
michael@0 49 cares, it’s beautiful
michael@0 50 tree any time of year.</p>
michael@0 51 </div></content></entry>
michael@0 52
michael@0 53 <entry xml:base='When/200x/2006/04/26/'>
michael@0 54 <title>Scott</title>
michael@0 55 <link href='Scott' />
michael@0 56 <id>http://www.tbray.org/ongoing/When/200x/2006/04/26/Scott</id>
michael@0 57 <published>2006-04-26T13:00:00-08:00</published>
michael@0 58 <updated>2006-04-26T20:06:50-08:00</updated>
michael@0 59 <category scheme='http://www.tbray.org/ongoing/What/' term='Business/Sun' />
michael@0 60 <category scheme='http://www.tbray.org/ongoing/What/' term='Business' />
michael@0 61 <category scheme='http://www.tbray.org/ongoing/What/' term='Sun' />
michael@0 62 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 63 <p>I’ve been watching our internal leadership conference and spending quite a
michael@0 64 bit of time talking in the virtual hallways, and I’ve been surprised at
michael@0 65 the intensity of feeling about Mr. McNealy. Yes, there are those
michael@0 66 here saying “About bloody time, now we can make some progress” but there’s a
michael@0 67 much bigger group that is genuinely emotional about this transition.
michael@0 68 Maybe it’s a function of seniority: I never met nor corresponded with Scott, and
michael@0 69 he hasn’t been
michael@0 70 much of a presence in the company’s conversation in the time I’ve been here.
michael@0 71 But there are a lot of smart, seasoned, unsentimental people making it clear
michael@0 72 that
michael@0 73 he’s been a major force in their lives, at a more personal level than I’m
michael@0 74 used to hearing when people speak about executives. I guess also that to a
michael@0 75 lot of people, Sun’s vision, for which Scott gets some of the credit, was a
michael@0 76 radical and wonderful thing. I first used Unix in 1979 and quit a nice
michael@0 77 big-company job
michael@0 78 to become a VAX-bsd sysadmin in 1983, so I’ve always kind of
michael@0 79 lived inside that vision.
michael@0 80 But I’ll tell you one thing, what I’ve been hearing the last couple of days
michael@0 81 makes me really regret that I didn’t get to know Scott.</p>
michael@0 82 </div></content></entry>
michael@0 83
michael@0 84 <entry xml:base='When/200x/2006/04/26/'>
michael@0 85 <title>Jacobs, Pictures, Spartans</title>
michael@0 86 <link href='Jane-Jacobs' />
michael@0 87 <id>http://www.tbray.org/ongoing/When/200x/2006/04/26/Jane-Jacobs</id>
michael@0 88 <published>2006-04-26T13:00:00-08:00</published>
michael@0 89 <updated>2006-04-26T17:28:59-08:00</updated>
michael@0 90 <category scheme='http://www.tbray.org/ongoing/What/' term='The World' />
michael@0 91 <category scheme='http://www.tbray.org/ongoing/What/' term='The World' />
michael@0 92 <category scheme='http://www.tbray.org/ongoing/What/' term='Arts/Photos' />
michael@0 93 <category scheme='http://www.tbray.org/ongoing/What/' term='Arts' />
michael@0 94 <category scheme='http://www.tbray.org/ongoing/What/' term='Photos' />
michael@0 95 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 96 <p><a href="http://en.wikipedia.org/wiki/Jane_Jacobs">Jane Jacobs</a> died;
michael@0 97 the city I live in, Vancouver, is pretty solidly Jacobsian both in its current
michael@0 98 shape and its planning dogma. By choosing to live here I’m empirically a
michael@0 99 fan. Oddly, few have remarked how great Jacobs
michael@0 100 <em>looked</em>; her face commanded the eye. Which leads me Alex
michael@0 101 Waterhouse-Hayward’s wonderful
michael@0 102 <a href="http://www.alexwaterhousehayward.com/blog/2006/04/jane-jacobs-viveca-lindfors_26.html">Jane Jacobs &amp; Viveca Lindfors</a>;
michael@0 103 surprising portraits and thoughts on decoration. W-H’s blog has become one of
michael@0 104 only two or three that I
michael@0 105 stab at excitedly whenever I see something new. For example, see
michael@0 106 <a href="http://www.alexwaterhousehayward.com/blog/archives/2006_04_01_archive.html#114476408248660848">Sex Crimes, Homicide and Drugs</a>
michael@0 107 and yes, that’s what it’s about.
michael@0 108 Staying with the death-and-betrayal theme, and apparently (but not really)
michael@0 109 shifting back 2&#xbd; millennia, see John Cowan’s
michael@0 110 <a href="http://recycledknowledge.blogspot.com/2006/04/war-after-simonides.html">The
michael@0 111 War (after Simonides)</a>, being careful to look closely at the links.
michael@0 112 I’ve
michael@0 113 <a href="http://www.tbray.org/ongoing/When/200x/2003/03/24/Herodotus">written</a>
michael@0 114 about those same wars.</p>
michael@0 115 </div></content></entry>
michael@0 116
michael@0 117 <entry xml:base='When/200x/2006/04/25/'>
michael@0 118 <title>LAMP and MARS</title>
michael@0 119 <link href='Scaling-Rails' />
michael@0 120 <id>http://www.tbray.org/ongoing/When/200x/2006/04/25/Scaling-Rails</id>
michael@0 121 <published>2006-04-25T13:00:00-08:00</published>
michael@0 122 <updated>2006-04-26T07:24:06-08:00</updated>
michael@0 123 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Web' />
michael@0 124 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology' />
michael@0 125 <category scheme='http://www.tbray.org/ongoing/What/' term='Web' />
michael@0 126 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Sun' />
michael@0 127 <category scheme='http://www.tbray.org/ongoing/What/' term='Sun' />
michael@0 128 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 129 <p>At
michael@0 130 <a href="/ongoing/When/200x/2006/04/13/RoR">that Rails conference</a>, when I
michael@0 131 was
michael@0 132 <a href="http://blog.garbledygook.com/2006/04/17/ruby-on-rails-podcast-tim-bray-ruby-on-rails-podcast/">talking</a>
michael@0 133 to
michael@0 134 <a href="http://jroller.com/page/obie">Obie Fernandez</a>, he asked, more or
michael@0 135 less “How can Sun love us? We’re not Java” and I said, more or less, “Hey,
michael@0 136 you’re programmers, you write software and there have to be computers to run
michael@0 137 it, we sell computers, why wouldn’t we love you?” Anyhow, we touched on
michael@0 138 parallelism a bit and I talked up the
michael@0 139 <a href="http://www.sun.com/processors/UltraSPARC-T1/">T1</a>;
michael@0 140 Obie took that ball and
michael@0 141 <a href="http://jroller.com/page/obie?entry=will_ultrasparc_t1_emerge_as">ran with it</a>,
michael@0 142 saying all sorts of positive things about synergy between Rails’
michael@0 143 shared-nothing architecture and our multicore systems. Yeah, well, good in
michael@0 144 theory, but I’m too old to make that kind of prediction without running some
michael@0 145 tests. Hah, it turns out that
michael@0 146 <a href="http://joyent.com/">Joyent</a> has been
michael@0 147 <a href="http://scalewithrails.com/">doing that</a>, and have
michael@0 148 <a href="http://scalewithrails.com/downloads/ScaleWithRails-April2006.pdf">76
michael@0 149 PDF slides</a> on the subject.
michael@0 150 If you care about big-system scaling issues, read the whole thing; a little
michael@0 151 long, but amusing and with hardly any bullet lists. If you’re a Sun
michael@0 152 shareholder looking for a pick-me up, check out slides 40-41, 49, and 52-74.
michael@0 153 Oh, I gather that the T1, Solaris, and ZFS are OK for Java too.
michael@0 154 <i>[Update: The title was just “SAMR”, as in LAMP with two new letters.
michael@0 155 Enough people didn’t get it that I was forced to think about it, and MARS
michael@0 156 works better anyhow.]</i></p>
michael@0 157 </div></content></entry>
michael@0 158
michael@0 159 <entry xml:base='When/200x/2006/04/25/'>
michael@0 160 <title>Real-Time Journalism</title>
michael@0 161 <link href='Talk-With-Berlind' />
michael@0 162 <id>http://www.tbray.org/ongoing/When/200x/2006/04/25/Talk-With-Berlind</id>
michael@0 163 <published>2006-04-25T13:00:00-08:00</published>
michael@0 164 <updated>2006-04-26T06:40:19-08:00</updated>
michael@0 165 <category scheme='http://www.tbray.org/ongoing/What/' term='The World/Journalism' />
michael@0 166 <category scheme='http://www.tbray.org/ongoing/What/' term='The World' />
michael@0 167 <category scheme='http://www.tbray.org/ongoing/What/' term='Journalism' />
michael@0 168 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Syndication' />
michael@0 169 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology' />
michael@0 170 <category scheme='http://www.tbray.org/ongoing/What/' term='Syndication' />
michael@0 171 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 172 <p>I got email late yesterday from
michael@0 173 <a href="http://blogs.zdnet.com/bio.php#berlind">David Berlind</a>: “Hey, can
michael@0 174 I call you for a minute?” He wanted commentary on
michael@0 175 <a href="http://blogs.zdnet.com/BTL/?p=2906">a story he was writing</a> that I
michael@0 176 think is about the potential for intellectual-property lock-ins on RSS and Atom
michael@0 177 extensions. I say “I think is about” because the headline is “Will or could
michael@0 178 RSS get forked?”. After a few minutes’ chat, David asked if he could record
michael@0 179 for a podcast, and even though I only had a cellphone, the audio came out OK.
michael@0 180 The conversation was rhythmic: David brought up a succession of potential
michael@0 181 issues and answered each along the lines of “Yes, it’s reasonable to worry
michael@0 182 about that, but in this
michael@0 183 case I don’t see any particular problems.”
michael@0 184 Plus I emitted a mercifully-brief rant on the difference between protocols,
michael@0 185 data, and software.
michael@0 186 On the one hand, I thought David could have been a
michael@0 187 little clearer that I was pushing back against the thrust of his story, but on
michael@0 188 the other hand he included the whole conversation right
michael@0 189 there in the piece, so anyone who actually cares can listen and find out what
michael@0 190 I actually said, not what I think I said nor what David reported I said.
michael@0 191 I find this raw barely-intermediated journalism (we
michael@0 192 talk on the phone this afternoon, it’s on the Web in hours) a little
michael@0 193 shocking still.
michael@0 194 On balance, it’s better than the way we used to do things.</p>
michael@0 195 </div></content></entry>
michael@0 196
michael@0 197 <entry xml:base='When/200x/2006/04/24/'>
michael@0 198 <title>The Transition Explained</title>
michael@0 199 <link href='CEO-Transition' />
michael@0 200 <id>http://www.tbray.org/ongoing/When/200x/2006/04/24/CEO-Transition</id>
michael@0 201 <published>2006-04-24T13:00:00-08:00</published>
michael@0 202 <updated>2006-04-24T16:49:05-08:00</updated>
michael@0 203 <category scheme='http://www.tbray.org/ongoing/What/' term='Business/Sun' />
michael@0 204 <category scheme='http://www.tbray.org/ongoing/What/' term='Business' />
michael@0 205 <category scheme='http://www.tbray.org/ongoing/What/' term='Sun' />
michael@0 206 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 207 <p>It’s not that complicated, really.
michael@0 208 Bloggers are
michael@0 209 <a href="http://www.sun.com/2006-0418/js/index.jsp">taking over the world</a>.
michael@0 210 Resistance is futile; you will be assimilated.</p>
michael@0 211 </div></content></entry>
michael@0 212
michael@0 213 <entry xml:base='When/200x/2006/04/24/'>
michael@0 214 <title>5&#x272d;&#x266b;: One More Cup of Coffee</title>
michael@0 215 <link href='One-More-Cup-Of-Coffee' />
michael@0 216 <id>http://www.tbray.org/ongoing/When/200x/2006/04/24/One-More-Cup-Of-Coffee</id>
michael@0 217 <published>2006-04-24T13:00:00-08:00</published>
michael@0 218 <updated>2006-04-24T13:00:00-08:00</updated>
michael@0 219 <category scheme='http://www.tbray.org/ongoing/What/' term='Arts/Music/Recordings' />
michael@0 220 <category scheme='http://www.tbray.org/ongoing/What/' term='Arts' />
michael@0 221 <category scheme='http://www.tbray.org/ongoing/What/' term='Music' />
michael@0 222 <category scheme='http://www.tbray.org/ongoing/What/' term='Recordings' />
michael@0 223 <category scheme='http://www.tbray.org/ongoing/What/' term='Arts/Music/5 Stars' />
michael@0 224 <category scheme='http://www.tbray.org/ongoing/What/' term='5 Stars' />
michael@0 225 <summary type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>I&#x2019;m not really a <a href='http://en.wikipedia.org/wiki/Bob_Dylan'>Bob Dylan</a> fan. A voice like that, and a tunesmithing talent like that, come along only a few times per century, but he&#x2019;s still kind of irritating. That aside, the song <cite>One More Cup of Coffee</cite>, from the 1976 album <a href='http://en.wikipedia.org/wiki/Desire_%28album%29'>Desire</a>, can&#x2019;t be ignored; wonderful tune, wonderful orchestration, wonderful performance. <i>(&#x201c;5&#x272d;&#x266b;&#x201d; series introduction <a href='/ongoing/When/200x/2006/01/23/5-Star-Music'>here</a>; with <a href='/ongoing/When/200x/2006/01/23/5-Star-Music#p-1'>an explanation</a> of why the title may look broken.)</i></div></summary>
michael@0 226 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 227 <p>I’m not really a
michael@0 228 <a href="http://en.wikipedia.org/wiki/Bob_Dylan">Bob Dylan</a> fan. A voice
michael@0 229 like that, and a tunesmithing talent like that, come along only a few times
michael@0 230 per century, but he’s still kind of irritating.
michael@0 231 That aside, the song <cite>One More Cup of Coffee</cite>, from the 1976 album
michael@0 232 <a href="http://en.wikipedia.org/wiki/Desire_%28album%29">Desire</a>, can’t be
michael@0 233 ignored; wonderful tune, wonderful orchestration, wonderful performance.
michael@0 234 <i>(“5✭♫” series introduction <a href="/ongoing/When/200x/2006/01/23/5-Star-Music">here</a>;
michael@0 235 with <a href="/ongoing/When/200x/2006/01/23/5-Star-Music#p-1">an
michael@0 236 explanation</a> of why the title may look broken.)</i></p>
michael@0 237 <img src="Desire.png" class="inline" alt="Desire, by Bob Dylan" />
michael@0 238 <h2 id='p-1'>The Context</h2>
michael@0 239 <p>Nothing I can possibly write will add any wisdom to the
michael@0 240 millions of words, some 90% of them in excess of needs, written on the subject
michael@0 241 of this particular person.</p>
michael@0 242 <p>A personal statement: Bob Dylan has long irritated me for, during the first
michael@0 243 thirty years or
michael@0 244 so of his career, never having given a straight answer to a straight question,
michael@0 245 and for writing songs with dozens of boring verses. But they’ll still be
michael@0 246 listening
michael@0 247 to lots of his performances long after I’m dead, and in recent years he’s
michael@0 248 become a better, more direct, interview.</p>
michael@0 249 <p>My taste in Dylan is a little unusual: once you get past <cite>One More Cup
michael@0 250 of Coffee</cite>, my favorites would be <cite>Baby Let Me Follow You
michael@0 251 Down</cite> (from the <cite>Last Waltz</cite> soundtrack) and
michael@0 252 <cite>Crash on the Levee (Down in the Flood)</cite> from
michael@0 253 <a href="http://en.wikipedia.org/wiki/The_Basement_Tapes">The Basement
michael@0 254 Tapes</a>.</p>
michael@0 255 <p><cite>Desire</cite>, the record, is hit and miss. <cite>Joey</cite>,
michael@0 256 glorification of the life of some mafioso, is flawed in concept
michael@0 257 and unlistenable in execution. <cite>Hurricane</cite>, whatever you think
michael@0 258 about
michael@0 259 <a href="http://en.wikipedia.org/wiki/Rubin_Carter">Mr. Carter</a>, that song
michael@0 260 rocks; and <cite>Isis</cite> hits pretty hard too.</p>
michael@0 261 <h2 id='p-2'>The Music</h2>
michael@0 262 <p>Is there anything in <cite>One More Cup of Coffee</cite> that’s not
michael@0 263 perfect? Well yes, in the verses, the
michael@0 264 lyrics on occasion drag (“He oversees his kingdom / So no stranger does
michael@0 265 intrude / His voice it trembles as he calls out / For another plate of food”).
michael@0 266 But apart from that, the sentiment is compelling,
michael@0 267 <a href="http://en.wikipedia.org/wiki/Scarlet_Rivera">Scarlet Rivera’s</a>
michael@0 268 violin is beautifully scored and played, the tune is to die for, and the
michael@0 269 backing vocals are by Emmylou Harris, who you can bet is going to be here in
michael@0 270 the 5-✭ series one of these days.
michael@0 271 And while there’s not much middle ground on the subject of Dylan’s singing, if
michael@0 272 you like it, you’ll <em>really</em> like this song.</p>
michael@0 273 <p>Listen to the choruses: Bob and Emmylou veer wildly around the rhythm, then
michael@0 274 coalesce on the beat when it matters, and they’re making it
michael@0 275 up as they go along, they’re wholly inhabiting the moment, and it’s
michael@0 276 quite, quite perfect.</p>
michael@0 277 <h2 id='p-3'>Sampling It</h2>
michael@0 278 <p>Oh yeah, it’s out there. And there’s a live version too; but the smart
michael@0 279 thing would be to go buy the un-compressed un-DRM’ed shiny round silver
michael@0 280 version of <cite>Desire</cite>; it’s a keeper.</p>
michael@0 281 </div></content></entry>
michael@0 282
michael@0 283 <entry xml:base='When/200x/2006/04/24/'>
michael@0 284 <title>Atomic Monday</title>
michael@0 285 <link href='Atomic-Monday' />
michael@0 286 <id>http://www.tbray.org/ongoing/When/200x/2006/04/24/Atomic-Monday</id>
michael@0 287 <published>2006-04-24T13:00:00-08:00</published>
michael@0 288 <updated>2006-04-24T00:44:06-08:00</updated>
michael@0 289 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Syndication' />
michael@0 290 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology' />
michael@0 291 <category scheme='http://www.tbray.org/ongoing/What/' term='Syndication' />
michael@0 292 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Atom' />
michael@0 293 <category scheme='http://www.tbray.org/ongoing/What/' term='Atom' />
michael@0 294 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 295 <p>First of all, implementors of anything Atom-related need to spend some time
michael@0 296 <a href="http://golem.ph.utexas.edu/~distler/blog/archives/000793.html">chez
michael@0 297 Jacques Distler</a>; in particular, the conversation that plays out in the
michael@0 298 comments. Second, there’s this piece of software called
michael@0 299 <a href="http://www.planetplanet.org/">Planet Planet</a> that allows you to
michael@0 300 make an aggregate web page by reading lots of feeds; for example, see
michael@0 301 <a href="http://www.planetapache.org/">Planet Apache</a> or
michael@0 302 <a href="http://planetsun.org/">Planet Sun</a>.
michael@0 303 Sam Ruby decided that its Atom support needed some work, so
michael@0 304 <a href="http://www.intertwingly.net/blog/2006/04/23/Adding-Atom-support-to-PlanetPlanet">he did
michael@0 305 it</a>. Now, here’s the exciting part: he pinged me over the weekend and said
michael@0 306 “Hey, look at this” wanting to show me his cleverly-Atomized
michael@0 307 Planet Intertwingly feed.
michael@0 308 I looked at it in
michael@0 309 <a href="http://ranchero.com/netnewswire/">NetNewsWire</a> and was puzzled for
michael@0 310 a moment; some but not all of the
michael@0 311 things in the feed were highlighted as unread, even though this was the first
michael@0 312 time I’d seen it. Then the light went on.
michael@0 313 This
michael@0 314 is Atom doing <em>exactly what we went to all that trouble to make it do</em>.
michael@0 315 NetNewsWire has good Atom support and, because Atom entries all have unique
michael@0 316 IDs and timestamps, it can
michael@0 317 tell that it’s seen lots of those entries before in other feeds that I
michael@0 318 subscribe to. That’s how I found Jacques’ piece. This is huge; anyone who
michael@0 319 uses synthetic or aggregated feeds knows that dupes are a big problem, showing
michael@0 320 up all over the place.
michael@0 321 No longer, Atom makes that problem go away.</p>
michael@0 322 </div></content></entry>
michael@0 323
michael@0 324 <entry xml:base='When/200x/2006/04/22/'>
michael@0 325 <title>Hyatt on the High-Res Web</title>
michael@0 326 <link href='High-Res-Web' />
michael@0 327 <id>http://www.tbray.org/ongoing/When/200x/2006/04/22/High-Res-Web</id>
michael@0 328 <published>2006-04-22T13:00:00-08:00</published>
michael@0 329 <updated>2006-04-23T17:12:18-08:00</updated>
michael@0 330 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Web' />
michael@0 331 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology' />
michael@0 332 <category scheme='http://www.tbray.org/ongoing/What/' term='Web' />
michael@0 333 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Presentation' />
michael@0 334 <category scheme='http://www.tbray.org/ongoing/What/' term='Presentation' />
michael@0 335 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 336 <p>Check out Dave Hyatt’s
michael@0 337 <a href="http://webkit.opendarwin.org/blog/?p=55">excellent write-up</a> on
michael@0 338 designing and rendering Web pages so they take advantage of the
michael@0 339 higher-resolution screens that <em>may</em> be coming our way.
michael@0 340 I emphasize “may” because I’ve seen how slowly we’ve picked up pixels over
michael@0 341 the years. The first really substantial screen I ever worked on was a
michael@0 342 1988-vintage Sun workstation with about a million pixels. The Mac on my
michael@0 343 lap right now, which has 125 times as much memory as that workstation, has
michael@0 344 only 1.38 million pixels.
michael@0 345 Anyhow, Hyatt has some smart things to say on the issues,
michael@0 346 which are trickier than you might think. I suspect that sometime in a couple of
michael@0 347 years, if I still care about <span class='o'>ongoing</span>, I’m going to
michael@0 348 have to go back and reprocess all the images so that higher-res versions are
michael@0 349 available for those who have the screens and don’t mind downloading bigger
michael@0 350 files.
michael@0 351 Anyhow, Dave’s piece may be slightly misleading in that he talks about SVG
michael@0 352 as though
michael@0 353 it’s something coming in the future. Not so, check out
michael@0 354 <a href="http://zcorpan.1go.dk/sandbox/svg/atom/.xml">this nifty SVG Atom
michael@0 355 logo</a>, which works fine in all the Mozilla browsers I have here.
michael@0 356 Load it up, resize the window, and watch what happens. Then do a “view
michael@0 357 source”.
michael@0 358 <i>[Update:
michael@0 359 <a href="http://blog.codedread.com">Jeff Schiller</a> writes to tell me that
michael@0 360 Opera 9 does SVG (and Opera 8 “SVG Tiny”) too.]
michael@0 361 [<a href="http://www.freeke.org/ffg">Dave Walker</a> writes: Though the shipping version of Safari doesn’t support SVG,
michael@0 362 <a href="http://nightly.webkit.org/builds/Latest-WebKit-SVN.dmg">the
michael@0 363 nightlies</a> do.]
michael@0 364 [<a href="http://www.davelemen.com/archives/2006/04/is_it_time_for_jpeg_2000_to_go_mainstream.html">Dave Lemen</a>
michael@0 365 points to
michael@0 366 <a href="http://en.wikipedia.org/wiki/JPEG-2000">JPEG 2000</a> as possibly
michael@0 367 useful in a high-res context.]</i></p>
michael@0 368 </div></content></entry>
michael@0 369
michael@0 370 <entry xml:base='When/200x/2006/04/23/'>
michael@0 371 <title>Wrong About the Infield Fly Rule</title>
michael@0 372 <link href='Wrong-About-the-Infield-Fly-Rule' />
michael@0 373 <id>http://www.tbray.org/ongoing/When/200x/2006/04/23/Wrong-About-the-Infield-Fly-Rule</id>
michael@0 374 <published>2006-04-23T13:00:00-08:00</published>
michael@0 375 <updated>2006-04-23T15:02:41-08:00</updated>
michael@0 376 <category scheme='http://www.tbray.org/ongoing/What/' term='The World/Family' />
michael@0 377 <category scheme='http://www.tbray.org/ongoing/What/' term='The World' />
michael@0 378 <category scheme='http://www.tbray.org/ongoing/What/' term='Family' />
michael@0 379 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 380 <p>My brother
michael@0 381 <a href="http://takingalongview.blogspot.com/">Rob</a> is really taking to
michael@0 382 this blogging medium. Check out his recent
michael@0 383 <a href="http://takingalongview.blogspot.com/2006/04/credo.html">Credo</a>,
michael@0 384 and also the only instance I’ve seen of
michael@0 385 <a href="http://takingalongview.blogspot.com/2006/04/ode-to-96-chevy-lumina.html">Anglo-Saxon alliterative poetry</a>
michael@0 386 applied to a mini-van.</p>
michael@0 387 </div></content></entry>
michael@0 388
michael@0 389 <entry xml:base='When/200x/2004/12/12/'>
michael@0 390 <title>Statistics</title>
michael@0 391 <link href='BMS' />
michael@0 392 <id>http://www.tbray.org/ongoing/When/200x/2004/12/12/BMS</id>
michael@0 393 <published>2004-12-12T12:00:00-08:00</published>
michael@0 394 <updated>2006-04-23T10:10:02-08:00</updated>
michael@0 395 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Publishing' />
michael@0 396 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology' />
michael@0 397 <category scheme='http://www.tbray.org/ongoing/What/' term='Publishing' />
michael@0 398 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Web' />
michael@0 399 <category scheme='http://www.tbray.org/ongoing/What/' term='Web' />
michael@0 400 <summary type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>Almost every Sunday I grab the week&#x2019;s <span class="o">ongoing</span> logfiles and update my numbers. I find it interesting and maybe others will too, so this entry is now the charts&#x2019; permanent home. I&#x2019;ll update it most weeks, probably. <i>[Updated: 2006/04/23.]</i></div></summary>
michael@0 401 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 402 <p>Almost every Sunday I grab the week’s <span class='o'>ongoing</span>
michael@0 403 logfiles and update my numbers.
michael@0 404 I find it interesting
michael@0 405 and maybe others will too, so
michael@0 406 this entry is now the charts’ permanent home. I’ll update it most weeks,
michael@0 407 probably.
michael@0 408 <i>[Updated: 2006/04/23.]</i></p>
michael@0 409 <img src="Browser-Market-Share.png" alt="Browser market shares at ‘ongoing’" />
michael@0 410 <div class="caption"><p>Browsers visiting <span class='o'>ongoing</span>,
michael@0 411 percent.</p></div>
michael@0 412 <img src="Browsers-via-search.png" alt="Browser market shares at ‘ongoing’, visitors via search engines" />
michael@0 413 <div class="caption"><p>Browsers visiting <span class='o'>ongoing</span> via
michael@0 414 search engines, percent.</p></div>
michael@0 415 <img src="Search-Engines.png" alt="Search engine market shares at ‘ongoing’" />
michael@0 416 <div class="caption"><p>Search referrals to <span
michael@0 417 class='o'>ongoing</span> .</p></div>
michael@0 418 <img src="Feeds.png" alt="RSS and Atom feed fetches" />
michael@0 419 <div class="caption"><p>Fetches of the RSS 2.0 and Atom 1.0 feeds.</p></div>
michael@0 420 <p>The notes on usage and source code will return in coming weeks when I get
michael@0 421 the cycles to rewrite this whole article.</p>
michael@0 422 <h2 id='p-1'>What a “Hit” Means</h2>
michael@0 423 <p>I recently
michael@0 424 <a href="/ongoing/When/200x/2006/02/07/Thumbnail">updated</a> the
michael@0 425 <a href="/ongoing/misc/Colophon"><span class='o'>ongoing</span> software</a>
michael@0 426 (but haven’t updated the Colophon I see, oops).
michael@0 427 Anyhow, the <code>XMLHttpRequest</code> now issued by each page seems to be a
michael@0 428 pretty reliable counter of the number of actual browsers with humans behind
michael@0 429 them reading the pages. I checked against
michael@0 430 <a href="/ongoing/When/200x/2005/12/04/Google-Analytics">Google Analytics</a>
michael@0 431 and the numbers agreed to within a dozen or two on days with 5,000 to 10,000
michael@0 432 page views; interestingly, Google Analytics was always 10 or 20 views
michael@0 433 higher.</p>
michael@0 434 <p>Anyhow, do <em>not</em> conclude that now I know how many people are
michael@0 435 reading whatever it is I write here; because I publish lots of short pieces
michael@0 436 that are all there in my RSS feed, and anyone reading my Atom feed gets the
michael@0 437 full content of everything.
michael@0 438 I and I have <em>no #&amp;*!$ idea</em> how many people look at my feeds.</p>
michael@0 439 <p>By the way, this was the first time in weeks and weeks that I’d looked at the
michael@0 440 Analytics numbers, and they showed almost exactly zero change from the report
michael@0 441 linked above. So I’m going to turn them off; they’re a little too intrusive
michael@0 442 and I think may be slowing page loads.</p>
michael@0 443 <p>Anyhow, I ran some detailed statistics on the traffic for Wednesday,
michael@0 444 February 8th, 2006.</p>
michael@0 445 <table cellspacing="3" cellpadding="2" class="wltable">
michael@0 446 <tr valign="top"><td>Total connections to the server</td><td align="right">180,428</td></tr>
michael@0 447 <tr valign="top"><td>Total successful GET transactions</td><td align="right">155,507</td></tr>
michael@0 448 <tr valign="top"><td>Total fetches of the RSS and Atom feeds</td><td align="right">88,450</td></tr>
michael@0 449 <tr valign="top"><td>Total GET transactions that actually fetched data (i.e. status code
michael@0 450 200 as opposed to 304)</td><td align="right">87,271</td></tr>
michael@0 451 <tr valign="top"><td>Total GETs of actual ongoing pages (i.e. not CSS, js, or
michael@0 452 images)</td><td align="right">18,444</td></tr>
michael@0 453 <tr valign="top"><td>Actual human page-views</td><td align="right">6,348</td>
michael@0 454 </tr>
michael@0 455 </table>
michael@0 456 <p>So, there you have it. Doing a bit of rounding, if you take the 180K
michael@0 457 transactions and subtract the 90K feed fetches and the 6000 actual human page
michael@0 458 views, you’re left with 84,000 or so “Web overhead” transactions, mostly
michael@0 459 stylesheets and graphics and so on.
michael@0 460 For every human who viewed a page, it was fetched almost twice again by
michael@0 461 various kinds of robots and non-browser automated agents.</p>
michael@0 462 <p>It’s amazing that the whole thing works at all.</p>
michael@0 463 </div></content></entry>
michael@0 464
michael@0 465 <entry xml:base='When/200x/2006/04/18/'>
michael@0 466 <title>XML Automaton</title>
michael@0 467 <link href='XML-Grammar' />
michael@0 468 <id>http://www.tbray.org/ongoing/When/200x/2006/04/18/XML-Grammar</id>
michael@0 469 <published>2006-04-18T13:00:00-08:00</published>
michael@0 470 <updated>2006-04-23T08:25:56-08:00</updated>
michael@0 471 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/XML' />
michael@0 472 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology' />
michael@0 473 <category scheme='http://www.tbray.org/ongoing/What/' term='XML' />
michael@0 474 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Coding' />
michael@0 475 <category scheme='http://www.tbray.org/ongoing/What/' term='Coding' />
michael@0 476 <summary type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>In December of 1996 I released a piece of software called <a href='http://www.textuality.com/Lark/'>Lark</a>, which was the world&#x2019;s first <a href='http://www.w3.org/TR/REC-xml/#dt-xml-proc'>XML Processor</a> (as the term is defined in the <a href='http://www.w3.org/TR/REC-xml/'>XML Specification</a>). It was successful, but I stopped maintaining it in 1998 because lots of other smart people, and some big companies like Microsoft, were shipping perfectly good processors. I never <em>quite</em> open-sourced it, holding back one clever bit in the moronic idea that I could make money out of Lark somehow. The magic sauce is a finite state machine that can be used to parse XML 1.0. Recently, someone out there needed one of those, so I thought I&#x2019;d publish it, with some commentary on Lark&#x2019;s construction and an amusing anecdote about the name. I doubt there are more than twelve people on the planet who care about this kind of parsing arcana. <i>[Rick Jelliffe <a href='http://www.oreillynet.com/xml/blog/2006/04/xml_in_xml.html'>has upgraded</a> the machine].</i></div></summary>
michael@0 477 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 478 <p>In December of 1996 I released a piece of software called
michael@0 479 <a href="http://www.textuality.com/Lark/">Lark</a>, which was
michael@0 480 the world’s first
michael@0 481 <a href="http://www.w3.org/TR/REC-xml/#dt-xml-proc">XML Processor</a> (as the
michael@0 482 term is defined in the
michael@0 483 <a href="http://www.w3.org/TR/REC-xml/">XML Specification</a>).
michael@0 484 It was successful, but I stopped maintaining it in 1998 because lots of other
michael@0 485 smart people, and some big companies like Microsoft, were shipping perfectly
michael@0 486 good processors. I never <em>quite</em> open-sourced it, holding back one
michael@0 487 clever bit in the moronic idea that I could make money out of Lark somehow.
michael@0 488 The magic sauce is a finite state machine that can be used to parse XML 1.0.
michael@0 489 Recently, someone out there needed one of those, so I thought I’d publish
michael@0 490 it, with some commentary on Lark’s construction and an amusing anecdote about
michael@0 491 the name.
michael@0 492 I doubt there are more than twelve people on the planet who care about
michael@0 493 this kind of parsing arcana.
michael@0 494 <i>[Rick Jelliffe
michael@0 495 <a href="http://www.oreillynet.com/xml/blog/2006/04/xml_in_xml.html">has
michael@0 496 upgraded</a> the machine].</i></p>
michael@0 497 <h2 id='p-1'>Why “Lark”?</h2>
michael@0 498 <p><a href="http://www.laurenwood.org/anyway/">Lauren</a> and I went to
michael@0 499 Australia in late 1996 to visit her mother and to get married, which we
michael@0 500 did on November 30th. Forty-eight hours later, Lauren twisted her knee
michael@0 501 badly enough that she was pretty well
michael@0 502 confined to a sofa for the rest of our Australian vacation.</p>
michael@0 503 <p>So I broke out my computer and finished the work I’d already started on my
michael@0 504 XML processor, and decided to call it Lark for <b>La</b>uren’s <b>R</b>ight
michael@0 505 <b>K</b>nee.</p>
michael@0 506 <h2 id='p-2'>How Lark Worked</h2>
michael@0 507 <p>Lark was a pure
michael@0 508 <a href="http://en.wikipedia.org/wiki/Deterministic_finite_state_machine">deterministic
michael@0 509 finite automaton</a> (DFA)
michael@0 510 parser, with a little teeny state stack.
michael@0 511 Some of its transitions were labeled with named “events” that would provoke
michael@0 512 the parser to do something if, for example, it had just recognized a start tag
michael@0 513 or whatever.</p>
michael@0 514 <p>DFA-driven parsers are a common enough design pattern, although I think
michael@0 515 Lark is the only example in the XML space.
michael@0 516 There are well-known parser generators such as
michael@0 517 <a href="http://en.wikipedia.org/wiki/Yacc">yacc</a>,
michael@0 518 <a href="http://en.wikipedia.org/wiki/GNU_bison">GNU bison</a>, and
michael@0 519 <a href="https://javacc.dev.java.net/">javacc</a>,
michael@0 520 usually used in combination with lexical scanners such as
michael@0 521 <a href="http://en.wikipedia.org/wiki/Flex_lexical_analyser">flex</a> so that
michael@0 522 you can write your grammar in terms of tokens not characters.
michael@0 523 Also, they handle LALR langauges, so the parsing technique is quite a bit
michael@0 524 richer than a pure state machine.</p>
michael@0 525 <p>I thought I had a better idea. The grammar of XML is simple
michael@0 526 enough, and the syntax characters few enough, that I thought I could just
michael@0 527 write down the state machine by hand.
michael@0 528 So that’s what I did, inventing a special-purpose DFA-description
michael@0 529 language for the purpose.</p>
michael@0 530 <p>Then I had a file called <code>Lark.jin</code> which was really a Java
michael@0 531 program that used the state machine to parse XML. The transition “events”
michael@0 532 in the machine were mapped to <code>case</code> labels in a huge
michael@0 533 <code>switch</code> construct. Then there was a horrible, <em>horrible</em>
michael@0 534 Perl program that read the <code>Lark.jin</code> and the automaton,
michael@0 535 generated the DFA tables in Java syntax, inserted them into the code and
michael@0 536 produced <code>Lark.java</code>, which you actually compiled
michael@0 537 to make the parser.</p>
michael@0 538 <p>So while Java doesn’t have a preprocessor, Lark did, which made quite a few
michael@0 539 things easier.</p>
michael@0 540 <p>There were a lot of tricks; some of the state transitions
michael@0 541 weren’t on characters, they were on XML character classes such as
michael@0 542 <code>NameChar</code> and so on.
michael@0 543 This made the automaton easier to write, and in fact, to keep the class files
michael@0 544 small, the character-class transitions persisted into the Java form, and the
michael@0 545 real DFA was built at startup time.
michael@0 546 These days, quick startup might be more important than <code>.class</code>
michael@0 547 file size.</p>
michael@0 548 <h2 id='p-3'>What Was Good</h2>
michael@0 549 <p>It was <em>damn</em> fast. James Clark managed to hand-craft a
michael@0 550 Java-language XML parser called
michael@0 551 <a href="http://jclark.com/xml/xp/index.html">XP</a> that was a little faster
michael@0 552 than Lark, but he did that by clever I/O buffering, and I was determined to
michael@0 553 leapfrog him by improving my I/O.</p>
michael@0 554 <p>This was before the time of standardized XML APIs, but Lark had a stream API
michael@0 555 that influenced SAX, and a DOM-like tree API; both worked just fine.
michael@0 556 Lark is one of very few parsers ever to have survived the
michael@0 557 <a href="http://www.securityfocus.com/archive/1/303509/2002-12-13/2002-12-19/0">billion
michael@0 558 laughs attack</a>.</p>
michael@0 559 <p>Lark was put into production in quite a few deployments, and the flow of
michael@0 560 bug reports slowed to a trickle.
michael@0 561 Then in 1998 I noticed that IBM and Microsoft and BEA and everyone else
michael@0 562 were building XML Processors, so I decided that it wasn’t worthwhile
michael@0 563 maintaining mine.</p>
michael@0 564 <h2 id='p-4'>What Was Bad</h2>
michael@0 565 <p>I never got around to teaching it namespaces, which means it wouldn’t be
michael@0 566 real useful today.</p>
michael@0 567 <p>It had one serious bug that would have been real work to fix and since
michael@0 568 nobody ever encountered it in practice, I kept putting it off and never did.
michael@0 569 If you had an internal parsed entity reference in an attribute value and the
michael@0 570 replacement text included the attribute delimiter (<code>'</code> or
michael@0 571 <code>"</code>), it would scream and claim you had a busted XML document.</p>
michael@0 572 <h2 id='p-5'>That Automaton</h2>
michael@0 573 <p>What happened was,
michael@0 574 <a href="http://www.oreillynet.com/pub/au/1712">Rick Jelliffe</a>, who is a
michael@0 575 Good Person, was
michael@0 576 <a href="http://www.stylusstudio.com/xmldev/200604/post30110.html">looking for
michael@0 577 a FSM for XML</a> and I eventually noticed, and so I sent him mine.</p>
michael@0 578 <p>There’s no reason whatsoever to keep it a secret:
michael@0 579 <a href="/ongoing/code/lark/com/textuality/autom.txt">here it is</a>.
michael@0 580 Be warned: it’s ugly.</p>
michael@0 581 <p>Fortunately, there were only 227 states and 8732 transitions, so the state
michael@0 582 number fit into a
michael@0 583 byte; that and the associated event index pack into a short.
michael@0 584 To make things even tighter, the transitions were only keyed by characters up
michael@0 585 to 127, as in 7-bit ASCII.
michael@0 586 Characters higher than that can’t be XML syntax characters, so we’re only
michael@0 587 interested whether they fall into classes like <code>NameChar</code> and
michael@0 588 <code>NameStartChar</code> and so on. A 64K <code>byte[]</code> array takes
michael@0 589 care of that, each byte having a class bitmask.</p>
michael@0 590 <p>As a result of all this jiggery-pokery, the DFA ends up, believe it
michael@0 591 or not, constituting a <code>short[227][128]</code>.</p>
michael@0 592 <p>Here’s a typical chunk of the automaton:</p>
michael@0 593 <pre><code>1. # in Start tag GI
michael@0 594 2. State StagGI BustedMarkup {in element type}
michael@0 595 3. T $NameC StagGI
michael@0 596 4. T $S InStag !EndGI
michael@0 597 5. T > InDoc !EndGI !ReportSTag
michael@0 598 6. T / EmptyClose !EndGI</code></pre>
michael@0 599 <p>This state, called <code>StagGI</code>, is the state where we’re actually
michael@0 600 reading the name of a tag, we got here by seeing a <code>&lt;</code> followed
michael@0 601 by a <code>NameStart</code> character.<br/>
michael@0 602 Line 1 is a comment.<br/>
michael@0 603 In line 2 we name the state, and support error reporting, providing the name
michael@0 604 of another state to fall back into in case of error, and in the curly braces,
michael@0 605 some text to help build an error message.<br/>
michael@0 606 Line 3 says that if we see a valid XML Name character, we just stay in this
michael@0 607 state.<br/>
michael@0 608 Line 4 says that if we see an XML space character, we move to state
michael@0 609 <code>InStag</code> and process an <code>EndGI</code> event, which would stash
michael@0 610 the characters in the start tag.<br/>And so on.</p>
michael@0 611 <h2 id='p-6'>Other Hackery</h2>
michael@0 612 <p>An early cut of Lark used String and StringBuffer objects to hold all the
michael@0 613 bits and pieces of the XML. This might be a viable strategy today, but in
michael@0 614 1996’s Java it was painfully slow.
michael@0 615 So the code goes to heroic lengths to live in the land of character arrays at
michael@0 616 all times, making Strings only when a client program asks for one through the
michael@0 617 API. The performance difference was mind-boggling.</p>
michael@0 618 <h2 id='p-7'>An Evil Idea</h2>
michael@0 619 <p>If you look at the automaton, and the Lark code, at least half—I’d bet
michael@0 620 three quarters—is there to deal with parsing the DTD and then dealing with
michael@0 621 entity wrangling.
michael@0 622 A whole bunch more is there to support DOM-building and walking.</p>
michael@0 623 <p>I bet if I went through and simply removed support for anything coming out
michael@0 624 of the <code>&lt;!DOCTYPE></code>, including all entity processing,
michael@0 625 then discarded
michael@0 626 the DOM stuff, then added namespace support and SAX and StAX APIs, it would be
michael@0 627 less than half its current size.
michael@0 628 Then if I reworked the I/O, knowing what I know now and stealing some tricks
michael@0 629 that James Clark uses in
michael@0 630 <a href="http://expat.sourceforge.net/">expat</a>, I bet it would
michael@0 631 be the fastest Java XML parser on the planet for XML docs without a
michael@0 632 DOCTYPE; by a wide margin. It’s hard to beat a DFA.</p>
michael@0 633 <p>And it would still be fully XML 1.0 compliant. Because (snicker) this is
michael@0 634 Java, and your basic core Java now includes an XML parser, so I could simply
michael@0 635 instrument Larkette to buffer the prologue and if it saw a DOCTYPE with an
michael@0 636 internal subset, defer to Java’s built-in parser.</p>
michael@0 637 <p>I’ll probably never do it. But the thought brings a smile to my face.</p>
michael@0 638 </div></content></entry>
michael@0 639
michael@0 640 <entry xml:base='When/200x/2006/04/22/'>
michael@0 641 <title>Just A Kid</title>
michael@0 642 <link href='Just-a-Kid' />
michael@0 643 <id>http://www.tbray.org/ongoing/When/200x/2006/04/22/Just-a-Kid</id>
michael@0 644 <published>2006-04-22T13:00:00-08:00</published>
michael@0 645 <updated>2006-04-22T13:37:58-08:00</updated>
michael@0 646 <category scheme='http://www.tbray.org/ongoing/What/' term='The World/Food and Drink' />
michael@0 647 <category scheme='http://www.tbray.org/ongoing/What/' term='The World' />
michael@0 648 <category scheme='http://www.tbray.org/ongoing/What/' term='Food and Drink' />
michael@0 649 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 650 <p>Last weekend, Lauren felt like cooking up home-made Easter eggs, so
michael@0 651 the shopping list included “chocolate chips (large bag)”. I was heading down
michael@0 652 the bulk-foods aisle and realized one of the vertical acrylic bins was full of
michael@0 653 them. Someone had been sloppy, and there was a little heap of chocolate chips
michael@0 654 on the shelf underneath it. For a second, I flashed into pure eight-year-old
michael@0 655 mode, thinking “Holy cow, there’s a <em>whole bin</em> full of chocolate
michael@0 656 chips, and more just lying there!” I popped a few in my mouth and they were
michael@0 657 excellent; semi-sweet, dark, strong, and firm. I was still in the state that
michael@0 658 Buddhists don’t mean when they say “Child’s Mind”, thinking “I
michael@0 659 can get as many as I want!” The list did say “large bag” after all, so I put
michael@0 660 a bag under the spout and gleefully jammed the lever <em>all the way
michael@0 661 over</em>. At home, Lauren said “You went overboard, a bit, didn’t you?”
michael@0 662 and now we have a plastic canister-full in the pantry which should last us
michael@0 663 into 2007. It’s a good feeling.</p>
michael@0 664 </div></content></entry>
michael@0 665
michael@0 666 <entry xml:base='When/200x/2006/04/22/'>
michael@0 667 <title>Goddess</title>
michael@0 668 <link href='Goddess' />
michael@0 669 <id>http://www.tbray.org/ongoing/When/200x/2006/04/22/Goddess</id>
michael@0 670 <published>2006-04-22T13:00:00-08:00</published>
michael@0 671 <updated>2006-04-22T12:25:59-08:00</updated>
michael@0 672 <category scheme='http://www.tbray.org/ongoing/What/' term='The World/Family' />
michael@0 673 <category scheme='http://www.tbray.org/ongoing/What/' term='The World' />
michael@0 674 <category scheme='http://www.tbray.org/ongoing/What/' term='Family' />
michael@0 675 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Microsoft' />
michael@0 676 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology' />
michael@0 677 <category scheme='http://www.tbray.org/ongoing/What/' term='Microsoft' />
michael@0 678 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 679 <p>That would be my wife
michael@0 680 <a href="http://www.laurenwood.org/anyway/">Lauren</a>. After
michael@0 681 <a href="/ongoing/When/200x/2006/04/16/Mad-at-Microsoft">I b0rked</a> our
michael@0 682 Win2K gamebox, I tried re-installing the OS and eventually reduced it to
michael@0 683 complete brick-ness, it recognized neither the video adapter nor the network
michael@0 684 card. So Lauren brushed me aside and started wrestling with the problem, and
michael@0 685 to make a long story short, it almost completely works again. At one point
michael@0 686 she seemed nearly infinite in her capabilities, sitting in front of the
michael@0 687 computer wrangling software updates while knitting baby stuff and looking up
michael@0 688 words in a German dictionary for the kid’s homework. Some of the German nouns
michael@0 689 and muttered curses at the Windows install sounded remarkably like each other.
michael@0 690 Why would anyone not marry a geek? The only problem is that Win2K won’t
michael@0 691 auto-switch resolutions to play games any more, it gets the frequency wrong
michael@0 692 and the LCD goes pear-shaped, you have to hand-select the frequency and
michael@0 693 switch into the right resolution first. LazyWeb?</p>
michael@0 694 </div></content></entry>
michael@0 695
michael@0 696 <entry xml:base='When/200x/2006/04/21/'>
michael@0 697 <title>Routing Around Spotlight</title>
michael@0 698 <link href='Routing-Around-Spotlight' />
michael@0 699 <id>http://www.tbray.org/ongoing/When/200x/2006/04/21/Routing-Around-Spotlight</id>
michael@0 700 <published>2006-04-21T13:00:00-08:00</published>
michael@0 701 <updated>2006-04-21T23:16:25-08:00</updated>
michael@0 702 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Mac OS X/Gripes' />
michael@0 703 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology' />
michael@0 704 <category scheme='http://www.tbray.org/ongoing/What/' term='Mac OS X' />
michael@0 705 <category scheme='http://www.tbray.org/ongoing/What/' term='Gripes' />
michael@0 706 <summary type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>Herewith two hideously ugly little shell scripts for use when Spotlight refuses to search your mail. Spotlight is a flawed v1.0 implementation of a really good idea and will, I&#x2019;m sure, be debugged in a near-future release. <i>[Update: The LazyWeb is educating me... these are moving targets.]</i></div></summary>
michael@0 707 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 708 <p>Herewith two hideously ugly little shell scripts for use when Spotlight
michael@0 709 refuses to search your mail.
michael@0 710 Spotlight is a flawed v1.0 implementation of a really good idea and will, I’m
michael@0 711 sure, be debugged in a near-future release.
michael@0 712 <i>[Update: The LazyWeb is educating me... these are moving targets.]</i></p>
michael@0 713 <p>My problem is that whereas Mail.app will search my To/From/Subject
michael@0 714 lines (slowly, and with a
michael@0 715 <a href="/ongoing/When/200x/2005/11/20/UnTiger">really irritating GUI</a>),
michael@0 716 the “Entire Message” option just doesn’t work, it returns instantly with no
michael@0 717 results. Yes, I’ve read the hints about making Spotlight re-index,
michael@0 718 but it just flatly refuses to work for me. Mind you, I have a lot of
michael@0 719 email, but still, it should at least try.</p>
michael@0 720 <p>It turns out I had never really figured out the <code>-print0</code> and
michael@0 721 <code>-0</code> idioms that a lot of the shell-command stalwarts now have.
michael@0 722 Thanks to Malcolm Tredinnick for raising my consciousness.</p>
michael@0 723 <p>This lives in <code>$HOME/bin</code> under the name
michael@0 724 <code>mailgrep</code>:</p>
michael@0 725 <pre><code>#!/bin/sh
michael@0 726 find $HOME/Library/Mail/IMAP* -name '*.emlx' -print0 | \
michael@0 727 xargs -0 fgrep -i $@</code></pre>
michael@0 728 <p>Isn’t <code>xargs</code> a funny command? I’ve discovered that it’s nearly
michael@0 729 impossible to describe what does, and then why what it does is necessary, but
michael@0 730 there are just a whole bunch of places where you’d be lost without it.</p>
michael@0 731 <p>This lives in <code>$HOME/bin/mailview</code>:</p>
michael@0 732 <pre><code>#!/bin/sh
michael@0 733 find $HOME/Library/Mail/IMAP* -name '*.emlx' -print0 | \
michael@0 734 xargs -0 fgrep -i -l -Z $@ | \
michael@0 735 xargs -0 open</code></pre>
michael@0 736 <p>The first cut of this dodged <code>xargs</code> and used an
michael@0 737 incredibly-inefficient and slow chain of <code>-exec</code> arguments to open
michael@0 738 the files one at a time with
michael@0 739 <code>view</code> (aka <code>vim</code>), to work around
michael@0 740 a well-known <code>vim</code> misfeature; it complained about the input
michael@0 741 not being a terminal and left my Terminal.app keystrokes borked.</p>
michael@0 742 <p>But Malcolm, confirming my belief in the broken-ness of <code>vim</code>,
michael@0 743 said “Oh, *that* ‘view’. I thought it was some sexy Mac ‘view my email’ app”.
michael@0 744 D’oh, of course; the magic OS X <code>open</code> command does just the right
michael@0 745 thing.
michael@0 746 Erm, you might want to run <code>mailgrep</code> before you run
michael@0 747 <code>mailview</code>; I’m not sure what would happen if you asked OS X to
michael@0 748 open three or four thousand email messages at once.</p>
michael@0 749 </div></content></entry>
michael@0 750
michael@0 751 <entry xml:base='When/200x/2006/04/21/'>
michael@0 752 <title>FSS: Pink Flowers</title>
michael@0 753 <link href='Dracon-Help' />
michael@0 754 <id>http://www.tbray.org/ongoing/When/200x/2006/04/21/Dracon-Help</id>
michael@0 755 <published>2006-04-21T13:00:00-08:00</published>
michael@0 756 <updated>2006-04-21T17:19:27-08:00</updated>
michael@0 757 <category scheme='http://www.tbray.org/ongoing/What/' term='Arts/Photos' />
michael@0 758 <category scheme='http://www.tbray.org/ongoing/What/' term='Arts' />
michael@0 759 <category scheme='http://www.tbray.org/ongoing/What/' term='Photos' />
michael@0 760 <summary type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>Friday Slide Scan #28 is two Eighties florals, one interior, one exterior. With a confession.</div></summary>
michael@0 761 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 762 <p>Friday Slide Scan #28 is two Eighties florals, one interior, one
michael@0 763 exterior. With a confession.</p>
michael@0 764 <p>First some spring flowers fallen from a tree, just as now in our front
michael@0 765 yard, at dusk.</p>
michael@0 766 <img src="0506.png" alt="Fallen pink treeflowers on grass at dusk" />
michael@0 767 <p>I’m not sure what these are, but look at the light in the center. Rewards
michael@0 768 enlarging.</p>
michael@0 769 <img src="0713.png" alt="Flowers in shadow with light in background" />
michael@0 770 <p>Here’s the confession. Sometimes on Fridays when I’m feeling kinda
michael@0 771 burned-out, I knock off work and do these slide scans in the office, because
michael@0 772 this is where I have the
michael@0 773 <a href="http://www.tbray.org/ongoing/When/200x/2004/04/14/MineIsBigger">big
michael@0 774 screen</a>.
michael@0 775 Blowing these pictures up to mega-huge, picking away at the old-slide crud and
michael@0 776 scanning artifacts, tinkering with the colour balance, and listening; I never
michael@0 777 play music while I’m writing or coding seriously, but I play it real loud while
michael@0 778 photo-editing. It’s all pretty well pure pleasure; you just can’t imagine
michael@0 779 how good that second one above looks at near-native size.
michael@0 780 It reconstitutes the part of my mind that I earn my living with; that’s my
michael@0 781 story and I’m sticking to it.</p>
michael@0 782 <p>Images in the Friday Slide Scans are from 35mm slides taken between 1953
michael@0 783 and 2003 by (in rough chronological order)
michael@0 784 <a href="http://www.textuality.com/BillBray/">Bill Bray</a>,
michael@0 785 <a href="/ongoing/When/200x/2004/08/11/MomsGarden">Jean Bray</a>, Tim Bray, Cath
michael@0 786 Bray, and
michael@0 787 <a href="http://www.laurenwood.org/anyway/">Lauren Wood</a>; when I know
michael@0 788 exactly who took one, I’ll say; in this case, at least one is by Cath Bray.
michael@0 789 Most but not all of the slides were on Kodachrome; they were digitized using
michael@0 790 a Nikon CoolScan 4000 ED scanner and cleaned up by a combination of the Nikon
michael@0 791 scanning software and PhotoShop Elements.</p>
michael@0 792 </div></content></entry>
michael@0 793
michael@0 794 <entry xml:base='When/200x/2006/04/20/'>
michael@0 795 <title>Spring Pix</title>
michael@0 796 <link href='Spring-Pix' />
michael@0 797 <id>http://www.tbray.org/ongoing/When/200x/2006/04/20/Spring-Pix</id>
michael@0 798 <published>2006-04-20T13:00:00-08:00</published>
michael@0 799 <updated>2006-04-20T23:07:10-08:00</updated>
michael@0 800 <category scheme='http://www.tbray.org/ongoing/What/' term='The World/Places/Vancouver' />
michael@0 801 <category scheme='http://www.tbray.org/ongoing/What/' term='The World' />
michael@0 802 <category scheme='http://www.tbray.org/ongoing/What/' term='Places' />
michael@0 803 <category scheme='http://www.tbray.org/ongoing/What/' term='Vancouver' />
michael@0 804 <category scheme='http://www.tbray.org/ongoing/What/' term='Arts/Photos' />
michael@0 805 <category scheme='http://www.tbray.org/ongoing/What/' term='Arts' />
michael@0 806 <category scheme='http://www.tbray.org/ongoing/What/' term='Photos' />
michael@0 807 <summary type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>Three pictures around Vancouver; one of a fresh green springtime tree, two of rotten old buildings being torn down.</div></summary>
michael@0 808 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 809 <p>Three pictures around Vancouver; one of a fresh green springtime tree, two
michael@0 810 of rotten old buildings being torn down.</p>
michael@0 811 <p>There’s nothing quite as fresh as just-sprouted deciduous leaves;
michael@0 812 another few weeks and this tree will be just a tree.</p>
michael@0 813 <img src="IMG_4656.png" alt="Sunlit fresh young leaves" />
michael@0 814 <p>I have a thing about demolition.
michael@0 815 The first is a rotten dingy old one-story on Main Street near 23rd, the second
michael@0 816 is an unlovely grey mid-rise being torn down to build still more condos at
michael@0 817 Homer and Helmcken.</p>
michael@0 818 <img src="IMG_4665.png" alt="Demolition site on Main Street, Vancouver" />
michael@0 819 <img src="IMG_4671.png" alt="Demolition site at Homer and Helmcken, Vancouver" />
michael@0 820 </div></content></entry>
michael@0 821
michael@0 822 <entry xml:base='When/200x/2006/04/20/'>
michael@0 823 <title>Totten&#x2019;s Trip</title>
michael@0 824 <link href='Totten-on-Iraq' />
michael@0 825 <id>http://www.tbray.org/ongoing/When/200x/2006/04/20/Totten-on-Iraq</id>
michael@0 826 <published>2006-04-20T13:00:00-08:00</published>
michael@0 827 <updated>2006-04-20T21:05:22-08:00</updated>
michael@0 828 <category scheme='http://www.tbray.org/ongoing/What/' term='The World/Places/Middle East' />
michael@0 829 <category scheme='http://www.tbray.org/ongoing/What/' term='The World' />
michael@0 830 <category scheme='http://www.tbray.org/ongoing/What/' term='Places' />
michael@0 831 <category scheme='http://www.tbray.org/ongoing/What/' term='Middle East' />
michael@0 832 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 833 <p><a href="http://www.michaeltotten.com/">Michael J. Totten</a> is a
michael@0 834 journalist and blogger who’s back and forth to the
michael@0 835 Middle East and writes about it, quite well in my opinion; he supports this by
michael@0 836 freelancing and with his blog’s tip jar. He gets lots of
michael@0 837 link love from the right-wing blogosphere, which is puzzling because Totten is
michael@0 838 balanced and clear-eyed and doesn’t seem to have any particular axe to grind.
michael@0 839 Recently, he and a friend were
michael@0 840 <a href="http://www.michaeltotten.com/archives/001117.html">having fun in
michael@0 841 Istanbul</a> and, on a random drive out into the country, decided on impulse to
michael@0 842 keep going, all the way across Turkey and into Iraq; into the Kurdish
michael@0 843 mini-state in Iraq’s north, to
michael@0 844 be precise. It makes a heck of a story, with lots of pictures, in six parts:
michael@0 845 <a href="http://www.michaeltotten.com/archives/001119.html">I</a>,
michael@0 846 <a href="http://www.michaeltotten.com/archives/001120.html">II</a>,
michael@0 847 <a href="http://www.michaeltotten.com/archives/001121.html">III</a>,
michael@0 848 <a href="http://www.michaeltotten.com/archives/001124.html">IV</a>,
michael@0 849 <a href="http://www.michaeltotten.com/archives/001126.html">V</a>, and
michael@0 850 <a href="http://www.michaeltotten.com/archives/001127.html">VI</a>.
michael@0 851 </p>
michael@0 852 </div></content></entry>
michael@0 853
michael@0 854 <entry xml:base='When/200x/2006/04/19/'>
michael@0 855 <title>The Cost of AJAX</title>
michael@0 856 <link href='The-Cost-of-AJAX' />
michael@0 857 <id>http://www.tbray.org/ongoing/When/200x/2006/04/19/The-Cost-of-AJAX</id>
michael@0 858 <published>2006-04-19T13:00:00-08:00</published>
michael@0 859 <updated>2006-04-20T00:37:46-08:00</updated>
michael@0 860 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology/Web' />
michael@0 861 <category scheme='http://www.tbray.org/ongoing/What/' term='Technology' />
michael@0 862 <category scheme='http://www.tbray.org/ongoing/What/' term='Web' />
michael@0 863 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 864 <p>James Governor
michael@0 865 <a href="http://www.redmonk.com/jgovernor/archives/001526.html">relays a
michael@0 866 question</a> that sounds important
michael@0 867 but I think is actively dangerous: do AJAX apps present more of
michael@0 868 a server-side load? The question is dangerous because it’s meaningless and
michael@0 869 unanswerable. Your typical Web page will, in the process of
michael@0 870 loading, call back to the server for a bunch of stylesheets and graphics and
michael@0 871 scripts and so on: for example, this <span class='o'>ongoing</span> page calls
michael@0 872 out to three different graphics, one stylesheet, and one JavaScript file.
michael@0 873 It also has one “AJAXy” XMLHttpRequest call.
michael@0 874 From the server’s point of view, those are all just requests to dereference
michael@0 875 one URI or another. In the case
michael@0 876 of <span class='o'>ongoing</span>, the AJAX request is for a static file less
michael@0 877 than 200 bytes in size (i.e. cheap).
michael@0 878 On the other hand, it could have been for something that required a
michael@0 879 complex outer join on two ten-million-row tables (i.e. <em>very</em>
michael@0 880 expensive). And one of the virtues of
michael@0 881 the Web Architecture is that it hides those differences, the “U” in URI stands
michael@0 882 for “Uniform”, it’s a Uniform interface to a resource on the Web that could
michael@0 883 be, well, anything.
michael@0 884 So saying “AJAX is expensive” (or that it’s cheap) is like saying “A mountain
michael@0 885 bike is slower than a battle tank” (or that it’s faster).
michael@0 886 The truth depends on what you’re doing with it.
michael@0 887 In the case of web sites, it depends on how many fetches you do and
michael@0 888 where you have to go to get the data to satisfy them.
michael@0 889 <span class='o'>ongoing</span> is a pretty quick web site, even though it runs
michael@0 890 on a fairly modest server, but
michael@0 891 that has nothing to do with AJAX-or-not; it’s because of the particular way
michael@0 892 I’ve set up the Web resources that make the pages here.
michael@0 893 I’ve
michael@0 894 <a href="/ongoing/When/200x/2006/02/14/AJAX-Performance">argued elsewhere</a>
michael@0 895 that AJAX can be a performance win, system-wide; but that argument too is
michael@0 896 contingent on context, lots of context.</p>
michael@0 897 </div></content></entry>
michael@0 898
michael@0 899 <entry xml:base='When/200x/2006/04/18/'>
michael@0 900 <title>Hao Wu and Graham McMynn</title>
michael@0 901 <link href='Hao-Wu' />
michael@0 902 <id>http://www.tbray.org/ongoing/When/200x/2006/04/18/Hao-Wu</id>
michael@0 903 <published>2006-04-18T13:00:00-08:00</published>
michael@0 904 <updated>2006-04-18T22:00:40-08:00</updated>
michael@0 905 <category scheme='http://www.tbray.org/ongoing/What/' term='The World/Places/China' />
michael@0 906 <category scheme='http://www.tbray.org/ongoing/What/' term='The World' />
michael@0 907 <category scheme='http://www.tbray.org/ongoing/What/' term='Places' />
michael@0 908 <category scheme='http://www.tbray.org/ongoing/What/' term='China' />
michael@0 909 <category scheme='http://www.tbray.org/ongoing/What/' term='The World/Politics' />
michael@0 910 <category scheme='http://www.tbray.org/ongoing/What/' term='Politics' />
michael@0 911 <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>
michael@0 912 <p>Graham McMynn is a teenager who was kidnapped in Vancouver on April 4th and
michael@0 913 freed, in a large, noisy, and
michael@0 914 <a href="http://www.cbc.ca/story/news/national/2006/04/12/bcabduction060412.html">newsworthy</a>
michael@0 915 police operation, on April 12th.
michael@0 916 <a href="http://en.wikipedia.org/wiki/Hao_Wu">Hao Wu</a> is a Chinese
michael@0 917 film-maker and
michael@0 918 <a href="http://beijingorbust.blogspot.com/">blogger</a> who was kidnapped in
michael@0 919 Beijing on February 22nd in a
michael@0 920 small, quiet police operation not intended to be newsworthy, and who has not
michael@0 921 been freed.
michael@0 922 Read about it
michael@0 923 <a href="http://spaces.msn.com/wuhaofamily/">here</a>,
michael@0 924 <a href="http://ethanzuckerman.com/haowu/">here</a>, and
michael@0 925 <a href="http://rconversation.blogs.com/rconversation/freehaowu/index.html">here</a>.
michael@0 926 Making noise about it <em>might</em> influence the government of China to
michael@0 927 moderate its actions against Mr. Wu, and can’t do any harm.
michael@0 928 Mr. McMynn’s kidnappers were a gaggle of small-time hoodlums, one of whom was
michael@0 929 out on bail while awaiting trial for another kidnapping (!).
michael@0 930 Mr. Wu’s were police.
michael@0 931 In a civilized country, the function of the police force is to deter such
michael@0 932 people and arrest them. A nation where they are the same people? Nobody
michael@0 933 could call it “civilized”.</p>
michael@0 934 </div></content></entry>
michael@0 935
michael@0 936 </feed>

mercurial