Front Page

Workshop on Self-sustaining Systems 2008

Sat May 17 12:51:36 +0200 2008

These are my personal notes from the Workshop on Self-sustaining Systems (S3).

[A quick note beforehand: The descriptions make use of a metric called “lines of code” (LOC), which widely is regarded as being insufficient for measuring program size. Due to lack of better means, I decided to mention them nevertheless. Take them with a grain of salt.]

The conference started after lunch, but we got there earlier so we had the chance to socialize with the HPI people already.

Ian Piumarta gave the first invited talk on his Late-bound lambda object architecture, wherein he decided to fight the fact that software tends to become too complex by finding out how much you can say with how little. He started by contrasting the three cubic miles of paper that is the US case law to Maxwell’s four tiny equations which are able to fully explain all electromagnetic phenomena.

Moving to software, he showed the source code line counts of some popular projects, and we could see, for example, that OpenOffice.org has more lines of code than the entire FreeBSD operating system. Comparing lines of code with the size of literary categories, he decided that 20kLOC, which roughly resemble a 400 page roman, are the maximum size of a program a programmer has the chance of fully understanding.

He continued explaining how it is possible to get much done in such a limited amount of code by showing off how simple things like shape rendering, which only consists of a few elementary transformations, is enough to render fonts and essentially provide a full graphical interaction system.

He gave a quick tour of other interesting ideas to be further investigated, such as multiple subjective perspectives, which result from the realization that objects have several roles, or regarding computation as “fields” (re)acting on particles, a concept which makes it easy to specify complex interactions between many objects.

Since predicting anything is difficult, he argues that it highly important to be as dynamic as possible, by using the fewest minimal abstractions that allow for any possible feature/paradigm to be added to the language/system.

His design combines functions and objects into the foundation of his system, COLA. Functions, represented as s-expressions provide the proto-behavior, while proto-structure expresses form by providing objects that messages are sent to. They provide the dichotomic base, since without function, form cannot be animated while function has no representation without form. This results in a self-describing structure.

(Actually, after the talk he told me they are trying to unify functions and objects into one thing, I’m very curious about the result.)

His talk was larded with memorable insight such as looking at GTK+ and noticing “C is highly deficient and wasteful” or encouraging the students to look at the “old” papers where technology was severely limited because “sometimes progress is behind you”.

The next talk was by Christophe Rhodes, who spoke on SBCL – A sanely bootstrappable Common Lisp. After a short overview of Common Lisp, he summarized the history of SBCL, which started as a fork of CMUCL in 1998. The main reason of the fork was that CMUCL was horrible to bootstrap and it actually wasn’t possible to compile CMUCL without already having the last version of CMUCL before that.

Christophe Rhodes emphasized the importance of a system being able to rebuilt itself from a “blueprint” since it makes the result a lot clearer, easier and predictable. He showed an example of a bug in a core data structure which was easily fixed by changing the structure and recompiling the system—without the ability to rebuilt from scratch, magic hackery would have been required to modify the existing structures to be compatible enough until they could replace themselves.

SBCL nowadays can be compiled using half a dozen of different CL implementations and does, once built, not any dependencies on the build environment.

This unusual level of self-sustainability has many benefits: it is more fun, enables quicker turnaround, makes the system more future-proof, and doesn’t limit improving the core of the system to hackers with magic abilities. Instead, every developer can work on the code because in the end it’s just another big Lisp program. Because of this, more people can help with the system and maintain it, thereby having more control over the destiny of the system as a whole.

Charlotte Heerzel was the next, presenting Reflection for the masses, in which she showed how to implement 3-Lisp using CLOS. She noticed that programming languages are made powerful by abstractions, but there are cases where one wants to get rid of them, for example if you need access to the current continuation.

Reflexive languages, on the other hand, allow the programmer to control internalization, normalization, and externalization within the language.

She showed lots of code, implementing a small Lisp interpreter in CPS and then adding structural reflection by exposing the internal data structures as abstract data types and behavioral reflection by introducing reflective-lambda, which has access to the current continuation, environment and code. For example, this allows to implement when as a first-class function.

The first day ended with two social events: first, there was a boat trip around Potsdam, where I had the great luck to sit on a table next to Richard P. Gabriel and Pascal Constanza. We had a long interesting discussion with them about the lack of (helpful?) limitations in programming, what designers really do, how Java became popular, the danger of the obvious and demonising copy and paste programming. I learned one thing about how rpg decides which poems to publish, which I cannot keep back:

Richard P. Gabriel writes a poem each day, and once a year, he needs to select six of them for publishing (six seems to be the usual amount the publisher wants). So how does he do it? Using a computer, he randomly picks sets of six, until all of them don’t suck. Then he sits down and revises them.

We crystallized this as the essence of design: to choose the things that don’t suck.

Afterwards, we had a dinner buffet on a restaurant boat until night.

The next day started with Daniel H. H. Ingalls (say it in German!) demonstrating The Lively Kernel – a self-supporting system on a web pagex. He admitted that web programming is complicated, but implementing Morphic in JavaScript seemed like an easy thing to do. While he explicitly mentioned that he is not proud of the code, he thinks it’s easy enough and works well.

The whole Lively Kernel is rendered using dynamically generated SVG and doesn’t include any (visible) HTML at all. All drawn stuff are vector objects. In good Smalltalky manner, the system uses MVC extensively.

After a short demonstration with some turtle graphics and live-code editing, he pointed out some of the non-obvious features of it: For example, to support multiple people working on it, they introduced a change-set format for JavaScript which allows to check in modified parts of the system into version control. Also, they have a pretty sophisticated system for profiling by dynamic method rewriting to insert measuring code.

The whole Lively system at the moment is a mere 10kLOC of JavaScript and already includes many details such as rich-text-boxes.

On the topic of security, Dan Ingalls proclaimed that his security philosophy was like this: “Make it work, then make it secure, and I hope someone else does step 2.”

Carl Friedrich Bolz presented a joint-work of eight Pythonists and Squeakers titled Back to the future in one week – Implementing a Smalltalk VM in PyPy which they started in October during a five day sprint.

PyPy, initially a Python implementation in Python, but now moving towards a general compiler tool-chain, enables one to write highly flexible language implementations because most things are late-bound. Therefore, garbage collection, object layout and the threading system can be exchanged easily and allow for lots of experimentation. PyPy aims to autogenerate dynamic compilers from interpreters written in a reduced set of Python called RPython with nevertheless allows full-fledged compile time metaprogramming.

They already implemented all Squeak bytecodes and most of the primitives. The resulting system, SPy, can load unmodified Squeak images and run simple benchmarks. It is roughly 10x slower than Squeak itself, and they plan to support the graphical builtins in the future as well.

The team continued hacking on SPy in a sprint in Berlin just after the S3.

Guillermo Adrián Molina next introduced Huemul, a Smalltalk implementation that directly generates native code. It is a very small system of only 4.5kLOC since it doesn’t try to do everything but instead reuse existing code. For example, he uses libc, pthreads, setjmp/longjmp, GTK+ for the UI and OpenGL. The system is MIT-licensed and inspite of lacking real optimizations already pretty fast: It runs roughly XX bytecodes/s and therefore is comparable to the performance of commercial Smalltalk systems.

Huemul looks very interesting and certainly is a thing that deserves more attention.

Are bytecodes an atavism?, Theo d’Hondt wondered when he noticed that people are fixated on virtual machines: They think it’s the only way to write a fast system.

However, interpreters are the simplest way to express the semantics of a language.

After a glimpse of the history of bytecode from BCPL over Pascal-P to Smalltalk, Self and Java, he presented Pico, a tiny language implemented using CPS that is smaller than Scheme that was roughly as fast as PLT Scheme (as of 2004)

Based on his experience with Pico, he decided to write PicoScheme, which is written in a subset of C and works by compiling s-expressions into an abstract syntax tree that then is interpreted. Soon he realized that “Scheme isn’t all that simple to implement”, but now he has a very promising implementation of the most parts of Scheme (nothing really relevant is missing) that is as fast as PLT by now. It also is very compact: the GC only has 150 LOC.

After the talk, he promised to open PicoScheme to the public in the future.

The last talk was called On Sustaining Self by Richard P. Gabriel. I only can recommend to take any chance to hear him speaking because he’s doing excellent presentations—I’m unable to do his audio-visual impressions justice, so please excuse the rough sketches: The talk started off with playing Hogni Lisberg’s cover of “All along the watchtower” while Noble and Biddle’s eternal words of their Manifesto in “Notes on Post-Modern Programming” appeared on the screen. “There must be some way out of here!”

The ultimate goal of all computer science is the program. The performance of programs was once the noblest function of computer science, and computer science was indispensable to great programs. Today, programming and computer science exist in complacent isolation, and can only be rescued by the conscious co-operation and collaboration of all programmers.

There are three ways to build self-sustaining systems according to Gabriel: First, Designed Perfection, which is what most people try to do today; it is very efficient, but entropy will get you. Second, Instinctual Adaption, which is resilient and flexible. Third, Learning, which is costly, but gives the best results in a highly dynamic environment.

A poem assembles on the screen; to brilliant guitar music there appears:

slowly
dawning
is
night

and it morphs into:

slowly
dawning
insights

He proclaims:

Abstraction ignores the relevant,
therefore it requires ignorance!

He does a case-study on Levittown, which overcame the limitations and plannedness of itself and turned into a non-designed suburb.

He presented a case of artificial evolution showing the FPGA evolution experiment that generates very effective chip designs that nobody really understands how they work.

Finally he enters an dialogue with himself asking “How are cities designed?” At first look, they look modular, but they are so full of interconnected dependencies that they are impossible to modualize really. Also, the nature of the city is not planned.

In the end, the recognizance: Design is an illusion.

(I highly recommend you to watch the video when it is online.)

Summary: Attending the conference has been a great pleasure. Although being rather short and small (only one-and-a-half days and maybe 50 attendees), there were top-notch invited talks and many important people (and also many unknown, but friendly, clever and interesting ones!) around that everyone simply could talk to. The social events were well organized (free dinner, free beer) and actually allowed to socialize.

I seriously hope S3 can turn into a periodic conference because I’d really like to attend it again.

[Let’s also mention the not-that-good-stuff, just for the sake of completeness and so you see there’s not much to dislike: introductionary marketing speeches; the “Workshop” in the name misrepresents the conference; occasional WiFi failure.]

NP: Bob Dylan—I Believe In You

Off to Potsdam: Attending S3

Tue May 13 19:08:04 +0200 2008

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

Thu Apr 17 16:52:44 +0200 2008

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!

Sat Mar 29 14:04:55 +0100 2008

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

Mon Mar 24 12:51:19 +0100 2008

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...

Fri Feb 29 17:12:36 +0100 2008

…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:

  1. ESC-. inserts the last argument of the previous history line, repeat to go back in history. (Same in Bash.)
  2. ESC-' quotes the whole line. (Useful for su -c or ssh).
  3. ESC-q clears the line and inserts it again on the next prompt, allowing you to issue an interim command.
  4. <(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).
  5. cd old new substitutes old with new once in the pwd and chdirs there.
  6. !$ expands to the previous history line’s last argument, !^ expands to the first argument, !:n to the n-th argument.
  7. =foo expands to the full path of foo in the PATH (like which foo).
  8. 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.
  9. <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.
  10. *** expands recursively like **, but follows symbolic links.
  11. 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

Tue Feb 26 16:23:16 +0100 2008

After two months of hassle, finally my OLPC got though German customs.

Sentia, my OLPC

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

Mon Feb 04 16:21:46 +0100 2008

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:

Gitsum screenshot

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

Sat Jan 26 22:27:59 +0100 2008

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.

Tinkerbell, the Eee PC

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

Fri Jan 18 18:06:13 +0100 2008

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

Tue Jan 01 20:11:14 +0100 2008

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

Mon Dec 31 14:33:24 +0100 2007

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!

Mon Dec 24 12:19:39 +0100 2007

Let's get ready to crumble

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

Sun Dec 23 16:48:43 +0100 2007

Biberach goes Web 2.0:

Christkindle runterlassen---Meinten sie: Christkindl runterladen?

(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

Sun Dec 16 16:51:18 +0100 2007

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