See how cleverly this butterfly, er, moth, er, something has evolved to camouflage itself in the cracks on my floors.
It’s just amazing.
Ketil Bjørnstad is a musician and an author, and this book is about a musician who’s also an author. And then there’s a Hardy Boys plot about terrorism and the Steiner School.
The bits about being a musician are better than the terrorism bit. There’s a sort of vigorous charm in the writing, and there are funny bits. But it all feels so unnecessary.
It’s written in 1980, and I apparently bought this in 1995 at a sale, dirt cheap. Which explains why I hadn’t read it until now.
But it’s difficult to imagine anybody wanting to read this now, at all. It was probably a much more entertaining read in 1980, but now it’s mostly just annoying. Not actually bad or anything, but “eh”.
Rating: Superfluoicious
I’ve spent a bit of time making shr faster, and making eww render forms prettier. The latter entailed implementing all the widgets myself instead of trying to shoe-horn widget.el into eww.
shr is still slow, but it’s 4x faster now rendering typical Wikipedia pages than it was a few days ago.
I find comparing the rendering with emacs-w3m helpful, because emacs-w3m renders stuff quite nicely. eww at the top, emacs-w3m at the bottom. We see that eww is more colourful than emacs-w3m, but that emacs-w3m has align=center working on non-tabular elements, too. Which shr probably won’t be supporting.
Above are emacs-w3m to the left/top, and eww to the right/bottom. It’s getting there.
Above we have emacs-w3m to the left/top, and eww to the right/bottom. That’s a rendering of the all-important ocelot page on Wikipedia. emacs-w3m inlines images into tables, while eww doesn’t because of reasons. But Eli has ideas that I must explore.
A couple of years ago I wrote an HTML rendering library for Emacs so that I could read blogs in Gnus. And because I thought that Emacs should have a built-in method to display HTML. I mean, it was only about 20 years over-due.
Simple HTML Renderer (or shr, as the cool kids call it) was included in Emacs 24, and is based on the HTML capabilities of libxml2. So it parses HTML very quickly. The rendering, however, is in Emacs Lisp, so there’s a constant struggle between the impulse to IMPLEMENT IT ALL and not having it be so slow that you wouldn’t want to use it.
shr is fast enough to be usable on short, un-complicated pages. But point it to a page containing tables nested ten-deep, and it’s a dog. Mostly because I couldn’t come up with a table rendering algorithm that isn’t exponential. Or something.
Anyway, after doing that, implementing an Emacs web browser seemed like the obvious next step. It would be useful for doing, say, lookups in the Common Lisp Hyperspec, or look up the documentation for PHP functions, and stuff like that. Since shr doesn’t do JavaScript, you can’t really do Gmail.
So this Monday, I came up with the name of the browser while half-asleep: eww! I don’t quite know what the second w is supposed to stand for (Emacs Web Wowser?), but now that I had a name I just had to start programming.
It was only a couple day’s work (mostly implementing support), and here’s how eww renders the Wikipedia page on kittens, which we all consult daily. Probably.
It’s alive!
Emacs has other, non-built-in browsers. I think the reason they haven’t been included are for copyright assignment reasons. But let’s compare.
Here’s emacs-w3m, which uses the external w3m program do generate a parse tree:
emacs-w3m is quite fast (much faster than shr on nested tables) and renders stuff nicely. The
Then there’s the venerable w3, which I only have for XEmacs. Let’s see how it does:
Oops. Perhaps it doesn’t like https links? Yup, the http version is better:
w3 is more fond of changing font size than both eww and emacs-w3m. My reasoning for disallowing font size changes is that Emacs has a pretty basic rendering model. If you have characters with different widths, lining stuff up is almost impossible. And since so many pages are table-based, it’s more important to make stuff readable than to vary text sizes and use different fonts. But perhaps shr could do font stuff outside of tables? There wouldn’t be much of an issue of lining stuff up outside of table contexts.
Anyway, there you go. There’s lots of stuff that could and possibly should be tweaked in eww (and shr), but I think it’s basically usable.
If you want to give it a twirl, the easiest (ahem) thing is probably to pull down the Emacs 24 bzr tree. Or, if you’re using Emacs 24, pull down the Gnus git tree. (I put it in the Gnus git repository, where it kinda doesn’t belong, but since shr is in there already, and they’re developed synchronously, it was easier to put it there. It’ll probably be removed from there after a while.)
I had read most of Susan Sontag’s non-fiction, and then I didn’t read her novel, so it makes sense that I would read all of Samuel Delany’s fiction, but then not read his essay collection “Longer Views”. Don’t you think?
It demonstrates the mirror image stage in specifying the signifiers signified by m/othering the other.
I’m sorry. I love Delany’s writing to bits, but the post-structuralism (or whatever) on display here may have been amusing at the time, but now it’s kinda boring. Making fun of people who quote Lacan and Kristeva is also way boring, so I’m not going to.
What!
I’ll just leave you with this quote (which is kinda emblematic, in both a good and bad way, of this book):
“Rhetoric is the ash of discourse.”
So there:
Rating: Rhetoriffic.