Off to Potsdam: Attending S3
Tomorrow I take the train to
Potsdam to attend the
Workshop on Self-sustaining Systems
(S3), which means I
get the chance of meeting rpg and many other
people that worked on Lisp, Self and related cool stuff in real life.
The stuff I’m working on got not
finished by far, but maybe I can write down enough on the train to
explain it to interested parties.
If you want to hook up, don’t hesitate to contact
me. I’m there until Saturday
morning.
Anarchaia and chris blogs will resume publishing Sunday, May 18.
NP: Manu Chao—Politik Kills
Noch mehr Bücher
Die Stabü
verkauft wieder ihre altenwenig verliehenen
Bücher zu “Pfundspreisen”.
Ergo ergattert (bzw. “vor dem Papiercontainer gerettet”):
Christine Wolfinger, Keine Angst vor UNIX/Linux. 10. Auflage.
Dirk Engel, Klaus Spreckelsen, Das Einsteigerseminar Ruby. 1. Auflage.
Ludwig Feuerbach, Anthropologischer Materialismus. Ausgewählte
Schriften, Band I und II. Herausgegeben und eingeleitet von Alfred
Schmidt.
Paul Feyerabend, Wider den Methodenzwang. (Hurra!)
Bertrand Russell, Skepsis.
Benoît B. Mandelbrot, Die fraktale Geometrie der Natur.
Oswald Spengler, Der Untergang des Abendlandes. Band I und II.
Eignet sich auch, um Leute totzuschlagen.
Summa summarum 145€ gespart. Lohnt sich!
NP: Cat Power—Woman Left Lonely
Celebrating Three Years of Anarchaia!
It has been another
year of your
favourite (near) daily favourite dose of links, IRC quotes, lyrics
and quotes?
Lots has happened in that time! Tumblelogs really turned mainstream,
new platforms like Soup appeared, and
tumblelogging was featured at the Telegraph, Chaosradio Express and Rails Podcast.
Time for the yearly
statistics
(previous year in parentheses):
- Anarchaia as of today consists of
- 996 posts (669)
- 18499 snippets (13555)
- 12797 links (9445)
- 2100 pictures (1440)
- 1148 IRC quotes (979)
- 610 #ruby-lang quotes
- 371 #ruby-de quotes
- 34 #rpa quotes
- 17 #rubyist.org quotes
- 14 #haskell-blah quotes
- 10 #haskell quotes
- 10 #lisp quotes
- 82 other quotes
- 1860 lyrics (1242)
- 379 quotes (311)
- 205 thoughts (138)
- totaling 4.8 megabytes, 443416 words and 85119 lines.
Thanks for all your kind mails, contributed links and other
pleasantness. I still enjoy it as much as I hope you do as well.
However, Anarchaia will have to change in the future: when my study
begins (roughly October), I won’t have the time any more to do a daily
issue. But I will try my best to make at least a weekly version of
it.
Now, on to another year of tumblelogging!
(BTW, chris blogs turned four this week as well. 48 posts this year
and still no new blogging software. I’m working on it, really!)
NP: Grotus—Good Evening
Off to Seelbach
Tomorrow I’m going to leave early for
Seelbach deep in the Black Forest
where I’ll spend the rest of the week educating myself on civil
service (which I finished for two thirds already, but hey, who cares).
Anarchaia and chris blogs will resume publishing Saturday, March 29.
Please notice that this means I will not be able to attend Euruko
2008 in Prague this year. That’s sad,
but I can’t help it (not that I’d have anything to talk about).
Enjoy the program.
Regarding conferences, I am planning to go to the Workshop on
Self-sustaining Systems in May
and RailsConf Europe
in September (I hope there will be a CabooseConf Europe, really).
I expect to have occasional Internet access in Seelbach, else mail
will have to wait. It’s my first travel with the
EEE.
NP: Grateful Dead—Promised Land
10 zsh tricks you may not know...
…yet, that is. Or if you do, you read the man page pretty well. :-)
zsh has gazillions of features, but I think these are pretty useful
for daily use:
- ESC-. inserts the last argument of the previous history line,
repeat to go back in history. (Same in Bash.)
- ESC-' quotes the whole line. (Useful for
su -c or ssh).
- ESC-q clears the line and inserts it again on the next prompt,
allowing you to issue an interim command.
<(command) returns the filename (in /dev/fd if supported or as a FIFO)
of the pipe given by command for reading. (For example,
use diff <(ruby foo.rb) <(ruby-1.9 foo.rb) to compare two program outputs).
cd old new substitutes old with new once in the pwd and
chdirs there.
!$ expands to the previous history line’s last argument, !^
expands to the first argument, !:n to the n-th argument.
=foo expands to the full path of foo in the PATH (like which foo).
for src in *.c do ... done can be abbreviated to for src (*.c) { ... }
(which is actually memorizable). You can even drop the curly braces
if you don’t have ; in the command.
<42-69> globs numbers between 42 and 69. Drop the number(s) to make
it open-valued. {42..69} expands to the numbers between 42 and 69.
*** expands recursively like **, but follows symbolic links.
- Addition! ESC-RETURN inserts a literal newline, so you can edit longer commands easily.
More tricks:
Happy hacking.
NP: Shriekback—Mistah Linn He Dead
Sentia: My OLPC
After two months of hassle, finally my
OLPC got though German customs.

Sentia was the goddess who
oversaw children’s mental development. It is also said it was the
goddess who gave awareness to the young child.
Tweaks I did and will do are, as usual, on vuxu.
It’s a really nice thing, but it wouldn’t hurt if it was quicker and
had more RAM.
NP: DJ Acucrack—Return of the Optimizer
Introducing gitsum
The major showstopper before I was seriously considering going to Git
was the lack of an darcsum-like
interface for Git.
Yesterday night I finally decided to write it.
git-status (included as git.el in the Git distribution) is usually
good enough to use, but I often like to do partial commits, that is,
commit only parts of a file. Git can do that now for some time, using
git add --interactive or frontends like
git-hunk-commit
or git-wt-add. Still, there
was no way to do it conveniently in Emacs.
Let me introduce gitsum:

You can freely delete hunks you don’t want to commit, split big
changes, or even edit the patch directly if you feel adventurous. It
also integrates into git-status so you can easily switch between these
frontends.
Gitsum is hosted at http://github.com/chneukirchen/gitsum (which I
highly recommend) and is mirrored at http://git.vuxu.org/, patches and
additions are welcome! It’s still very fresh and has some rough
corners, but I already notice my increase in productivity.
NP: Twelve Tone Failure—As I Hit the Floor
Tinkerbell: My Eee PC
Yesterday, my Eee PC and so I spent most of
my time setting it up. I replaced the pre-installed distribution with
grml, everything is documented on
vuxu, as usual.
The hostname is tinkerbell, for good reasons:
Though sometimes ill-behaved and vindictive, at other times she is
helpful and kind to Peter (for whom she apparently has romantic
feelings). The extremes in her personality are explained in-story by
the fact that a fairy’s size prevents her from holding more than one
feeling at a time.

Actually, the size prevents it from holding more than one window at a
time. :-) However, with help of
dwm, it is really usable. I just
need to get adjusted to the fairly small keyboard.
#eeepc on FreeNode has been proven useful while setting up everything.
NP: Woody Guthrie—Ramblin’ Blues
Review: Ruby on Rails Enterprise Application Development
Ruby on Rails Enterprise Application Development
by Elliot Smith and Rob Nichols.
Packt Publishing, Birmington 2007.
[Full disclosure: I have received a copy of the book in exchange for
this review.]
The book targets Rails beginners that have a little prior knowledge of
Ruby and Ruby on Rails and aims to accompany them on their way to
Rails mastership. It focuses on the iterative and stepwise
development of a small CRM system for a small company. Since the
chapters don’t anticipate, it can be read straight forward,
while the reader continuously learns and refines his skills.
It starts with a general introduction on why to use a web-based
client-server architecture for business applications, and then
recommends Rails to implement them, last but not the least because it
is open source and enables easy testing.
Next, the reader is introduced to basic database design, elementary
normalization and how Rails’ ORM works. Then, it discusses Rails
naming conventions and includes a list of reserved words in Ruby. A
list of reserved class names is unfortunately not included, it would
have been very helpful since Ruby already claims some very generic
class names (Date, Thread, etc.).
Contradictory to the introduction, now nevertheless follows a tutorial
on how to setup and install Rails. The book was written before Rails
2 and generally speaks of outdated versions, however, most of the
content is not affected by this—still, there may be some traps if
one tries to follow it with more recent Rails versions. After setting
up Rails, the installation of a database (MySQL throughout the book)
and a revision control system (Subversion) is explained.
After these preliminaries, a Rails project is created and the book
explains the Rails directory structure. Tables are set up, migrations
introduced, and the reader learns about the essential ActiveRecord API
with finds and relationships. Validations are addressed as well; the
regular expression for email checking is broken. After a quick
overview of unit testing and Test::Unit (TDD is discussed but not
used), the reader can check in the code for the first time.
Now, they generate controllers, introduce ERB and pagination (using
the built-in paginate), how to do links and layout and furthermore
how to use partials and flash. The chapter also shows how to write
functional tests.
The application is ready for a first deployment. After an overview of
the typical Rails hardware requirements, the book explains how to
set up Mongrel.
The next chapter focuses on user experience. The authors introduce
routes for better bookmarking, show how to add search and input
validation and finally give examples of using AJAX for autocompletion.
They also point out that AJAX should be used sparingly and only when
it makes sense. The chapter also makes an excursion on how to setup
Instiki as a help system.
After this, the book deals with improving error handling,
authentication (for which they use unsalted password hashing) and file
uploads. After displaying a primitive version of file uploads, it is
shown how to install plugins and how to use acts_as_attachment.
Then, more serious deployment gets addressed. They introduce
Capistrano, explain how to set it up and then use it for upgrading,
downgrading and database-related tasks. A list of common problems is
provided to help fix likely issues. The authors also explain how to
install automatic start-up scripts, session cleaning and log rotation.
The rest of the chapter deals with optimizing the Rails application:
how to find and identify the bottlenecks with profiling and how to
speed up Rails with the different kinds of caching available or by
using eager loading. Finally, they also address scaling by using
multiple Mongrels and Apache as a reverse proxy and static file
server.
The last chapter, “Down the Track” tries to school the reader when
it’s okay to break Rails’ conventions. They give situations where the
use of custom SQL or using multiple databases is required or
advantageous. The chapter also outlines general virtues of a business
application developer, such as the importance of understanding the
business processes, that successful applications primarily need to
yield profit, that automation is good, and reporting important.
The book is concluded by an appendix showing how to setup your own Gem
server.
Conclusion: The book does not satisfy the introductory claims: it is
often too detailed on the basics and too shallow on the crucial things
and sidetracks the reader into unimportant issues. The writing is
occasionally clumsy and sometimes overuses the passive voice to
incomprehensibility. Some code examples are syntactically invalid and
a few Ruby-related commentary plainly wrong. Throughout the text,
replace all occurrences of “property” by “attribute” and of “ampersand”
by “commercial at”. Various other mistakes sprinkle the book,
occasional typos, random font changes and weird spacing suggest the
book was produced in a hurry. People with typographic sense will
be shocked by the table of contents and complete and the utter lack of
typographical quotes. The few illustrations are reproduced in a very
low resolution.
Still, the book may be useful for Rails beginners that are interested
in the development of an “enterprise application” and would like to
know what else there is to keep track of. The complete Rails newbie
however will stumble due to the preknowledge of Ruby, whilst the
slightly advanced Rails developer will hardly learn anything new and
would be better off with specific books on deployment or system
administration to extend his knowledge.
Rating: 3 of 5 points.
NP: Minutemen—Love Dance
Unsubscribing ruby-talk
To: ruby-talk-ctl@ruby-lang.org
Subject: unsubscribe
From: Christian Neukirchen <chneukirchen@gmail.com>
I finally got around unsubscribing ruby-talk, which has a feeling of
both pity and relief. I didn’t read it for the last months, and only
skimmed the overgrowing thread list. There was no way to keep up.
What I don’t want to miss are the software announces, therefore I set up
a quick’n’dirty RSS feed
to keep me up to date.
It’s been over three years and more than 800 messages. See you
somewhere else.
(Of course, I’ll continue to post my ANN’s there.)
NP: Morcheeba—Fear and Love
New Year's resolutions, again
Let’s check last year’s
resolutions.
Write more.
Lines on chris blogs: 3725 (2006) vs 3243 (2007). FAIL.
Lines on Anarchaia: 31421 (2006) vs 24436 (2007). FAIL.
Mails sent: 475 (2006) vs 561 (2007). FAIL.
Furthermore, I’d also like to write some longer pieces, maybe a tutorial or a book chapter. This is being worked on. I also wrote a
paper on Rack.
Release more.
Releases: 3 (2006) vs 4 (2006). PASS.
Projects made public: 5 (2006) vs 9 (2007). PASS.
Attend more.
Attended RailsConf. PASS.
Attended Euruko. PASS.
Not attended ICPF. FAIL.
Not attended 24C3. FAIL.
Contribute more.
Lines contributed to Rubinius: 0. FAIL.
Code more.
Language core implemented. PASS.
Nukumi2 replacement started. PASS.
6 PASSed, 6 FAILed: 50% success. Ah well.
A happy new year! And no more resolutions. :P
NP: Barry Andrews—Licking Honey from a Razor
Merry Christmas!
Frohe Weihnachten, ein schönes Fest, und einen guten Rutsch ins neue Jahr
wünscht euch Christian Neukirchen
Merry Christmas and a Happy New Year!
NP: Die Roten Rosen—Merry X-Mas Everbody
Zum vierten Advent
Biberach goes Web 2.0:

(Das Video von letztem Jahr gibts bei Google Video.)
Nachtrag: KD beschrieb das
Christkindle-Runterlassen
in seinem Tagebuch-Projekt “Tag um Tag”, das noch bis Ende Dezember
veröffentlicht wird (und auch danach hoffentlich erhalten bleibt).
Weihnachtliche Erfindungen von mir:
Weihnachtsbaumfolie: selbstklebend, vorne mit geschmücktem, hinten
mit beschneitem Baum als Motiv. Ans Fenster geklebt stellt sich
innen eine winterliche Atmosphäre ein, und von aussen siehts auch
schön aus. Und braucht keinen Platz.
Weihnachtsdöner: Mit Zimt!
NP: Woody Guthrie—Ship In The Sky
Zum dritten Advent
Erstmal ein Gedicht von Erich Kästner:
Morgen, Kinder, wird’s nichts geben!
Nur wer hat, kriegt noch geschenkt.
Mutter schenkte euch das Leben.
Das genügt, wenn man’s bedenkt.
Einmal kommt auch eure Zeit.
Morgen ist’s noch nicht soweit.
Doch ihr dürft nicht traurig werden.
Reiche haben Armut gern.
Gänsebraten macht Beschwerden.
Puppen sind nicht mehr modern.
Morgen kommt der Weihnachstmann.
Allerdings nur nebenan.
Lauft ein bißchen durch die Straßen!
Dort gibt’s Weihnachtsfest genug.
Christentum, vom Turm geblasen,
macht die kleinsten Kinder klug.
Kopf gut schütteln vor Gebrauch!
Ohne Christbaum geht es auch.
Tannengrün mit Osrambirnen—
Lernt drauf pfeifen! Werdet stolz!
Reißt die Bretter von den Stirnen,
denn im Ofen fehlt’s an Holz!
Stille Nacht und heil’ge Nacht—
Weint, wenn’s geht, nicht! Sondern lacht!
Morgen, Kinder, wird’s nichts geben!
Wer nichts kriegt, der kriegt Geduld!
Morgen, Kinder, lernt fürs Leben!
Gott ist nicht allein dran schuld.
Gottes Güte recht so weit…
Ach, du liebe Weihnachtszeit!
—Erich Kästner, Weihnachtslied, chemisch gereinigt
Wusstet ihr, dass der kleinste Adventskalender der
Welt
nur 8.4µm auf 12.4µm groß ist?
Wer noch eine Geschenkidee sucht,
wie wärs mit einer Bayrischen Tastatur?
NP: Stars—The Big Fight
Wie man die MacBook-Tastatur unter Leopard entnervt
Schon vor drei Jahren ärgerte ich mich über das
Apple-Tastaturlayout,
und seit ich nun ein MacBook
habe, ärgerte es mich noch
mehr, dass das Keylayout, das ich damals gefunden habe, nicht mehr
funktionierte.
Dem ist nun jedoch abgeholfen: Deutsch PC Leopard.keylayout ist da!
Einfach nach ~/Library/Keyboard Layouts/ kopieren, und in
“International…” auswählen… unter Umständen ist ein Logout
notwendig (bei mir nicht, ich musste aber Terminal.app, Finder und
Spotlight neu starten. Erneut einloggen ist wohl sauberer).
Relevante neue Keybindings sind:
Alt-7 {
Alt-8 [
Alt-9 ]
Alt-0 }
Alt-ß \
Alt-q @
Alt-+ ~
Alt-< |
Ansonsten sind alle Features bei den neuen Keyboards bzw. OS X 10.5 dabei:
Wo die Enter-Taste war ist nun Alt, und man kann Caps-Lock direkt in
“Keyboard & Mouse -> Keyboard -> Modifier Keys” abschalten oder auf
Control mappen (super für Emacser, und funktioniert jetzt auch so, wie man
es erwartet).
Erstellt wurde das Keylayout mit Hilfe von Ukulele und Tom
Gewecke, der mir dankbarerweise
German.keylayout aus Tiger zukommen lies.
Wenn ich jetzt auf dem Apple Keyboard statt Right-Alt nicht andauernd
Right-Cmd drücken würde (so wie auf dem MacBook proportioniert) wäre
alles perfekt. Übungssache.
NP: Rogue Traders—Voodoo Child