programmierung - 1.4.2005 - 8.7.2005

grössere Haskell-Sourcen

Wer wie ich lieber Sourcen durchwühlt um Sprachen zu lernen, hier ein paar grössere Haskell-Projekte zur Auswahl:

  • [Haskell User-Submitted Libraries][0] ist eine Sammlung von teilweise schon älteren aber trotzdem interessanten Haskell-Projekten. Downloadbar ist ein IRC-Bot und im CVS ist auch noch ein Webserver mit Plugin-Schnittstelle.
  • [Pugs][1] ist eine Perl 6 Implementation in Haskell. [Hatte ich schon mal][2], ist immer noch cool |:-)|
  • [darcs][3] ist ein verteiltes Sourceverwaltungssystem. [Hatte ich auch schon mal][4], ist aber auch immer noch cool.

Helium - Haskell-Lehr-System

Helium ist ein Haskell-Subset-Compiler der speziell für die Lehre entwickelt wurde. Er liefert ausführlichere Fehlermeldungen und analysiert Sourcen weitergehend um diese Meldungen möglich zu machen. Allerdings ist es wirklich nur ein Subset von Haskell - und da Typklassen fehlen, fehlt ein ziemlich wichtiger Teil. Um aber überhaupt erstmal in die funktionale Programmierung reinzuschnuppern ist das ganz brauchbar.

Als Textbücher bieten sich The Craft of Functional Programming und The Haskell School of Expression an. Hab mir beide mal bestellt - meine Haskell-Kenntnisse sind mehr als primitiv und hoffnungslos veraltet (sofern das bei einer doch recht jungen Sprache wie Haskell überhaupt geht ).

Eines der komplizierteren Haskell-Themen sind die Monads - ein Weg um in einer rein funktionalen Sprache mit lazy evaluation trotzdem Dinge wie Seiteneffekte und Sequentialität zu simulieren - einfach weil man zum Beispiel dann doch gelegentlich den Output vor dem Input haben möchte, wenn man Daten vom Benutzer abfragt, oder zum Beispiel sich einen Zustand wegsichern will der später wieder aufgerufen wird. Das Tutorial hilft beim Verständnis des Konzeptes der Monads.

PHP-Serialize für Python

Hurring.com : Code Vault : Python : PHP-Python Serialize : v0.3b ist eine Implementation des PHP serialize() Zeugs in Python. Sehr praktisch für WordPress: in den Optionen werden oft serialisierte Strukturen gespeichert die man so wieder auflösen kann - man kann so z.B. Tools schreiben, die direkt auf der Datenbank aufsetzen, aber in Python geschrieben sind. Der Autor hat das gleiche auch noch mal für Perl gemacht - man kann also zwischen Python, Perl und PHP einfache Datenstrukturen hin und her schieben.

Quengelköppe und Open Source

IT-Entscheider fordern in einem offenen Brief mehr Konzentration auf die ihnen wichtigen Bereiche:

In einem offenen Brief an "die" Open-Source-Community haben IT-Entscheider aus verschiedenen Bereichen dazu aufgefordert, sich mehr an den tatsächlichen Bedürfnissen von Nutzern aus dem Unternehmensbereich zu orientieren.

Ich finds ja immer wieder faszinierend mit welcher Dreistigkeit manche Menschen Forderungen an freiwillige Arbeit stellen, um dann diese für eigene Zwecke zu nutzen. Die einen fordern die Abschaffung der GPL, weil ihnen die Bedingungen nicht passen, die nächsten fordern die Konzentration auf den Desktop, weil sie halt was als Alternative zu Microsoft wollen, andere fordern mehr Konzentration auf Hochleistungsserver, weil ihnen SUN-Maschinen mit Solaris oder IBM-Server mit AIX zu teuer sind.

Komischerweise höre ich aber immer nur in offenen Briefen irgendwelche Forderungen - es wäre aber wesentlich sinnvoller schlicht und einfach das entsprechende Projekt finanziell und mit Manpower zu unterstützen. Aber das wäre ja eigene Leistung, das will man ja gerade vermeiden. Dazu passen dann auch Forderungen nach besserem Support und bessere Dokumentation - beides Sachen, die Firmen ohne weiteres selber auf die Beine stellen könnten. Aber man ist sich da zu fein zu.

Sorry, aber für mich klingen solche offenen Briefe an Open Source Entwickler immer wie quengelige kleine Kinder, die unbedingt ein Eis wollen.

Sorry, Leute, aber so läuft das nicht. Ein grosser Teil der Open Source Community besteht eben noch aus Hackern und begeisterten Amateuren und Fricklern. Das produziert oftmals grosse Scheisse und immer wieder mal geniale Lösungen. Und es produziert eben nur das, wozu die Leute Lust haben - wenn Dokumentation schreiben für jemanden langweilig und nervig ist, wird er seine Freizeit nunmal nicht darauf verwenden.

You have an itch? Scratch it. Yourself.

Objekte und Funktionen mit JavaScript

Da immer mal wieder der OO-Aspekt von JavaScript ignoriert wird, hier mal ein Text über Object Hierarchy and Inheritance in JavaScript.

Ich selbst bin seit meinen ersten Kontakten mit Prototyp-OO-Sprachen wie Self und NewtonScript ein Fan dieser Denkrichtung von OO - das Schubladendenken der klassenbasierten OO Ansätze ist oft einengend, gerade bei der Modellierung von Realwelt-Objekten.

Übrigens hat JavaScript auch noch eine ganze Menge anderer netter Eigenschaften die gerne übersehen werden - allen voran die netten anonymen Funktionen, über die Closures in JavaScript realisiert werden. Und higher-order programming lässt sich damit auch realisieren.

Wenn man jetzt Prototype-OO und Higher-Order-Programming zusammenpackt, kommt unter Umständen sowas wie Prototype heraus - einer Bibliothek für JavaScript mit einer Menge interessanter Erweiterungen wie z.B. eleganter Ajax-Bindings, einfacherer Callback-Konstruktion und noch vielen anderen Spielereien. Eine weitere Möglichkeit könnte sich aus Bob Ippollitos MochiKit ergeben, wenn es denn mal veröffentlicht ist (und es dem Hype standhält).

Prototype erfordert übrigens eine Menge an Vorstellungskraft was damit gemacht werden kann - es gibt nämlich keine Dokumentation

Open-Source-Dummschwätzer

Eric Raymond behauptet die GPL könne dem Erfolg von Open Source schaden:

Eric S. Raymond hat Federico Biancuzzi vom italienischen Linux-Magazin Linux&C während des internationalen Forums für freie Software in Brasilien erklärt, dass die General Public Licence den Fortschritt von Open Source behindern könnte.

Was dahinter steckt ist natürlich nur weiter seine grenzenlose Dummheit und Geltungssucht und der ständige Minderwertigkeitskomplex gegenüber Richard Stallman - denn im Gegensatz zu Eric hat Richard ein Konzept und eine durchgängige Idee. Egal wie man dazu steht was Richard Stallman sagt - man muss anerkennen das er eine Linie hat und die klar verfolgt.

Eric Raymond hingegen fällt über Jubelschreie er sei Millionär und andere dumme Sprüche auf - und dadurch das er andere Open Source Leute wie Bruce Perens bedroht. Und ansonsten ziemlich viel dummes Zeug sabbelt.

Die GPL abzuschaffen wäre eine selten dumme Idee, denn in vielen Bereichen ist es gerade die GPL die die Open Source Projekte schützt - man sehe einfach nur mal auf die aktuellen GPL-Verletzungen. Wären die entsprechenden Sourcen unter BSD-Lizenz, würd sich keiner drum scheren und das Thema wäre erledigt - Firmen würden sich einfach billig bedienen und das wars.

Aber Eric Raymond hat den Unterschied zwischen Freier Software und Freibier eben nie kapiert ...

vcXMLRPC ist eine XML-RPC Implementation in JavaScript. Ganz praktisch für die Integration von JavaScript-Code und ServerCode, wenn man nicht jedes Encoding/Decoding von Hand zusammendengeln will. Allerdings hat das Projekt scheinbar 2001 aufgehört weiterentwickelt zu werden.

PEP 342 -- Coroutines via Enhanced Generators

PEP 342 beschreibt einfache Coroutinen für Python. Coroutinen sind im Prinzip Mini-Threads mit manueller Kontrolle - man kann Code mitten drin einfrieren und mit einem neuen definierten Wert wieder aufstarten. Damit bieten Coroutinen den ersten Schritt zu primitiven Continuations - das einzige was noch fehlt wäre die Möglichkeit eine Coroutine zu kopieren.

Philip J. Eby schreibt über die Implementierung dieses PEP - der übrigens auf den Generatoren und Iteratoren von Python aufbaut.

Also los, Leute, sorgt endlich für die Kopierbarkeit von Generatoren und es ist geschafft

LiveSearch mit WordPress klappt

Ich hab mir gerade mal LiveSearch angeguckt und ein bischen herumgespielt damit. Liess sich mit etwas Hacken in WordPress integrieren. Wenn ihr jetzt in das Suchformular rechts einen Begriff eingebt, kommt nach einer kurzen Verzögerung eine Liste von Suchergebnissen - und zwar die Titel der Postings. Das ganze benutzt die normale WordPress-Suche, das sind also die gleichen Ergebnisse die ihr auch bekämt wenn ihr einfach Enter drücken würdet - nur dank Ajax einfach fixer und als direkte Inline-Liste. Witzige Sache. Sollte mit aktuellen IEs, mit Mozilla-Abkömmlingen und aktuellen Safaris funktionieren.

Was allerdings seltsamerweise bei mir nicht funktioniert, obwohl meines Erachtens der Code identisch ist zu der BitFlux-Seite, sind die Cursor-Tasten zur Bewegung in den Suchergebnissen. Irgendwie findet der nicht die erste Zeile oder sowas - sehr seltsam. Aber der Teil interessiert mich eigentlich eh nicht so doll, von daher störts mich nicht wenn der nicht funktioniert.

Hmm. Safari funktioniert tadellos, aber mein FireFox unter OS X will irgendwie nicht. Sehr seltsam das ganze. Genauer gesagt tuts das mit dem FireFox erst, wenn ich einmal ein Zeichen mit Backspace gelöscht habe oder einmal Space eingebe. Danach läufts sauber. Kann mir das mal jemand erklären? Witzigerweise funktioniert die Cursortastennavigation in den Suchergebnissen mit dem FireFox - wenn man denn mal eine Liste von Ergebnissen hat ...

Update: seltsamerweise funktioniert jetzt im Safari die Cursor-Tasten-Navigation. Irgendwas ist hier sehr strange ...

Microsoft und RSS

Na toll, Microsoft springt auf RSS auf und was machen sie? Klar, eine Erweiterung, die natürlich mit vielen Parsern Probleme machen wird: Simple List Extensions Specification.

Wo die Probleme liegen können? Nunja, Phil Ringnalda hat es ziemlich gut beschrieben. Und wenn ich mir obige Formatbeschreibung von Microsoft angucke ist mir nicht wirklich klar warum sie überhaupt diese Erweiterung brauchen ...

WebObjects 5.3 und Linux?

Apple releases WebObjects 5.3 Update:

Deploys to virtually any J2EE server or the WebObjects J2SE application server

Also los - wer hostet die erste WebObjects-Anwendung unter Linux in einem OpenSource J2EE-Server?

The Hitch Hiker's Guide to the Smalltalk Compiler ist eine schon ältere aber immer noch gute Beschreibung der Compilerklassen in Smalltalk-80 Abkömmlingen wie VisualWorks Smalltalk und Squeak.

del.icio.us mal Wiki = Code Snippets

Code Snippets ist ein System in das man kleine Code-Schnipsel reinhauen kann und denen Tags verpassen kann. Also wirklich sowas wie ein Wiki für Sourcecode mit Tags. Man kann fix nach Tag-Kombinationen gruppieren und dann alle Schnipsel für dieses Thema sehen. Und kann natürlich leicht eigene Snippets zufügen. Könnte mit etwas mehr Masse sehr interessant sein - sozusagen lebende Cookbook-Bücher.

WebKit, WebCore und JavaScripCore - Open Source

Surfin' Safari berichtet darüber das WebKit (das Objective-C API für den Renderer von Safari), WebCore (der Basis-Code) und JavaScriptCore (der Basis-Code für die JavaScript Implementierung) ab sofort Open Source sind. Mit CVS Repository und öffentlichem Bugtracking System.

Letzten Endes ist das natürlich damit ein Fork von khtml und kjs, aber durch die Offenlegung der Sourcen kann sich jetzt jede Seite bei der anderen frei bedienen und damit sollten die Probleme zwischen den Projekten erstmal vom Tisch sein. Zumal auch Contributions angenommen werden sollen.

WebObjects Bestandteil von XCode 2.1

In den WebObjects 5.3 Release Notes gesehen und gleich mal nachgeguckt: WebObjects ist jetzt Bestandteil der XCode 2.1 (für ADC-Member verfügbar) Distribution. Ich hab mir die über 700 MB mal gezogen und nachgeguckt: ja, da ist ein WebObjects.mpkg drin. Schon seltsam, denn bisher war WebObjects ein nicht ganz billiges Paket - ist jetzt der ganze Einsatz frei, oder braucht man für die generierten Anwendungen noch eine irgendwie geartete Runtime, die dann wieder Geld kostet?

Emacs on the metal

Aus der Movitz Mailingliste: Emacs on the metal. Jemand hat einen Emacs-Clone in Common Lisp geschrieben und diesen dann bootfähig als Movitz-Kernel-Image erstellt. Movitz ist ja ein System zur Programmierung von Embedded Applications in Common Lisp - und damit ist der Emacs-Clone somit der erste wirklich bootfähige Emacs geworden. Krank

The CHICKEN Scheme Compiler

Eine häufig (auch von mir) übersehene Scheme-Implementation ist der CHICKEN Scheme Compiler. Das besondere an dieser Implementation: nebem dem interaktiven Interpreter gibt es einen Compiler der portables C produziert und mittels C-Compiler in ladbare Module kompiliert. Dadurch ist dieser Compiler besonders gut bei der Integration von C-Libraries. Im Prinzip ist das noch recht ähnlich zu Gambit-C, einer anderen Scheme-Implementierung die auf C als Zwischensprache aufsetzt.

Aber Chicken geht beim generierten C-Code noch über Gambit-C hinaus - das System ist explizit darauf ausgelegt das es mit C gemixt wird, wärend Gambit-C einfach nur C als portablen Assembler benutzt. In Chicken sind die FFIs (Foreign Function Interfaces) wesentlich einfacher. Das zeigt sich dann in fertigen Interfaces zu diversen Datenbanken wie metakit (wird im Python Desktop Server benutzt), PostgreSQL und sqlite.

Zusätzlich hat Chicken mit den Eggs eine nette Infrastruktur an über das Netz installierbaren Erweiterungen bekommen - mit Webserver, Datenbank und vielen anderen Schmankerln. Das hilft natürlich ungemein bei der Programmierung - ich hab eine solche Infrastruktur an fertigem Code mit MZScheme, Python und Perl lieben gelernt.

Chicken kompiliert auch unter Mac OS X. Im Moment rödelt gerade bei mir der Compiler im Hintergrund

Algol 68 Genie - An Algol 68 interpreter. Obercool. Algol 68 ist ja zwar eine Vintage Language, aber eine faszinierende: die einzige, wo für die Definition der Sprache selber eine Metasprache definiert wurde, in der die Definition der Sprache selber geschrieben ist. Der Algol68 Report ist immer noch einer der faszinierendsten Programmiersprachenstandards den ich kenne.

LispWorks Personal 4.4.5

LispWorks Personal - die freie (Freibier-freie) LispWorks-Version ist in der neuen 4.4er Release verfügbar und läuft auch mit Tiger. LispWorks ist im Moment die interessanteste Lisp-Umgebung für den Mac, da sie sich relativ gut in das System integriert. Und zum Spielen reicht die Personal Version ohne weiteres.

TBNL - A Toolkit for Dynamic Lisp Websites ermöglicht es mit Common Lisp dynamische Inhalte zu generieren. Im Prinzip sowas wie eine FastCGI-Lösung für Common Lisp.

Dive Into Greasemonkey ist ein freies Online-Buch von Mark Pilgrim über die Programmierung von Userscripts für Greasemonkey. Mit diesen Userscripts kann man Webseiten bei Anzeige per JavaScript verändern - z.B. fest integrierte Werbeblöcke ausschneiden, Links mit Afiliate-IDs umschreiben so das die eigene benutzt wird, einfach nur seltsames HTML reparieren so das man mit der Webseite überhaupt was anfangen kann oder alle möglichen anderen spassigen Sachen.

FramerD ist eine Objektdatenbank (ok, ein Framestore - ist aber was ähnliches) mit integriertem DB-Server, CGI-Interface und Scheme-Scriptsprache. Ideal um Wissensdatenbanken aufzubauen, da FramerD auf die dabei anfallenden pointerlastigen Strukturen optimiert ist. Aber auch so sehr spannend, da man ein Scheme mit Server und ODB bekommt. Muss ich unbedingt mal mit spielen, zumal es auch auf OS X kompilieren soll (was es bei mir aber derzeit nicht tut). Und es ist unter GPL lizensiert. Und für die Schlangenbeschwörer unter den Klammeraffen gibts auch eine experimentelle Pythonlibrary zum Zugriff auf FramerD...

CamlServ ist ein Webserver in OCaml. Ich habs mir noch nicht genauer angeguckt, aber könnte interessant sein - OCaml ist eine Sprache der ML-Familie (bzw. der ML-ähnlichen Sprachen) mit diversen sehr interessanten Erweiterungen (z.B. einem leistungsfähigen Objektsystem). Leider scheint das Projekt nicht mehr sonderlich aktiv zu sein - letzter Release aus 2003 ...

Quartus Forth 2.0.0 ist die neue Version des native-Code-Forth für die Palm Plattform. Ich hab damit (und mit dem Vorgänger PilotForth) lange rumgespielt - ich bin halt ein alter Forth-Fan

yadis: yet another distributed identity system ist eine Spezifikation für ein verteiltes Identity-System. Mal näher angucken.

Free Pascal 2.0 ist raus

Free Pascal ist ein Turbo-Pascal und Delphi kompatibler Pascal-Compiler. Die neue Version unterstützt wesentlich mehr CPUs und Plattformen - unter anderem auch Mac OS X. Und für Panther gibts auch eine XCode-Integration. Endlich mal wieder ein Pascal das für den Mac funktioniert. Nicht das ich damit heute noch viel machen würde - aber irgendwie war Pascal ein Stück meiner Programmiergeschichte (immerhin habe ich lange Zeit die in Turbo Pascal geschriebene Gatewaysoftware Erwinsgate für das MausNet betreut).

Mai scheint der Monat der Vintage Languages zu sein bei mir

OpenCOBOL - a COBOL compiler

OpenCOBOL ist ein Cobol-Compiler der Cobol nach C compiliert und dann darauf den gcc loslässt. Ja, ich gestehe, 10 Jahre meiner beruflichen Laufbahn wurden mit Cobol verschwendet

XDS Modula-2 / Oberon-2 Compiler

Die XDS Compiler sind eine ganze Familie von extrem guten Compilern für Modula-2 und Oberon-2. Ich kenne die noch aus meiner DOS-Zeit, ich hab viel damit gearbeitet - früher waren sie rein kommerziell, jetzt sind sie Freeware (aber nicht Free Software oder Open Source - Free as in Free Beer, not Free Speech). Es gibt native Compiler für Windows und Linux 86 und - mein persönlicher Favorit - XDS/C-Compiler, die von Modula-2 und Oberon-2 in erstaunlich lesbares C compilieren. Leider ist auch der XDS/C Compiler nur für Windows und Linux 86 verfügbar - eine OS X Version wäre nett, aber ist leider nicht verfügbar.

Sparkline PHP Graphing Library liefert kleine kompakte Grafiken die sich gut in Text einpassen - ideal z.B. um Verläufsdaten besser zu visualisieren.

KDE-Entwickler verärgert über Apple - weil sie mal wieder nicht kapieren wie man im Team arbeitet und Patches an ein Upstream-Projekt schickt. Zusammenarbeit von Firmen mit Open Source Projekten ist eben immer noch problematisch - Firmen haben schlicht eine ganz andere Agenda als das OS Projekt.

Das .emacs File von Bill Clementson. Zeigt sehr schön warum man eigentlich überhaupt drüber nachdenken sollte Emacs zu benutzen. Besonders interessant für Common Lisp User natürlich sein Customizing für Slime zur Integration diverser Common Lisps.

Wer mit PostgreSQL nur gelegentlich arbeitet, es sozusagen als Desktopdatenbank benutzen will: PostgreSQLX ist eine Zusammenstellung des PostgreSQL Servers die einfach als Mac Applikation gestartet und gestoppt werden kann. Ideal für Entwickler. Dazu dann noch die PGAccess Oberfläche und man kann auf sowas wie Microsoft Access verzichten. Auch das alles natürlich wieder nur ab 10.3 (wird Zeit das 10.4 kommt und ich zu Hause wieder mal auf aktuellem Stand bin).

Borland open sources JBuilder - huch. Da hatte ich jetzt so nicht mit gerechnet - im Prinzip ist es ja sowas wie Aufgabe. Ob Borland ohne JBuilder noch was hat das sie über Wasser halten kann?

Streifenkalender für WordPress

Als erstes Plugin aus meinem Bilderblog (mitlerweile aus) gibts jetzt den Streifenkalender. Im Prinzip ein ganz normaler WordPress Kalender - nur eben nicht als Block für den Sidebar, sondern als Streifen um ihn über den Inhalt drüberzustellen. Da man in der Regel in der Länge einer Seite mehr Platz verschwenden kann als in der Breite und da mancher ja vielleicht mit dem doch recht ausgelutschten Format wo der Kalender in einem Sidebar steckt brechen will, kann man jetzt einfach den Streifenkalender einbauen. Der Code zum Einbau ist trivial:


< ?php get_strip_calendar(); ?> ```

Einfach das in das header.php oder wo auch immer man den Kalender haben will einbauen. Fertig (natürlich vorher das Plugin nach wp-content/plugins/ auspacken und in der Administration auspacken!).

Practical Common Lisp ist ein neues Buch über Common Lisp mit vielen praktischen Beispielen. Endlich mal ein Common Lisp Buch das sich nicht nur in eher theoretischen Beispielen ergeht sondern sich so praktischen Themen wie Spam-Filter, Webserver, HTML Generierung, ID3 Tags und anderem Kram widmet. Der Buchinhalt ist online lesbar.

Bistro Intro ist eine Smalltalk-Variante die auf der Java VM läuft. Kannte ich bisher noch nicht.

'Cool it, Linus' - Bruce Perens - ein bischen mehr Infos rund um die BitKeeper-Geschichte. Und ich bin da einer Meinung mit Bruce - Linus hätte einfach von vornherein diese alberne BitKeeper-Hoppelei garnicht anfangen sollen. Andrew Tridgell macht nur das, was er gut kann - propreitäre Protokolle knacken. Ihn dafür anzugreifen ist albern.

Selbstgemachtes System als BitKeeper-Ersatz - manchmal stört mich die Arroganz der OSS-Programmierer die immer meinen sie selber könnten alles besser als andere. Wieviel mehr Synergieeffekte kämen zum Tragen wenn diese Programmierer ihre - zweifelsfrei vorhandenen - Programmierqualitäten mal auf wenige Projekte konzentrieren würden? Ein gutes Sourceverwaltungssystem mit schnellem Patchhandling könnten wir alle gebrauchen - aber keinem ist mit zwei Dutzend halbgaren Lösungen gedient ...

/IE7/ ist ein Projekt das mittels JavaScript-Library dem IE6 CSS vernünftig beibringt. Damit sollen auch :before und :after in Kombination mit content: funktionieren - für HTML-freie rounded corners oder HTML-freie Link-Kennzeichnung durch Symbole nicht ganz unwichtig ...

Simulation von :before mit content: in IE6

Der IE6 kann ja nunmal nicht mit :before klarkommen, wenn man darüber per content: über das CSS Inhalt in die Seiten bringen will. Ziemlich nervig, wenn man das benutzt. Das IE7-Projekt von dem ich im vorigen Artikel schreibe funktioniert bei mir aber auch nicht verlässlich - z.B. unter einem Citrix-Server will er das nicht ausführen, warscheinlich fehlen ihm irgendwelche Sicherheitseinstellungen dort. Strange. Egal, ich hab mir das Problem selber mal angeguckt und eine recht kompakte Lösung gefunden, jedenfalls für meine spezielle Spielart des Problems: ich will nämlich nur Icons vor einen Link stellen.

Dazu haben Links eine von drei Klassen oder keine Klasse: class="zu" definiert ein zugeklapptes Navigationselement, class="auf" ein aufgeklapptes, class="ohne" einen Link der nicht speziell angehübscht werden soll und alle anderen Links kriegen ein Standard-Icon.

Dazu hänge ich einfach unten in die Datei kurz vor dem /body folgenden Code:


var links = document.getElementsByTagName("a");
for (var i=0; i

Den ganzen Kram packe ich dann am besten noch in einen bedingten Kommentar für den IE, so das er nur von diesem überhaupt ausgeführt wird. That's it. Simpel und wirksam. Deaktiviertes JavaScript ist in meinem Fall nicht kritisch, da ohne JavaScript auf dem System (ist eine Business-Lösung mit hoher Interaktivität) demnächst eh nix mehr laufen wird- Ajax braucht nunmal JavaScript als eine Komponente ...

SISC - Second Interpreter of Scheme Code

SISC Scheme ist ein in Java geschriebener, sehr vollständiger Scheme-Interpreter und Compiler. Besonders interessant: es gibt ein continuation-basiertes Webframework dafür.

Weitere interessante Eigenschaften sind die gute Integration in die Java-Welt durch das Java-Scheme-Interface. Im Prinzip stehen alle Bibliotheken aus der Java-Welt auch in Scheme zur Verfügung.

SISC Scheme unterstützt auch SLIB (eine Erweiterungsbibliothek für Scheme mit vielen nützlichen Modulen) und diverse SRFIs (Scheme Requests for Implementation - der formale Weg zur Erweiterung der Scheme Sprache mit Standardmodulen).

Das Studs MVC Framework ist eine Portierung und Erweiterung des Java Struts Frameworks nach PHP. Dabei sind Frameworks die erstmal eine J2EE-ähnliche Grundstruktur für Servlets in PHP abbildet. Für mich klingt das natürlich nach Den Teufel mit dem Beelzebub austreiben

Tags aus Terms

Jonathan Luster hat sein Y! Terms Extraction Plugin für WordPress veröffentlicht. Es benutzt die Yahoo-Services um aus einem Postingtext relevante Schlüsselwörter herauszuholen und präsentiert diese dann als Technorati-Tags im Posting. Wenn jemand das mal ausprobiert: mich würd interessieren wie gut das mit deutschen Texten klarkommt.

Ausserdem würde mich natürlich auch mal interessieren wann blogg.de ein API anbietet, ich mein, wird doch langsam mal Zeit mit den Features von Technorati und Yahoo aufzuholen, oder?

FeedWordPress ist ein Plugin das mit einer WordPress-Installation eine Planet-Site erzeugt: im Prinzip ein öffentlicher Aggregator, nur das halt die Einträge in eine WordPress-Datenbank laufen.

Source-Verwaltungssystem BitKeeper nur noch kommerziell - für mich war die Wahl von BitKeeper sowieso eine saublöde Idee. Und das Argument das die anderen Alternativen damals noch nicht weit genug waren zieht nicht - dann hätte man eben noch ein Weilchen auf CVS gearbeitet und gewartet bis SVN oder andere Alternativen weit genug sind.

TheMonadReader soll eine regelmäßige Veröffentlichung rund um Haskell werden. Verlinkt ist die erste Ausgabe. Das ganze soll weniger formell als klassische wissenschaftliche Journale sein, könnte also durchaus interessant werden. Über Pugs (Perl6 in Haskell) ist auch ein Artikel in der ersten Ausgabe drin.

Pugs - pugscode ist eine Perl6 Implementierung in Haskell. Noch verrückter: das ganze Projekt wird primär in einem IRC-Chat koordiniert und die gemeinsame Arbeit wird mit SubEthaEdit gemacht. Ist das schon Nirvana?

Javascript Windows bilden einen Desktop in einer Webseite ab. Man hat einen Launch-Bar und kleine Applikationen die natürlich HTML-basiert sein müssen, die dann in Fenstern erscheinen die der Benutzer verschieben, minimieren, maximieren und schliessen kann - halt ein Desktop, nur eben innerhalb einer Webseite. Verrückte Idee

Html Validator for Firefox and Mozilla - wow. Klasse Extension: macht direkt eine Validierung der angezeigten Webseite und integriert sich in den Source-View zwecks Debugging der Fehler. Sehr nett - und in den letzten Tagen durch mehrere Weblogs gelaufen (weiss nicht mehr wo ich es zuerst gesehen habe).