Oh tannenbaum!



Oh Tannenbaum!, ursprünglich hochgeladen von Elias Schwerdtfeger

Ein paar wochen nach dem fest sieht so die speziell weihnachtliche „gemütlichkeit“ und „feierlichkeit“ aus, wenn die nadelnde seuche in irgendeine nächstgelegene industriebrache mit nicht zu viel fußweg von der nächstgelegenen parkgelegenheit verklappt wurde. Und dergleichen sieht man viel…

Der handvoll leser, die sich immer wieder einmal hierher verirren, sei ein langes wochenende mit möglichst wenig von dieser konsumistischen und herzduselnden „festlichkeit“ gewünscht!

So einfach ist es nicht…

Ja, es stimmt, unser kalender unterliegt gewissen zyklischen abhängigkeiten, aber ganz so einfach ist es denn doch nicht. Manchmal möchte man im kalender ja auch die festtage ablesen können, und die sind im kristlichen kulturkreis ein bisschen komplizierter als das gewöhnliche spiel mit sonne, mond und wochentagen.

Alle beweglichen feste hängen vom osterdatum ab. Und das osterdatum haben sich ein paar komische käuze im vatikan folgermaßen ausgedacht: es ist der erste sonntag (das ist leicht) nach dem ersten vollmond (nein, nicht mehr ganz so leicht, denn jetzt kommt noch eine kleine erschwerung hinzu) nach dem frühlingsanfang. Frühlingsanfang ist übrigens, wenn die sonne senkrecht übern äkwator steht, dies ist ein wert, der ebenfalls ein bisschen schwanken kann.

Vor einiger zeit war ich einmal mit diesem mist konfrontiert (manchmal watet man eben durch die scheiße, weil man einfache probleme lösen will), konnte beim programmieren nicht ganz so beliebig biblioteken benutzen, wie ich das für mich selbst täte und fand mich darin wieder, die osterformel von Gauß in einer gräußlichen programmiersprache, nämlich in scheme, zu kohden:

; Osterformel
; Gibt für ein Jahr das Datum in Bezug auf den Monat März zurück, dieses
; kann auch über 31 liegen
(define easter-march-date
  (lambda (year)
    (let* 
      ((intdiv (lambda (n m) (floor (/ n m))))
       (k (intdiv year 100))
       (m (- (+ 15 (intdiv (* 3 k) 4)) (intdiv (+ (* 8 k) 13) 25)))
       (s (- 2 (+ (* k 3) 3)))
       (a (modulo year 19))
       (d (modulo (+ (* 19 a) m) 30))
       (r (+ (intdiv d 29) (* (- (intdiv d 28) (intdiv d 29)) (intdiv a 11))))
       (og (- (+ 21 d) r))
       (sz (modulo (- 7 (+ year (intdiv year 4) s)) 7))
       (oe (- 7 (modulo (- sz og) 7)))
       (os (+ oe og)))
      os)))

Seitdem ist mein verhältnis zum kalender und zu den terminen der kristlichen feste etwas angespannt. Und ich sage jetzt auch nicht mehr, dass mir die programmiersprache im grunde genommen egal ist, obwohl sie ja eigentlich wirklich egal ist. Aber so manche syntax kitzelt heftig im hirne.

Wer das datum lieber menschenlesbar (und nicht als anzahl tage im märz, also mit der ausgabe 33 für den 2. april) haben möchte, schreibe sich einfach noch eine kleine funkzjon dazu, etwa so eine:

(define easter-string-date
  (lambda (year)
    (let*
      ((mdays (easter-march-date year))
       (day (cond
              ((<= mdays 31) mdays)
              (else (- mdays 31))))
       (mname (cond
                ((<= mdays 31) "März")
                (else "April"))))
      (string-append (number->string day) ". " mname " " (number->string year)))))

Und wehe, mir sagt noch einmal jemand, meine perl-kwelltexte wäre unlesbar. 😉

(Man hätte damals lisp an die russen verkaufen sollen, um den kalten krieg ein paar jahrzehnte früher zu beenden. Mir ists übrigens im moment egal, wann ostern ist — hauptsache, der weihnachtliche terror und die ballernden knallköppe zum jahresschluss sind bald vorbei und es wird wieder wärmer draußen.)

Erkennung des brausers? FAIL!

Es ist ja schon ziemlich dumm, eine webseit so zu schreiben, dass sie bestimmte brauser voraussetzt — zumal nutzer sehr alter geschosse mit gewissen problemchen zu leben gewohnt sein sollten. Als ich heute einen referer überprüfte, landete ich auf einem forum, das mir in auffälligem gelb am oberen bildrand mitteilen wollte, dass dieses forum mit meinem brauser nicht funkzjoniert und dass ich doch bitte mal klicken soll, um näheres darüber zu erfahren. Das ließ ich mir nicht zweimal sagen…

FAIL

…und musste feststellen, dass mein „firefox“ namens „iceweasel“ für die kohder dieser tollen funkzjon eben kein „firefox“ ist. Übrigens funkzjonierte alles einwandfrei…

Also leute: verzichtet auf einen derartigen dummfug in euren webseits — oder macht es so, dass auch wirklich alle kleinen forks miterkannt werden.

Es ist mir übrigens unbegreiflich, wie man eine moderne webseit machen kann, die mit opera nicht funkzjoniert. 😉

TVitter

Als jemand, der sich nur am rande mit twitter herumschlägt, finde ich es immer wieder interessant, wie viel die leute auf twitter vom schlechten fernsehprogramm twittern — und dass sie trotzdem nicht einfach ausschalten, sondern weiterglotzen und weitertwittern…

Bei diesem gezwitscher denkt man schon manchmal, dass sie einen vogel hätten. 😉

Morden am abend

Ach, was kann man schon tun, wenn die festplatte beim letzten fsck geoffenbart hat, dass sie ein paar schöne, fressende badblocks hat? Eigentlich nur so langsam alles bäckappen, was man noch sichern will und in aller ruhe ein bisschen problembewältung machen:

MORDEN
Morden!

und KOTZEN
Kotzen!

und ÜBER UFOs KLETTERN
Über UFOs klettern!

und zum BALL OF DOOM kommen
Doomball!

Und natürlich ein paar dieser scriehnschotts bloggen… 😉