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