Ubuntu on the iBook
I just tried the Ubuntu Hoary Live
CD on my
iBook and it worked pretty well. It boots up just fine and includes a
nice Gnome desktop. I had already tried Warty on my
Athlon XP, but Hoary feels even better and has less rough edges.
Still, there were some things that didn’t work that well: I think the
sound is quieter and a bit more noisy than on OS X, probably the
driver is not yet perfect. Airport Extreme is still not supported
(Not really their fault, Broadcom should open their damn drivers.).
And the damn CPU fan spins up far to often!
The biggest showstopper was the lack of Suspend. I really need that
when I’m on notebooks. When ACPI (or whatever is needed) works out of
the box, a new partition on my iBook is a sure thing for Ubuntu. (And
just a matter of disk space, oh well…)
NP: Dan Bern—Too Late To Die Young
FramerD
I’ve been playing with FramerD recently, and I think I’m gonna
write a Ruby interface to it.
FramerD is an Object-Oriented Database which was orignally made for
AI, but I think you can use it for storing just about everything.
The actual fun is the language you use to talk to FramerD: a dialect
of Scheme. As a sample, I’ve imported my local ruby-talk archive
into it. This piece of code does that:
(define ruby-talk (sorted (getfiles "/home/chris/Mail/ruby-talk")))
(define mail-pool (use-pool "mail.pool"))
(define mail-index (use-index "mail.index"))
(doseq (mail ruby-talk)
(lineout mail)
(define error
(signals-error? (let ((frame (read-mime (filestring mail))))
(fadd! frame 'obj-name (fget frame 'SUBJECT))
(let ((ref (fget frame 'REFERENCES)))
(if ref
(fset! frame 'REFERENCES
(reverse (tx-segment ref
'(+ {" " "\n"}))))))
(frame-create mail-pool frame)
(index-frame mail-index frame 'FROM)
(index-frame mail-index frame 'MESSAGE-ID)
(index-frame mail-index frame 'REFERENCES))))
(if error
(lineout "error on " mail ": " error)))
(commit-pool mail-pool)
(commit-index mail-index)
Now, I can easily query the datastore. For example, get all mail by me:
(find-frames mail-index
'FROM "Christian Neukirchen <chneukirchen@gmail.com>")
Or, get all my Subject:s:
(get (find-frames "mail.index"
'FROM "Christian Neukirchen <chneukirchen@gmail.com>")
'SUBJECT)
{;; There are 14 results
"Re: Collecting list of most wanted libraries and apps to port to\n ruby"
"Merry Christmas"
"[ANN] Nukumi2 0.1"
...}
It’s a wonderful thing and would make a great backend for a Ruby OODB,
I think.
NP: Bob Dylan—Stuck Inside Of Mobile With The Memphis Blues Again
Comparing Bible Translations
Donald Knuth once wrote
a book called 3:16 Bible Texts
Illuminated.
In this book, he analyzes verse 16 of the 3rd chapter of each book in
the bible.
Yesterday we talked in #ruby-de about Onan (Gen 38, 8-10), of whom is
delivered to practice the “coitus interruptus”. However, this was
not clear by the german Luther
translation
of the bible:
Aber da Onan wußte, daß der Same nicht sein eigen sein sollte, wenn
er einging zu seines Bruders Weib, ließ er’s auf die Erde fallen und
verderbte es, auf daß er seinem Bruder nicht Samen gäbe.
(Poor, but literal translation:
But because Onan knew the semen should not be his own, when he
penetrated his brother’s wife he dropped it on the earth and ruined
it, not to give semen to his brother.
). What is described is not the coitus interruptus at all, it seems
to be masturbation. BTW, this story is also the reason the german
word “onanieren” (masturbate) exists.
Now, biblegateway.com contains a lot
of bible etexts of different translations, so just for fun, I looked
at all of them. And I think I made an interesting discovery: The
actual semantics of the text vary a lot among the translations.
First, Young’s Literal
Translation:
and Onan knoweth that the seed is not [reckoned] his; and it hath come
to pass, if he hath gone in unto his brother’s wife, that he hath
destroyed [it] to the earth, so as not to give seed to his brother;
Since this is supposed to be a literal translation, I expect it to
carry the same semantics as the Hebrew original text. (This may not be
true, but let’s assume it.)
Here is the King James
Version
of that section (all emphasis following is mine, of course):
And Onan knew that the seed should not be his; and it came to pass,
when he went in unto his brother’s wife, that he spilled it on the
ground, lest that he should give seed to his brother.
Notice that “destroyed” and “spilled” is quite different, isn’t it?
Next, New American Standard
Bible:
Onan knew that the offspring would not be his; so when he went in
to his brother’s wife, he wasted his seed on the ground in order
not to give offspring to his brother.
“seed” has changed here to “offspring”. “destroyed” got “wasted”.
Here is the New International
Version:
But Onan knew that the offspring would not be his; so whenever he
lay with his brother’s wife, he spilled his semen on the ground to
keep from producing offspring for his brother.
Aha! Suddenly, he lays with his brother’s wife not once, but multiple
times. (Interesting, because god kills him because of that.) The
Message,
a recent translation also says “whenever he slept with his brother’s
widow”.
The version included in the Amplified
Bible
blurries the actual action:
But Onan knew that the family would not be his, so when he cohabited
with his brother’s widow, he prevented conception, lest he should
raise up a child for his brother.
The New Living
Translation
is very easy to understand (written in 1996, by the way):
But Onan was not willing to have a child who would not be his own
heir. So whenever he had intercourse with Tamar, he spilled the
semen on the ground to keep her from having a baby who would belong
to his brother.
“to have intercourse”, nice. The New International Reader’s
Version
puts it even more romantic:
But Onan knew that the children wouldn’t belong to him. So every
time he made love to his brother’s wife, he spilled his semen on
the ground. He did it so he wouldn’t produce children for his
brother.
Quite a contrast with the Contemporary English
Version
(1995):
Onan knew the child would not be his, and when he had sex with
Tamar, he made sure that she would not get pregnant.
Again, the actual action was not delivered. (And don’t forget that
the coitus interruptus is not a safe way of prevention!)
The New King James
Version
somehow makes me think of transistors:
But Onan knew that the heir would not be his; and it came to pass,
when he went in to his brother’s wife, that he emitted on the
ground, lest he should give an heir to his brother.
Somehow, there are quite a lot of possibilities to influence readers
of bible translations. Now if we just knew what actually the intent
of the writers was…
NP: Jack Johnson—Wasting Time
(this was not on purpose!)
Dan Bern Digital Archive
I’m so happy I found this true gem of Dan Bern
bootlegs. It contains over 30
recordings of Dan Bern’s live shows.
In case you don’t know him, Dan Bern is
probably one of the best American songwriters around, and probably one
of the most controversial too. His lyrics have to taken with a
grain of salt and be read carefully before you can say anything about
them, take for example
Hiroshima
or
Swastika.
On the other hand, how could anyone possibly write such genious lines
like this (which is from I Need
You)?:
Walking around the happiest place in the world
But all I do is wonder if your hair’s still curled
South of Brownsville, Texas, South of Miami Beach
But all it means to me is that you’re further out of reach
Every where is sand and sun, blue sky water too
I need you
…
So here’s the truth at last, I tell you, Hemingway is dead
And everybody wants to find a steak that’s slightly red
I thought I could escape myself by just not getting dressed
I thought I could escape you by coming to Key West
Sometimes you get lost and you don’t find something new
I need you
Listening to Paradise Lounge (October 2004) right now. Great show
(and a nice cover of “Basket Case” by Green Day).
NP: Dan Bern—Seventy Three
Rock, Scissors, Paper
There is a brilliant
quiz taking
place on ruby-talk: You are supposed to write
an bot to play Rock, Scissors, Paper.
I had sent in these
players
(Arranged in strength, in local tests most winning first):
CNBiasInverter: Choose so that your bias will be the inverted
opponent’s bias.
CNIrrflug: Pick a random choice. If you win, use it again; else,
use a random choice.
CNStepAhead: Try to think a step ahead. If you win, use the choice
where you’d have lost. If you lose, you the choice where you’d
have won. Use the same on draw.
CNBiasFlipper: Always use the choice that hits what the opponent
said most or second-to-most often (if the most often choice is not
absolutely prefered).
CNBiasBreaker: Always use the choice that hits what the opponent
said most often.
CNMeanPlayer: Pick a random choice. If you win, use it again; else,
use the opponent’s choice.
It was a great fun, and the contest is still running for this week.
Sit down and code!
NP: Dan Bern—Crossroads
Bunny suicides
Some of these Bunny suicides are
just too great. :-)
Update: Where did it go?? sniff
NP: Interpol—Take You On A Cruise
Umlauts and Carbon Emacs
I finally found out how to enter special characters the right way in
Carbon Emacs. Previously, when I hit “ä” and the likes, it would tell
me about “Undefined keys” and the like. Interestingly, the character
C-q ä on my german keyboard creates a totally different character
than it’s supposed to be (0x8a vs 0x8e4). I helped myself adding
these characters with TextEdit afterwise, well knowing that this
approach can’t be the whole truth.
However, this is now fixed. I simply added
(set-keyboard-coding-system 'mac-roman)
to my .emacs and now I can enter the correct characters with a
single keypress.
I still haven’t found out how to make Emacs actually display these
characters, though: I still only see empty boxes. Not that bad,
but not perfect either. Comments on this would be very welcome.
Update 30jan2005: I fixed that issue! The code you need in your
.emacs is:
(create-fontset-from-fontset-spec
"-apple-monaco-medium-r-normal--9-*-*-*-*-*-fontset-mac,
ascii:-apple-monaco-medium-r-normal--9-*-*-*-m-*-mac-roman,
latin-iso8859-1:-apple-monaco-medium-r-normal--9-*-*-*-m-*-mac-roman,
mule-unicode-0100-24ff:-apple-monaco-medium-r-normal--9-*-*-*-m-*-mac-roman")
(set-frame-font "fontset-mac" 'keep)
(add-to-list 'default-frame-alist
'(font . "fontset-mac"))
NP: Interpol—Not Even Jail
Reden ist Schweigen
Mal wieder gesammelte Werke in Reinform:
Space towel
Reden ist Schweigen, Silber ist Gold.
Vatinin
[meint: Valentin]
Macht keine Witze über Bulimie. Das ist zum Kotzen.
Und ich, hacke Zug aus’m dicht.
Womit kann man jemanden betäuben?
— Mit Chlorophyll!
[Reden über Reißnägel in den Füßen] … nur das Reinstecken tut
weh, danach merkt man nix mehr.
— [Lehrer kommt vorbei] —
Nicht so wie sie denken!
Hilft AIDS gegen die Pille?
Wenn ich du wäre, würde ich mal aufpassen!
—
Und wenn ich sie wäre, wäre ich krank. Dann hätten wir jetzt
nämlich frei.
NP: Bob Dylan—Clean Cut Kid (Rough-Mix)
Tagged Entries
Today I extended Nukumi2 to use Technorati
Tags for each entry’s
categories. This means you can easily find my entries about Ruby by
looking at the “Ruby” Tag Site.
Thanks a lot to _why who mentioned
this on RedHandled.
NP: Interpol—Obstacle 1
Move to chneukirchen.org done
If everything worked correctly, the whole blog should have been moved
as proclaimed to chneukirchen.org now.
As a nice side effect, I’ve updated my templates to feature Google
search and Technorati.
Thanks to Nukumi2, I only had to change the URI of the blog once,
and add a simple Rewrite rule on kronavita.de.
Update: Due request, I’ve fixed the style of this page to look
readable with Safari too. Please reload your stylesheets.
NP: Interpol—Say Hello To The Angels
chneukirchen.org
I finally managed to switch my webhoster. I’m currently moving most
content of http://kronavita.de/chris over to
http://chneukirchen.org.
Should be doable without breaking too much links using more or less
intelligent mod_rewrite rules… Expect the site to be moved next
week. Old content will continue to stay here, tough.
Now, I figure what’s the best way to mark darcs
repositories as outdated. Probably the “message of the day”.
Thanks a lot to The Internet Company for
the amazingly quick setup (one hour including registering a .org!). :-)
NP: Juli—Kurz vor der Sonne
Converting BlueCloth to PDF
I’ve been posting my XSLT stylesheet for conversion of
BlueCloth-generated HTML to ConTeXt on ruby-talk (you can find it
here, too: http://kronavita.de/chris/data/md2context.xsl).
Patrick Grundlach asked me why I used XSLT instead of ConTeXt’s XML
handling macros… Now, that was a good question. I totally forgot
about these actually (I first wanted to use xmltex, but the XSLT
approach is a lot simpler, especially if you know XSLT already. And
using XSL-FO would have been way overkill.)
So, I looked into the fine
manual and am
quite delighted now, it looks very easy to use… I could imagine
converting above stylesheet to ConTeXt directly very well.
Somehow, ConTeXt always surprises me again…
NP: Bob Dylan—Sweetheart Like You (Rehearsals)
Magic Mush-Room
Da fängt das Jahr doch wieder gut an:
Was heißt, “er hat sich hochgefickt?”
— He fucked himself
upstairs.
ROFLMAOZETUNG
Was wäre, wenn Hitler ein Geek gewesen wäre?
— Dann
hätte es das 1024-jährige Reich gegeben!
Neulich hat mich der Zoll beim Brechmittelschmuggel
erwischt… dann haben sie mir schnell mit Drogen gefüllte Kondome
verabreicht.
Ja, beschreib’ mich, du Sau!
Ich kleb’ ein Plakat an meine Zimmertür: “Magic Mush-Room”.
Jetzt mir eigener Kategorie!
(Und ich fluche über den Emacs-Aqua Unicode-Support. *grpmf*)
NP: Mark Knopfler—Everybody Pays
Got RAM?
Updated my iBook’s RAM so I now have 768 megabytes. Very nice that
Firefox is a lot quicker now. :-)
Unfortunately, that killed my uptime:
16:26 up 12 days, 5:25, 5 users, load averages: 1.36 1.08 1.06
NP: Pearl Jam—Small Town
In Munich
Right now, I’m sitting in a Munich cafe (San Francisco Coffe Company
at Odeonsplatz) and enjoying the (unfortunately quite expensive)
connectivity I have here.
Got a bit productive lately and wrote
a BlueCloth to ConTeXt converter. Works pretty nicely now and
converts a large part of the *Cloth-typical HTML to TeX (I touched
XSLT after over three months again). Maybe I’ll make a first
release tomorrow, when I’m back home.
the beginnings of a new object-oriented database. Featuring object
serialization to source-code (so you can load with eval only
(Whine, kbrooks!)) and lazy loading (just-in-time on access of
referenced objects). It’s still in a very early state, can’t tell
about it’s usefulness in general yet.
It uses the Hash-Ducktype API ([], []= and delete so far) and
really uses SDBM so far.
NP: Madonna—Die Another Day
Haskell humor
Who said Haskellers can’t be funny?
The EuroHaskell 2004 Bathroom
Door
Also note the location description on the front
page:
Just follow the arrow (>>>) to the conference area and bind (>>=) to
The Monad (the official EuroHaskell pub).
NP: Pearl Jam—Corduroy
XML::Simple
Sometimes, you wonder if other people can read your mind. Only
recently i blogged about different XML
APIs and an anonymous reader asked
in the comments why there is no good libxml2
binding for Ruby.
Well, there you are:
XML::Simple
[darcs
repository]
XML::Simple provides a simple (who’d have guessed?) binding to—so
far—the DOM and Pull API of libxml2. Jürgen Mangler wrote the
biggest part, I threw in a fair part of the Pull API and lots of design
issues. And the Pull API rocks. :-) It’s almost 6 times faster than
the Ruby/DL binding (and hasn’t yet crashed onto me ;-)).
Even more scary, there has been a new release every day so far. ;-)
NP: Tom Waits—I Hope That I Don’t Fall in Love With You