During the last two days, I’ve been writing Nukumi, my new weblog system.
So far, “chris blogs” has been generated by a bunch of ruby scripts, Makefiles and XSLT stylesheets. This was by no means bad; it was very effective and just worked. But it also was very brainless. I had no way to do “real” permalinks, and the archive support I added recently was a kludge.
Therefore, I have been dropping the Makefile stuff and replaced it with some clever script. The pages are still generated with XSLT, because it’s the easiest way to get multiple output formats (so far, XHTML, RSS and Atom) from a single source.
However, the new system is much more flexible at this. While the only
script, dubbed xml2entries.rb
as you may notice, just outputted the
last 15 entries (or all of them, if supplied the --archive
parameter), into xsltproc
, the new one supports multiple views of
the same entry base.
My configuration code so far is:
# Extension Stylesheet Views
n.flavor "html", "xml2xhtml.xsl", :ALL
n.flavor "rss", "xml2rss.xsl", :front
n.flavor "atom", "xml2atom.xsl", :front
First, we define several flavors (term stolen from Blosxom) for the different output formats.
The second part is more interesting, however:
# Name Prefix Hashfunc
n.view :archive, "archive-", proc { |e,i| e.time.strftime("%Y-%m") }
n.view :daily, "entry-", proc { |e,i|
e.time.strftime("%Y-%m-%d-") + \
e.header["Subject"].downcase.
gsub(/[^a-z]/, '_').squeeze('_')
}
n.view :front, "index", proc { |e,i|
i < FRONT_LENGTH ? "" : nil
}
The Hashfunc maps every entry onto a string which they get grouped by.
The first entry just generates archives for each different month, that
is 2004-05
, 2004-04
etc.
The second one generates a permalink file for each entry of the form
2004年03月27日-kurt_cobain_jokes
, providing some context to the person
coming from an external page.
Finally, it generates the index
page (inclusive feeds in RSS and Atom)
for all entries appearing before FRONT_LENGTH
.
All these views get generated in each defined flavor into a file which has the flavor extension appended.
Note that all this is very efficient: Only the files which are new or would get changed (i.e. modification time of any entry in the file is newer than the entry itself) get generated anew.
Nukumi, which has its name from the japanese word for “warmth” (which was missing to the Makefile approach… :-)), works already very nicely, though I spend only about 5 hours coding it. I’ll relase it when I’m back from holidays.
I’ll be away for the next week till Sunday, and not be able to blog during that period.
NP: Beatsteaks—Big Attack
HTML mails have been pissing off people since they were introduced. The additional clutter and bloat soon were criticized. Today, most mail I recieve is still plain text, but most spam is HTML.
Nevertheless, the concept isn’t that bad at all: Users don’t want to write plain text, but markup their text with emphasis, add links, define paragraphs etc.
Therefore, the content-type text/enriched
was defined in RFC 1896.
It failed; being a kind of SGML dialect with nonstandard semantics,
it’s too complicated for most mail clients to implement. In fact, the
only text/enriched
document I’ve ever seen was the sample file
enriched.doc
included in the Emacs distribution.
I have some ideas to help users get their markup, but make users (or are these “professionals” now?) for text clients still being able to read the mails without the need of a browser.
First, all markedup mails get created as restricted XHTML. Basically, only these modules are needed:
Text module: abbr
, acronym
, address
, blockquote
, br
,
cite
, code
, dfn
, div
, em
, h1
, h2
, h3
, h4
, h5
,
h6
, kbd
, p
, pre
, q
, samp
, span
, strong
, var
.
Hypertext module: a
List module: dl
, dt
, dd
, ol
, ul
, li
Edit module: del
, ins
Bidirectional text module: bdo
Table module: caption
, col
, colgroup
, table
, tbody
, td
,
tfoot
, th
, thead
, tr
Image module: img
This is a small, document-centric subset of XHTML, but enough for mail. Note that the “Style sheet module” is missing: CSS is problematic in mail, and not needed for the purpose of markup. Instead, each user should define his own stylesheet (or use a predefined one).
Just using XHTML doesn’t help against the problem of text client users, though. (Although I think they’d already be happy if the mails didn’t use crappy HTML3.2, but valid XHTML.)
Therefore, the mail gets updated in a textual format, for example Markdown or Textile. An example; this mail as the user wants it:
Hello John,
I have some new data for you; it’s very important to me that you evaluate it soon:
Date | Size |
---|---|
05-01-2004 | 17.1cm |
05-16-2004 | 18.4cm |
06-01-2004 | 19.8cm |
Isn’t that great?
Yours,
J. Random User
This is the according XHTML snippet:
<div>
<p>Hello John,</p>
<p>I have some new data for you; it's
<strong>very important</strong> to me that
you evaluate it soon:</p>
<table>
<thead><tr><th>Date</th> <th>Size</th></tr></thead>
<tbody>
<tr><td>05-01-2004</td> <td>17.1cm</td></tr>
<tr><td>05-16-2004</td> <td>18.4cm</td></tr>
<tr><td>06-01-2004</td> <td>19.8cm</td></tr>
</tbody>
</table>
<p>Isn't that great?</p>
<p>Yours,<br />J. Random User</p>
<hr />
<address>
<a href="mailto:jranduser@example.org">J. Random User</a><br />
42 Foo Street<br />
Pittsburgh, PA 15213</address>
</div>
Can you see the clutter? :-). However, in Textile, it would only look like this:
Hello John,
I have some new data for you; it's *very important* to
that you evaluate it soon:
|_. Date |_. Size |
| 05-01-2004 | 17.1cm |
| 05-16-2004 | 18.4cm |
| 06-01-2004 | 19.8cm |
Isn't that great?
Yours,
J. Random User
<hr /><address>"J. Random User":mailto:jranduser@example.org
42 Foo Street
Pittsburgh, PA 15213
</address>
Definitely an improvement, no? And it’s readable by anyone.
So the way future markup-mail should work is:
Markup -> restricted XHTML -> Textile/Markdown
On the reader site, it’s of course just the reverse.
The only problem for now is the automatic conversion of XHTML to Textile. (And the need of a WYSIWYG XHTML widget; the Mozilla Compos(t)er code I just tried sucks hard.)
NP: Smog—No Dancing
System Architecture with XML by Berthold Daum and Udo Merten, what a generic title. And so is the book; it gives a really nice overview about the various uses of XML and their (co-)standards.
The book was published in 2003 and features all important W3C specs, XML, XML Schema—RELAX NG is unfortunately missing—, XPath, XPointer, XInclude, Namespaces and XML Base. XQuery and XSL, SOAP and the various security-related XML specs are included too. All specifications are shown with an understandable sample and some discussion.
RDF and XTM are handled in their own chapters, a section shows up the differences between them. Webservices are discussed in a business-related way.
Of course, the book can’t go very deep into all these standards; but it’s enough to get seriously interested in various standards one hasn’t yet found a simple introduction into. Two sections handle the philosophical aspects of ontologies, contexts, and topic maps.
A large index at the end of the book makes finding certain sections again easy.
I can fully recommend that book to anyone with only a little or no knowledge about XML at all that want to get an introduction into the most important, (mostly) business-related specifications and standards. Advanced XML people certainly don’t need it.
NP: Pearl Jam—Strangest Tribe
Finally the entry archive got a bit too big for me (~97k), so I decided to split it up into monthly archives.
The new archive will stay of course, for the sake of permalinks, but all references on it have replaced; this may be sub-optimal for newsfeed readers, but doing it right is, IMHO, not worth the hassle.
NP: Nirvana—Plateau (unplugged)
“chrisblogs” has since today an valid Atom 0.3 feed.
The specification of Atom is, though in “PRE-DRAFT” state, as they call it, very clear and readable (much unlike RSS, but I’m not going to start the anti-Dave-Winer-specs post now.); but it’s also very strict (not necessarily a bad thing) and has more required elements than RSS.
I have been able to implement by modifying my xml2rss.xsl
stylesheet
in about half an hour. Now I just need to find a nice Atom reader to
see if this actually works… :-)
NP: Pink Floyd—Run Like Hell
I’ve been doing a new design for “chris blogs”, dubbed “Dark Mint”.
It looks very different from the “Barcode” designs available; it is very minimal, has only one graphic and a bright font on a dark background.
I hope you like it.
BTW, CSS really needs something like #define
in the C preprocessor.
There are cases in which several elements have the same color but that
color can’t be defined using cascades. Changing these colors can get
very complicated and it’s easy to redefine an element with the same
color but a different purpose. (For “Dark Mint”, I just used the
macroprocessor m4
to define colors, but running m4
after each
change is tedious.)
Prank of the minute:
class String
def dylanize
gsub(/\b([b-df-hj-z]\w+in)g/i, 'a-1円\'')
end
end
puts "For the times, they are changing".dylanize
puts "I'm wondering if she remembers me at all".dylanize
puts "I saw a room full of men with their hammers bleeding".dylanize
puts "I'm going back out 'fore the rain starts falling".dylanize
This will result in:
For the times, they are a-changin'
I'm a-wonderin' if she remembers me at all
I saw a room full of men with their hammers a-bleedin'
I'm a-goin' back out 'fore the rain starts a-fallin'
*veg*
NP: Pearl Jam—Hold On
I found a nice trick to hide e-mail addresses from harvesters, using CSS:
<div style="padding:5px;font-family:'Courier New',monospace;
line-height:0%;text-indent:1ex;letter-spacing:1ex;">
hekrhnyhod<br />cnuice@ao.e
</div>
It will look like:
Go figure how that works!
I added two very useful extensions to Zyl, first, an image chain that can resize images on the fly via the URL. You can, for example, say:
<img src="graphics/foo.png/200x300" alt="A foo" />
And, whoo!, have a 200x300 pixel image, nevermind how big foo.png is in reality.
The other extension allows rendering of TrueType fonts on the fly, e.g.:
<img src="font/chicago-32/Page Title" alt="Page Title" />
And get the according picture immediately. Very useful.
I also played with BefTer-Shadows, which are non-intrusive shadows
(i.e. they require only one <div>
) and look really cool.
From the Emacs NEWS file:
** Convenient commands to switch buffers in a cyclic order are
C-x <left>
(prev-buffer) andC-x <right>
(next-buffer).
These rock! (C-x b
tends to get very confusing if you edit more than
three files at the same time.)
NP: English Beat—Save It For Later
Today I experimented with ppchTeX, a macro package for plain TeX, LaTeX and ConTeXt to typeset chemical formulas.
It’s stucture is very interesting; it uses an arcane syntax which in fact is a domain specific language. I’ll show some examples here.
Chemical formula of Ethene First, Ethene (CH2CH2).
The code of this looks like this (there is some stuff around it, but this is the code unique to this certain formula):
\chemical[ONE,SB46,DB1,Z0146,MOV1,SB28,Z28][C,C,H,H,H,H]
This reads like a simple program:
ONE
: This is the command to introduce an “node” inside the
formula.
SB46
: Draw a Single Bond on position 4 and 6 of the current
node. This is bottom-left and top-left.
DB1
: Draw a Double Bond on position 1 of the current
node. This is right-middle.
Z0146
: Add the name of the atoms at position 0 (the middle of the
node), 1, 4 and 6. These get the names from the data attached to the
call; i.e. the current node gets named C
, just like the right
node, and the two left ones get H
.
MOV1
: Move to the node at position 1, that is, the right node.
SB28
and Z28
: Draw the upper-right and bottom-right bonds,
and name them accordingly.
This sounds quite compilicated, but once you got how to look at the formula, its quite easy to write.
Chemical formula of two acetic acid molecules connected by hydrogen bonds
Now, a bit more complicated example, two acetic acid molecules connected by hydrogen bonds. The code:
\chemical[ONE,Z05,SB25,DB8][C,H_3C]
\chemical[PB:Z2,ONE,Z01,SB1,PE][O,H]
\chemical[PB:Z8,ONE,Z0,HB1,PE][O]
\chemical[SUB1,ONE,18OFF1,Z01,SB16,DB4][C,CH_3]
\chemical[PB:Z4,ONE,Z0,HB5,PE][O]
\chemical[PB:Z6,ONE,Z05,SB5,PE][O,H]
I’ll only explain the stuff not covered above:
PB:
pos…PE
: Start a subdiagram at position pos.
SUB1
: move one structure in relation to another in the direction
given.
18OFF1
: do 18 small steps in direction 1 (right).
Now, a quite tricky one, Guanine:
\chemical[FIVE,SB235,DB14,SR4,Z1245,RZ4][C,C,C,N,H]
\chemical[PB:Z3,ONE,Z0,SB3,CZ3,PE][N,H]
\chemical[ADJ1,SIX,SB1356,DB2,Z1236,DR6,RZ6][N,C,N,C,O]
\chemical[ADJ1,SIX,SB35,Z6][H,H]
\chemical[PB:Z3,ONE,Z0,SB28,CZ28,PE][N,H,H]
Chemical formula of Guanine
FIVE
draws a five-ring.RZ
draws substituents using names from the data given.ADJ1
moves another structure in the direction given adjacent to a
bond.Yeah, that’s it. Lots of fun and a source of endless frustration… :-)
NP: Grateful Dead—Mountains Of The Moon
Endlich Ferien!
Bei Trigonometrie machen wir draußen Mathe.
— Hoffentlich
regnet’s da!
Du kommst aus Kuba!
— Schalom!
Aufbewahrungsbehälter für radioaktive Violinen: Fidel Castor.
Ich bin bescheuert!
Das ist ja voll leer.
Was ist rund und stinkt?
— Ein Stuhlkreis!
Wenn die Augen von der Gummipuppe weiß werden, ausleeren!
NP: Nirvana—In Bloom
Yay, Dave Roberts cites me in his blog “Finding Lisp”; when he asked why so many Lisp projects use Arch:
The best thing I heard was from Christian Neukirchen who wrote and said it was “…because Lispers like to do it the Right Way.” Somehow, that sort of makes sense. Lispers certainly don’t follow the crowd. They look for good solutions to problems and they aren’t afraid to stick with something that isn’t winning the technology popularity contest. So, while the rest of the masses struggle on with CVS, it seems like a lot of Lispers are turning to Arch for its superior approach to change sets, branching and merging, etc.
I exchanged a few emails with Christian and as a result of his urging, I have started using Arch myself.
(I didn’t urge at all! I just told the truth :-))
So far, there were many Arch interfaces for Emacs, and a self-made repository browser contained the comment:
;; nbbba.el doesn't yet integrate with the other tla interfaces,
;; as time will tell which one of the few around will put through.
A mail from Matthieu Moy tells me:
That was true a few weeks ago, but today, tla.el and tilly.el (and recently mst-arch.el) joined xtla, which is now the Emacs interface for tla.
xtla calls itself “a very complete Emacs front-end for tla”.
I tried xtla before, and wasn’t too impressed of it, but a diff
against a more recent revision tells me that lots of functionality was
added. The archive browser feels a lot like mine but has lots of
additional features like viewing changesets, diffing to arbitrary
revisions etc. Furthermore, the code is a lot cleaner than mine,
since it uses ewoc
and not string twiddling for display.
Masatake Yamato even had a patch to make it use
tree-widget
to get a nice tree overview; he wanted to install that
patch soon. It seems to kicks ass now.
Cory Doctorow does civil obedience in the cinema, and they like it!
Ihr seid alle Atheisten! Ich bin ein Christ, ich war von Anfang an
Verlieren gewohnt!
NP: Hammerfall—Legacy of Kings
Eine halbe Woche noch bis zu den Ferien.
Back’ mir ‘nen römischen Kuchen!
Ihr könnt euch ja alle bescheißen.
—
Hab ich seit meinem Kindesalter nicht mehr gemacht!
Das war jetzt der Kurzdurchlauf.
Ich hab gestern dort schon zwei Tage verbracht.
Kompetzen
(was haben wir gelacht…)
Schrittschnitt
“Ein Bäuerchen machen” ist doch doppelsinnig, oder?
Morgen Deutsch-ZK!
David, a friend of mine, now blogs at livejournal: dasdingonesin.
XMLhack will not get updated anymore, however:
[…] drinking from the fountain of Berners-Leesian wisdom I note that cool URIs don’t change. Every endeavour will be made to keep XMLhack content online at the same URLs for the foreseeable future.
Thank you, and let’s hope you’ll start anytime again.
Dave Winer will open source Frontier. I haven’t yet used it, and I honestly don’t like Dave too much; but I enjoy open sources, let’s hope they choose the right license.
NP: Pink Floyd—The Thin Ice
Is it just me, or are things in daily life getting more and more digital?
You may not consider this to be a bad thing, but take note that almost everything digital is also very innatural; nature is, by definition, analogue. There is not just day and night; sunlight slowly fades in the evening.
Still, everything gets digital: While started with photography (anyone still buying analogue cameras?), we currently are digitalizing the media. Radio and television get streamed in digitally compressed formats all over the world. Music (mostly) gets recorded and mixed using computers; large parts of formerly used instruments get replaced by plug-ins that try to sound like them using digital synthesis and/or samples.
These instruments will never sound like they used to, and while inexperienced (and I don’t claim here to have better ears than you) listeners may not notice acoustically, I’m pretty sure they will notice by feeling different.
Don’t forget that we are analog devices: While digital things may look like the holy grail in our life, they aren’t. This is because they are too different, they misses the warmth of life. And while those digitalized instruments are “perfect” in some way, we aren’t. It’s really the small errors, glitches and uncertainties that make the music worth listening and interesting at all. It’s as Donald Knuth tells in the MetaFont-Book:
Musicians who use computers to synthesize their compositions have found that music has more “life” if its rhythms are slightly irregular and offbeat; perfect 1—2—3—4 pulses sound pretty dull by contrast.
However, the only way to have music on computers (which is a facility I definitely wouldn’t want to miss), is by digitalizing it. But then, please do that in the last step (you might even consider recording on vinyl), and don’t “click all the music together”. It will pay out.
It’s by the way interesting that this true for many, but not all arts. Computer graphics can definitely look great, but you won’t reach the detail and feel a “real” drawing has; you can’t, by definition. The devil is in the details. But it’s not, at least not that, true for poetry for example. It doesn’t really matter if you read it from a book or from a screen. This is probably because it is already digitized by putting it into words. I’m sure it would feel different if the original author read it aloud.
Heck, I can already myself in some years getting asked by my son watching a bug with magnifying glass, “Dad, this resolution really rocks! I can’t see a single pixel there.”
Or maybe, he will.
NP: Scott McKenzie—San Francisco (definitely recorded analogue)
Yay.
[Ghandi wird im gleichnamigen Film aus dem Zug geworfen:]
Jetzt komm! Messer raus und Reifen zerstechen!
Dracoola
Man muss die parallel zum Höhepunkt bringen?
Mehlmangel in Deutschland! Jetzt wird das Mehl schon mit Kokain
gestreckt!
Welche grammatische Form ist “Du hättest nie geboren werden sollen.”?
— Praeservativ defect!
Salary: Sellerie
NP: Die toten Hosen—All die ganzen Jahre
*ehem*:
Ich hab’s extra gelocht.
— Ich brauch aber vier Löcher!
Wenn ich einen See seh, brauch’ ich kein Meer mehr.
Die Sonne könnte morgen regnen.
(ja, zurzeit ist nix los…)
NP: Killing Joke—The Wait
Heute und gestern:
Tür zu ihr Vollfische!
Man müsste mal ein Begattungsunternehmen aufmachen.
Und wer kratzt das Hirn von der Wand?
— Bei dir gäb’s keins!
Die Opfer kann man an einer Hand abzählen: eine Million, zwei
Millionen, drei Millionen…
Hattest du schonmal ‘ne Fotze am Hals?
— Ja, bei der
Geburt.
As seen on #ruby-lang
:
* dblack 's ceiling totters on the verge of collapse
<dblack> a leak
<chris2> write a patch
NP: Pearl Jam—Daughter (On two legs)
Went on with development of Zyl. Now I have everything put nicely together in a single directory, so I can start with serious version control.
I also extended ruby-xslt
to support parameters which are essential
to me. I hope that patch will get included upstream. XML::XSLT is
really a nice library, but there are some license issues to clear.
Maybe a first release and a bit of documentation in this week, no, I wont promise anything.
IRC raw and uncensored:
<chris2> if i need to wash the dishes,
i automatically need to go to the bathroom :)
<dragonkh> chris2, my bathroomsis too small to wash dishes in
<dragonkh> even if I pee on the plates
<dragonkh> well they might all fit in the bath actually -
hmm interestin gidea
: <dragonkh> Germany was awesome in those days <dragonkh> booze, women, apfelstrudel and metallica - aah
This could make you think…
Mooooohntag:
Wir dealen mit Tempos!
hinausrauben
Die Merkel hat’s schon schwer.
— Und ihr Frisör erst!
Kohl ist die breite Masse der Partei.
Was für ein Arzt muss man sein, um eine Abschiebepraxis zu haben?
Wollen sie die Nutte hier oder zum Mitnehmen?
“Glotka” heißt alles: Tür, Fernseher…
— Also alles was
geklaut werden kann.
Die Zigarettenmarke der Arbeiter — Lucky Strike!
NP: Guns ‘N’ Roses—Knocking On Heaven’s Door
Today I hacked a prototype of zyl
, my framework for
REST-applications (which include dynamically generated websites,
database views etc.) based on Ruby and Webrick.
I already have pipelined data transformations, a flexible URI parsing
system (modeled like mod_rewrite
) and XML accessibility (XSLT only,
so far).
Initially, I used to pipe to xsltproc
, but one fork per page doesn’t
make the thing better than CGI, so I choose to use ruby-xslt
by
Gregoire Lejeune. They need a recent libxslt
, which is when the
trouble started. I’ll not tell you about the hacks I needed to make
that package compile for my debian…
I’ll probably model my CMS based on ideas described in
Toxical, which then can be
wget
-ted and be published on static servers (if needed).
NP: Lamb—Zero
Many people have their problems with lispy s-expressions because
they involve many parentheses. Especially if Lisp is coded in
the way it should, “like a waterfall”, that is: functional,
reusing values, avoiding sequences. Then code often looks like
this (example taken from sb-md5
):
(defparameter *t*
(make-array 64 :element-type 'ub32
:initial-contents
(loop for i from 1 to 64
collect
(truncate
(* 4294967296
(abs (sin (float i 0.0d0))))))))
Note the 9(!) closing parens at the end; these become difficult to maintain, especially if code gets changed in the middle of it.
Seth Gordon now describes something very clever in a mail to
Paul Graham: he invents the ~
-syntax. Code which looked like
(f (g (h x)))
now gets:
(f ~ g ~ h x)
Notice the reduction of parentheses. Again the first sample:
(defparameter *t*
~ make-array 64 :element-type 'ub32
:initial-contents
~ loop for i from 1 to 64
collect
~ truncate
~ * 4294967296
~ abs ~ sin ~ float i 0.0d0)
Suddenly, we have much less parentheses, but a more mysterious and—at least to Lisp users—more weird syntax.
Also note that there have been former tries to simplify multiple
parentheses, for example the superparentheses of Interlisp. They are
written as [
and ]
. ]
closes all parens upto the first [
,
or to toplevel.
Or, as we can read in the INTERLISP Manual:
The INTERLISP read program treats square brackets as “superparentheses”: a right square bracket automatically supplies enough right parentheses to match back of the last left square bracket (in the expression being read), or if none has appeared, to match the first left parentheses, […]
Now the code would get:
(defparameter *t*
(make-array 64 :element-type 'ub32
:initial-contents
(loop for i from 1 to 64
collect
(truncate
(* 4294967296
(abs (sin (float i 0.0d0]
This looks even more weird than the ~
-syntax because it is visibly
unbalanced. This is probably the main reason that the superparentheses
didn’t made it into Common Lisp.
I, for myself, however consider the ~
-syntax to be an interesting,
refreshing idea for lisp and hope Paul Graham will implement them.
If not in the core language, they are at least possible using a reader
extension. Maybe I code them for myself in Common Lisp. Mhmmm…
Heute gab’s:
Oben-Ohne-Macht
Andre Agassi ist jetzt ja Grafiker!
Da wird mein Stopfen so dick!
Ich hab auch ‘nen Blautick, aber nur am Wochenende von acht bis
drei.
NP: Bob Dylan—Spanish Harlem Incident
I made seven new subthemes for this website, which you can access using the styleswitcher from a list apart just under the title of the page. (You can also use View -> Use Style in Mozilla and Firefox, but then your change won’t be saved.)
All pictures are from stock.xchng, a really great site for free stock photography. Thanks a lot to all the photographers there!
I’m also thinking about a new default theme for “chris blogs”, I think “Rainy Window” would be nice.
BTW, on ashidakim.com, there is a nice collection of english Zen koans:
These koans, or parables, were translated into English from a book called the Shaseki-shu (Collection of Stone and Sand), written late in the thirteenth century by the Japanese Zen teacher Muju (the “non-dweller”), and from anecdotes of Zen monks taken from various books published in Japan around the turn of the 20th century.
Nice read.
NP: Bad Religion—The Lie
Richard P. Gabriel released some of his CLOS-related papers on his home page, http://www.dreamsongs.com
I got:
The Common Lisp Object System by Linda G. DeMichiel
Common Lisp Object System by Linda G. DeMichiel and Richard P. Gabriel
The Common Lisp Object System: An Overview by Linda G. DeMichiel and Richard P. Gabriel
Common Lisp Object System Specification, 1. Programmer Interface Concepts and 2. Functions in the Programmer Interface by Daniel G. Bobrow, Linda G. DeMichiel, Richard P. Gabriel, Sonya E. Keene, Gregor Kiczales, and David A. Moon.
CLOS in Context: The Shape of the Design Space by Daniel G. Bobrow, Richard P. Gabriel, Jon L White
CLOS: Integrating Object-Oriented and Functional Programming by Daniel G. Bobrow, Richard P. Gabriel, Jon L White
… so I have plenty to read. :-)
NP: Foo Fighters—I’ll Stick Around
…, die üblichen Zitate:
Was ist dein Puls?
— 69 bpm!
— bpm? Des hoißt
mpm: Mal per Minute.
Ich kauf’ mir jetzt einen Opel Mantra.
— Und ich mir einen
Opel Tantra!
Herr Becker mit ihrer Frau.
Du Popo!
Du hast mein Misstrauen verbraucht!
Anus Bräter
[meint: Anus praeter]
Ich schreib “Oh Kot!”, das ist umweltfreundlich.
Ergo, so ein verficktes Land…
Während Herr Rock uns ermahnte, kein Schuleigentum zu zerstören, ließ er den Adapter für den Fernseher fallen…
Die Evangelischen haben ja Karfreitag als höchsten Feiertag…
— Für mich ist das Schützen!
Im Lehrerzimmer ist alles kaputt.
— Oder gestört…
Was passiert, wenn man sich einen Döner ans Ohr hält?
—
Schweigen der Lämmer!
NP: Beatsteaks—Hello Joe
As you probably may have noticed (except when reading this blog via RSS), I did a page redesign because I got bored by the old one.
The new one is about barcodes and other stuff that just looks cool. :-)
BTW, the barcode in the entry titles reads “chris” using “Code 128-B”. It was generated by GNU Barcode, a nifty tool. The header picture is by stock.xchng, and the background image was made with GIMP’s Filters -> Color -> Smooth Palette… tool.
Mail me any opinions on it!
NP: Bob Dylan—House of the Rising Sun
*Räuspert sich* — Sind sie erkältet?
— Das kommt vom
Alkohol!
Sind sie auch nett zu uns?
— Wenn i des sag, dann bin i an
Schwuler.
Die sind ja schuld an allem, die Amerikaner.
Da bin ich heimgefahren, und hab’ mich während dem Fahren umgezogen!
Wieso gibts in Polen soviele Kreisverkehre?
— Weil die
Lenkradsperre noch drin ist!
Gebot im Hinduismus?
— Gewalttätigkeit!
[meint: Gewaltlosigkeit]
Die Notenskala ist zwar ‘ne andere, aber immer die gleiche.
Ich werde gewisse Einflüsse geltend machen!
— Ich werde gewisse
Ausflüsse…
NP: Tori Amos—Love Song (The Cure)
Gewisse Schulstunden zeichnen sich halt doch ab:
Net wegen den Korkenzieherlocken oder dem Brustumfang, sondern weil
sie als Referendarin weniger Unterricht hat.
Ich war auch auf’m Bahnhof!
— Da verdienst du auch dein
Geld!
Wir fahren mit dem IRE?
— Mit einem irischen Zug?
—
Des heißt IRA!
So g’scheit seit ihr nämlich au it!
Ach des soll ein Franzose sein?
— Ich dachte, des wär so
ein scheiß Deutscher!
Sie müssen nachts 9Live schauen, nicht WDR!
Wir sind doch nicht im Irrenhaus!
— … da ist wenigstens
das Personal normal.
Ich hoffe ich krieg mal so Haare wie meine Mutter, die hat voll
die fetten Haare!
— Wo?
Wenn du zuhause mithelfen musst, hast du dann etwa ein weißes Hemd an?
— Nein, er hat gar nichts an!
NP: Dan Bern—God Said No
Yesterday I recalled a story my former History teacher told us (Jürgen W. Conzelmann, RIP), which I think is worth to know:
He has been in Berlin with a class of him, and there was something quite important—I think it was a state visit, but I’m not sure—so the policemen roped off some very important main streets of Berlin. They also shutdown all the traffic lights on their crossings. A traffic chaos was on it’s way.
After the event was over, it would have been tedious work for the policemen to tell all those waiting cars at both sides of the street where to go. If they would just go and turn on the traffic lights again, it would have been even worse: In minutes of time, the biggest honk-concert ever would have started.
So they did something very clever and impressive: They just went and kept the traffic lights off.
Contrary to what you may think, this was no problem at all: Short after, the streets were open again and the traffic jam broke up. Everyone had been driving more careful, you look more at others if the traffic lights are off. Also, common sense seems to be used a lot more.
Sometimes it’s just better not to regulate everything, but let it regulate itself.
NP: The Human Echo—How’d You Find Me