°02.10.22.tu | efficient RSS over HTTP
The difference between the present RSS content syndication technology and
those of the since burst push bubble (e.g., Pointcast) is that RSS
polls and pulls. That means it checks if there's new content; if so, it then
pulls it. Unfortunately, most RSS clients don't poll. Instead, they download
the full RSS feed every 10 minutes or so, even if the site is only
updated once every few days — that's a lot of wasted bandwidth! As
Charles Miller describes,
clients are starting to do an actual 'poll'; services then need to let the
client know if the content changed. Servers can do this by providing an
ETag (i.e., hash of the resource) or Last-Modified
header. These headers are generated for static files automatically by Apache,
but many RSS feeds are CGI generated and you need to generate
them yourself. Goatee's (valid)
RSS feed now generates these headers
with the following bit of Python:
def print_xml(url,entry):
import commands, md5, time, os
env = os.environ
modified = os.stat(entry)[8]
hash = md5.new(open(entry, 'r').read()).hexdigest()
if env.has_key('HTTP_IF_NONE_MATCH') and \
env['HTTP_IF_NONE_MATCH'] == hash:
print "Status: 304 Not Modified\n"
else:
print 'Content-Type: text/xml'
print 'Last-Modified:', time.strftime("%a, %d %b %Y %H:%M:%S GMT",
time.gmtime(modified))
print 'ETag: "%s"\n' % (hash)
print commands.getstatusoutput("/usr/bin/sabcmd
/e/2web/goatee/2002/rss.xsl %s '$Base=%s'" % (entry,url) )[1]
If the feed hasn't changed, the headers look like:
> wget -S --header='If-None-Match: 48717f579ecb502d4891849769d3f520' \ http://goatee.net/cgi/rss HTTP request sent, awaiting response... 1 HTTP/1.1 304 Not Modified 2 Date: Fri, 01 Nov 2002 16:06:22 GMT 3 Server: Apache/1.3.26 (Unix) Debian GNU/Linux 4 Keep-Alive: timeout=15, max=100 5 Connection: Keep-Alive 6 Content-Type: text/plain; charset=iso-8859-1 11:06:22 ERROR 304: Not Modified
If the feed has changed:
> wget -S --header='If-None-Match: 48717f579ecb502d4891849769d3f520' \ http://goatee.net/cgi/rss HTTP request sent, awaiting response... 1 HTTP/1.1 200 OK 2 Date: Tue, 22 Oct 2002 18:30:50 GMT 3 Server: Apache/1.3.26 (Unix) Debian GNU/Linux 4 ETag: "8f76159a760a7c789b6c73baa7c0bbad" 5 Last-Modified: Tue, 22 Oct 2002 15:26:28 GMT 6 Connection: close 7 Content-Type: text/xml
°02.10.21.mo | responsibilities
"I believe that high profile bloggers have a responsibility to behave in ways that reflect their impact on this virtual space we are inhabiting.
Euan, by saying that Dave and I are prominent webloggers and therefore have a responsibility to behave in a certain way you're reducing both of us to figureheads, and you're removing both Dave's and my right to speak as we want. You've made us both into puppets of the medium and of the readers." - Sunday Afternoon Ramble, Burning Bird.
Before you can answer the question of responsibility, you have to ask yourself "responsibility to whom?" You have a responsibility to yourself, to be as you'd like to be, self-fulfilled, and content. That's your choice and (ironically) responsibility — though given how much people beat their chest about blogs they seem to be failing themselves. You also do have a responsibility to the virtual space we inhabit. This is not because you owe anything to any single person or some collection thereof, but that "the world is what we make it to be". If we are nasty, egotistical, and preoccupied with popularity, then so will our shared space.
No one said it'd be easy to achieve (a) a massive readership cutting across our personal and professional spheres, that (b) preserves a maximum of professional reputation, personal freedom, and artistic license, and (c) that invites much praise but avoids much pillory. In fact, I consider it nearly impossible.
If I had to choose a name for this site again, I doubt I'd choose "goatee." But this name grew out of my efforts nearly seven years ago when I began to publish my papers and such on a site which was previously personal. The design was split down the middle, with "me" links on the left, and "me with a goatee" on the right. To stake a claim for some personal freedom I wrote the why page which even today I include on every month's page. And since then, I've worked to break my pseudonyms into different domains and enforce their distinction. Also, while it is as much out of laziness as principle, I've never implemented a comment mechanism. If people care, they can write about it on the Web, or send me an email. I don't owe anyone the ability to comment on this site, I don't need to be the most linked to site on the Web, nor am I going to link to others with the hope that they'd then link to me.
On this site, I want to capture my thoughts, theories and experiences. I want to see the person I'd like to be, sometimes angry, sometimes sad — writing can be therapeutic after all — but always trying to be positive. And I'd still do it if there was no other reader than me.
°02.10.21.mo | if we are psychic
If we are psychic, we transmit our gaze. To test this, sometimes Nora and I sharpen our focus and ask, "Where am I looking?"
"My left eye?"
"Yep!"
"Now where am I looking?"
"My right nostril?"
It fascinates me that our sight is so attuned to another's that we can discern the target of a gaze from a lidded, squishy, orb in a skull across a crowded and dark room. "Are they looking at me?" is such a critical question to our social survival that it's one of the most attuned perceptions evolution has ever given us.
°02.10.17.th | finding holiday
Even
when on holiday, it can be hard to take a break. Each of the following slices
of time aren't officially work, but they're contaminated: a day of adjustment
and rehearsing my talk, some evenings after the meetings, a day or two trying
to swap out the context of work, and then the day before I return when all
the things that I must do begin to intrude and pile.
What I enjoyed so much about our trip to the Pacific Northwest was that there was zero work involved. It was an unadulterated holiday with Nora acting as my guide to great food, good vibes, and the easy flow of catching trains on the cuff and staying in hostels, co-ops, and with friends.
On this trip to Sydney I had a four day weekend, but I only felt free for
the day and a half up in the Blue Mountains. The Katoomba
YHA was very friendly and our hikes over sun dappled paths between brush and
eucalyptus was lovely. Just the smell put me at ease. And I'm always excited
to see waterfalls and the wild cockatoos were amazing. Then, finally, hungry
and tired we had a wonderful dinner at Cafe Zuppa. Perfect! ![]()
However, I had much fun on most every day of the trip, including:
- Walking with Nora and Hugo in the cute neighborhood of Glebe.
- Heating up in the sauna then jumping into the crisp water of the pool.
- Tea in the Chinese Garden.
- Buying super-cool pants on Oxford St.
- Playing pinball and one session of a crazy Japanese dance game.
- Walking from Bondi to Bronte beach.
- An evening ferry ride under the bridge.
- A Goth night (Ritual) that was way too metal.
- And watching the awakening and swarming of thousands of huge bats in the Royal Botanic Gardens.
°02.10.01.tu | words
This week I've enjoyed learning a few odd and old expressions:
- cakewalk
- "a strutting dance based on a march; was performed in minstrel shows; originated as a competition among Black dancers to win a cake"
- safe as houses
- A Depeche Mode favorite, supposedly referring to the security of property as an investment in Victorian England. But what does "safe as milk" mean?
And since I'm returning to Sydney this weekend, I should brush up on cool Australian expressions.
____
[September archive]
Copyright © (2002) NrrrdBoy. All Rights Reserved. http://goatee.net/
- on my palm
- Mimi ° WorseThanQueer ° Jen ° Ann ° Trouble °Au Jus
- in my logs
- drool ° inetmanu
- in my bag
- The Tipping Point ° Dead Man Walking ° Knights of the Round Table
- on my minidisc
- Bright Eyes