WPHP - PHP über einen FastCGI-Server aus Python heraus aufrufen. Damit könnte PHP z.B. in Django integriert werden.
programmierung - 18.2.2006 - 28.7.2006
TLS Lite - nette kleine Python-only Lib für SSL, TLS und low-level X509 Handling. Recht brauchbar für Quick-Off Projekte und für grössere Systeme integriert es mit andren PKI-Libraries für Python.
CLPython - an implementation of Python in Common Lisp - ok, das ist schon abgedreht.
Exploring Cocoa with F-Script - interessanter Artikel über das Objektsystem von OS X
Python Cheese Shop : saprfc 0.08 - noch ein weiteres SAP-RFC Modul für Python.
DrScheme - von der besten Scheme-Implementation der Welt gibts jetzt die neue Version 350. Diese hat - neben diversen anderen Änderungen - einen Just-in-Time-Compiler für Intel und PPC.
Generische Tabellenrelationen für Django. Sehr interessant, das macht Sachen wie Tags in Datenmodellen wesentlich einfacher. Ich müsste damit einiges aus meiner Stuff-Library loswerden können.
Allegro Common Lisp Express - die aktuelle freie (wie Freibier) Version 8.0 davon ist jetzt raus.
Automatic Pickle Serialization and Deserialization with PostgreSQL - sehr interessant, automatisches pickle/unpickle bei Nutzung von PsycoPG2.
StepTalk(GNU Scripting Framework) - jetzt in einer Version für Mac OS X!
Die Quelltexte für UCSD-Pascal sind frei - für Fans alter Sprachen und alter Betriebssysteme. Oh Mann, das war die erste Pascal-Umgebung auf der ich in der Schule vor fast 24 Jahren gehackt habe ...
Feedjack - A Django+Python Powered Feed Aggregator (Planet) - könnte vielleicht als Ersatz für das doch recht angestaubte WordPress bei metaowl.de eingesetzt werden?
PL/1 for GCC - für Fans alter Sprachen.
PyCells and peak.events - Phillip J. Eby über Cells und was sie für event-orientiertes Programmieren bedeuten. Besonders interessant, da ja beim Google Summer of Code eines der Projekte eine Python-Implementierung des Cell-Konzeptes ist.
Are you generic? - Wilson Miner beschreibt wie er als Nicht-Programmierer mit Django und dessen einfachen generischen Viewfunktionen Anwendungen ohne Programmiererhilfe selber erstellen kann.
Debunking Linus's Latest - auch Shapiro hat ein paar Gedanken zu Linus' letztem Fettnäpfchen zu äußern.
Tanenbaum-Torvalds debate, Part II - Tanenbaums Gegenargumente zu Linus' Microkernel-doof Behauptung ...
HashCaml - eine Erweiterung von Objective Caml, mit der typsicher Daten serialisiert und deserialisiert werden können. Grundlage zum Beispiel für Remote-Function-Calls.
Django for non-programmers - Django aus der Sicht eines Webdesigners.
Django Weblog "magic-removal" branch merged - gaaaah. Arbeit. Mist.
Workbench: Settlement Reached with Dave Winer - und damit hat Dave Winer jetzt seinen letzten Verfechter den man noch ernst nehmen konnte verloren. Nunja. Ob Dave seine eigene Medizin schmecken wird? Bisher war ja er derjenige, der andere in Blogs runtergemacht hat ...
Oberon Script. A Lightweight Compiler and Runtime System for the Web - ein Oberon-Compiler in JavaScript. Now that's weird.
Metasploit: Exploit Development: GroupWise Messenger Server - wer sich immer noch einredet, das die Zeit von Bekanntwerden einer Programmschwäche zu einem Exploit entsprechend lang ist: vergesst es. Hier zeigt jemand eine Beispielentwicklung eines kompletten Exploits einen Tag nachdem ein Loch im GroupWise Messenger Server bekannt wurde ...
Virtuelle Welten und Angriffsszenarien
Was bekommt man, wenn man virtuelle Welten mit script-fähigen Objekten hat? Angriffe von Crackern natürlich. In diesem Fall hat ein User in Second Life Objekte gebaut, die per Script weitere Objekte produzieren. Sofern ein ganz klassisches Angriffsszenario in solchen Welten - überladen von Servern durch hohe Last, also eine klassische DOS von innen. Interessant bei diesem Angriff war, das diese Objekte jeden Avatar ein paar Millionen Meter in die Höhe katapultiert hat - möglicherweise um Aufräumarbeiten zu behindern.
Aufräumarbeiten? Ja. Das System von Second Life ist eine virtuelle Welt mit vielen gescripteten Objekten - man kann also nicht einfach alles wegwerfen, damit würde der Content der Benutzer vernichtet. Statt dessen mussten alle Regionen (im Prinzip ist eine Region ein Server in einer grossen Serverfarm) die angegriffen wurden von genau den betroffenen Objekten bereinigt werden. Dazu sind die Lindens (die Mitarbeiter des Betreibers) wohl erstmal inworld (also innerhalb der Simulationsumgebung) an diese Objekte herangegangen um sie zu untersuchen. Vermutlich wird der Betreiber Werkzeuge für Massenbereinigungen von Schadobjekten haben, aber trotzdem dauerte die ganze Arbeit mehrere Stunden!
Gut, man mag sagen das sei wurscht - schliesslich ist es nur eine virtuelle Welt auf einem Servercluster, mehr nicht. Aber Second Life ist mehr - unter anderem ist es ein Mikropayment-System. Und es wird dort eine Menge Geld umgesetzt - tausende von US Dollar pro Stunde (und zwar nicht nur in Richtung Betreiber, sondern auch untereinander zwischen den Benutzern!). Es gibt also direkten wirtschaftlichen Schaden durch die Ausfallzeit. Ganz zu schweigen von den Interaktionen von Benutzern im System und von stattfindenden Events - zum Beispiel waren an dem Abend zwei grosse Eröffnungsfeiern neuer Clubs mit Live-Musik. Die Musiker wurden durch die Ereignisse vom System komplett abgekoppelt, da sie kein Feedback mehr bekamen wussten sie nicht ob sie noch live sind oder nicht (obwohl die Streams in der Regel weiter liefen) und natürlich wurden einer Menge Leute die Party versaut. Und die Club-Besitzer haben sich ihre Eröffnungsfeier sicher auch anders vorgestellt.
Alles in allem natürlich vorhersehbar - denn jedes System mit Einflussmöglichkeiten wird von Menschen missbraucht werden, und sei es aus reiner Böswilligkeit - aber trotzdem extrem ärgerlich.
Get A-Life: Core Wars / Tierra - ein Forscher lässt ein paar Core-Wars Algorithmen in einer digitalen Ursuppe mit einfacher Mutation und einfachem Tod los - und findet kurze Zeit später Evolution und Parasiten vor.
Bundesrat liebäugelt mit Softwarepatenten - und wen interessiert schon der Mittelstand und die Open Source Software. Jedenfalls nicht die Prolethiker in Düsseldorf ...
Eiffel-Entwicklungsumgebung wird Open Source - ja, da war noch so eine andere objektorientierte Sprache.
Python 3000 - Adaptation or Generic Functions?
Python 3000 - Adaptation or Generic Functions? Wow. GvR sieht das Licht! Generische Funktionen in Python 3000! Hell freezes over, third time ...
python-constraint - hatte ich den schon? Egal, es gibt einen neuen Link und im Fernsehen wird eh auch alles wiederholt. Constraint-Solver in Python. Kann durchaus mal interessant für Projekte werden.
Merquery, Text Indexing and Search with a Focus - eine Volltextsuchmaschine in Python speziell für RAD-Frameworks? Mal gucken was da rauskommt.
The Spider of Doom - autsch. Zerstörerisches GET und "Sicherheit" durch JavaScript, Cookies und Redirects. Selbst schuld, kann man da nur sagen.
Naked Objects in Virtual Life
Blöder Titel, ich weiss. Aber genau das ist die Linden Script Language (LSL ) - die Programmiersprache, mit der Objekte in Second Life kontrolliert werden. Jedes virtuelle Objekt ist auch ein Programm-Objekt mit eigenen Methoden, die auf externe Events reagieren. Irgendwie könnte ich mir vorstellen, das Second Life für die Einführung in Eventorientierte Programmierung gut geeignet wäre, da man die Objekte direkt antatschen kann.
Spannend ist auch die Physik-Simulation in dem Spiel - denn auch darauf haben Scripte Zugriff. So bietet es direkt auch eine Experimentierfläche für virtuelle Robotik-Experimente und die Visualisierung von Simulationen (oder sogar direkt erfahrbare visuelle Simulationen - eben eine komplette virtuelle Welt).
Man stellt sich schon die Frage, warum ein Spieleentwickler solche Ideen hat, und warum viele Simulationsumgebungen für "ernsthafte" Forschung so stinklangweilig rüberkommen. Vielleicht sollten Wissenschaftler mal Kontakt mit Gamedesignern aufnehmen, um die Klassenzimmer und Labore etwas aufzupeppen? Die Beschäftigung mit solchen Themen sind doch sicherlich spielerisch wesentlich leichter zu vermitteln, vor allem weil die Schüler dann vielleicht auch mal zuhören ...
Gosling Didn’t Get The Memo - und wird dafür wunderbar abgewatscht. Kommentar- und Linksammlung zum neuesten "sind ja nur Scriptsprachen"-Kommentar von James Gosling.
Waterfall 2006 - International Conference on Sequential Development - das Wasserfall-Entwicklungsmodell ist wieder da!
MP3 Python Module - einfache Lib zum Zugriff auf MP3 Informationen.
aspectes.tigris.org - Aspect Oriented Programming für JavaScript.
BranchBasedDevelopment - interessante Liste von Punkten wie man mit Branches in Subversion sinnvoll arbeiten kann.
Divmod - eine ganze Reihe von sehr interessanten Python Projekten. Natürlich auch eigenes Webframework und eigener ORM, aber auch ein paar kleinere, interessante Sachen wie z.B. ein Bayesian Classifier.
Screencast über Web-Anwendungen
Steve vom JPL hat einen Vergleich über verschiedene Webframeworks als Film bereitgestellt. Ganz nett, auch wenn er natürlich manche Sachen stark vereinfacht. Warnung: das Video ist sehr gross (300 MB) und J2EE kommt schlecht weg
Zu den Django-Kommentaren (schliesslich bin ich ja Django Contributor): I18N ist seit längerem schon im Standard drin, aber da Django sich sehr fix bewegt, kann man da nicht erwarten das er alles berücksichtigt. Und bei den Templates ist er nicht auf die Django-Template-Sprache angewiesen, er kann auch ZPT (die gleichen wie bei Plone) benutzen.
Der Zentrale Punkt kommt aber gut rüber: vergesst J2EE, lernt was anderes. Und dabei ist die Entscheidung zwischen Plone, Rails, TurboGears oder Django warscheinlich völlig egal - hauptsache ihr lernt was, das dann auch Spaß macht bei der Programmierung.
Tail Call Optimization in Python
Anfang des Monats hab ich mich noch darüber geärgert, das GvR keine Tail-Call Optimierung in Python will - weil er meint, das wäre ein Feature das kein einfaches Interface haben kann. Auf [Lambda the Ultimate] gibts dazu auch einen Kommentar - denn logischerweise hat dieses Statement von GvR zu einiger Erheiterung in der Lisp-Community geführt. Ganz besonders putzig daran: es gibt eine Lösung Tail-Calls per Dekorator optimieren zu lassen - in dem Python einfach im Stack rumfummelt (dank Stack-Introspection geht das ganz gut). Soviel zum Thema Rube Goldberg Device - der Dekorator ist extrem kompakt, da ist wirklich nicht viel Komplexität enthalten. Natürlich ist die Optimierung nicht wirklich optimal - sie vermeidet zwar den Stacküberlauf, aber benutzt Exception-Handling um die Funktionsaufrufe zu vermeiden, was dann doch etwas auf die Performance schlägt. Aber für die einfache Übertragung rekursiver Algorithmen kann das trotzdem durchaus nützlich sein.
Und warum wird sowas jetzt nicht als bessere, effizientere Lösung direkt in Python eingebaut? Python 2.5 kriegt von Perl geerbte bedingte Ausdrücke ( value if condition else othervalue ), aber sowas wie ein einfacher Dekorator zur Optimierung von bestimmten Funktionsaufrufen nicht?
Live Thumbnails: Watch 'em Grow - interessante Art aus Thumbnails direkt Grossbilder zu machen, ohne einen Seitenwechsel einzulegen. Allerdings aufgrund der erfundenen Attribute kein valides HTML4.
The Little Calculist: JavaScript language level - JavaScript als Sprache direkt in DrScheme unterstützt. Damit gibts die genialen Werkzeuge von DrScheme auch zur Bearbeitung von JavaScript.
RubyForge: Ruby Port to Nokia 770 Internet Tablet: Projektinfo - Ruby ist jetzt auch auf dem Nokia 770 verfügbar. Mit Python und TCL ist das schon eine stattliche Zahl von Onboard-Programmiersprachen.
Scsh PhotoBase - ist eine Foto-Verwaltungs-Software ala iPhoto, aber in Scheme geschrieben und für Benutzung über das Web. Bisher nur eine Ankündigung, aber der Source soll definitiv released werden.
Clim-Desktop project - erste Ansätze für eine integrierte Common Lisp Entwicklungsumgebung auf Basis der freien CLIM Implementierung.
Migrate apps from Internet Explorer to Mozilla - interessanter Artikel der eine Reihe von Fallstricken beim Wechsel zwischen IE und Mozilla.
Snowball - findet Wortstämme in verschiedenen Sprachen. Algorithmen in einer speziell dafür entwickelten Sprache. Praktisch für klassische Wortlisten.
Stéphane Ducasse :: Free Online Books - eine ganze Reihe von freien Büchern über Smalltalk. Zum Teil nur gescanned, zum Teil als echte Text-PDFs. Eine ganze Reihe von Klassikern sind dabei.
Cocoa für Klammerfetischisten
Es gibt doch tatsächlich eine Objective-C Bridge für das zweitbeste Scheme der Welt. Und ich hab das noch nicht vorher gesehen. Sieht sehr interessant aus, der Autor hat ein nettes Tutorial online, in dem er mit Scheme sein iTunes steuert. Und noch jede Menge anderer Source-Samples für Chicken-Scheme, unter anderem den obligatorischen Currency-Converter. Allerdings braucht man da eine neuere Chicken-Scheme-Version (also einen aktuellen Snapshot), sonst ist der -objc Schalter nicht unterstützt.
Wenn die noch weiter so produktiv sind, wird Chicken bald das beste Scheme von seinem Platz verdrängen
Die Installation ist allerdings ziemlich haarig, daher hier ein paar Notizen wie ich es gemacht habe:
Chicken Scheme 2.3 ist Minimum
libffi aus den Darwinports installieren: sudo port install libffi
objc Egg installieren:
sudo chicken-setup -c "-I/opt/local/include -L/opt/local/lib" objc
Gauche:ObjectiveCBridge - auch für Gauche Scheme gibt es eine Objective-C Bridge. Allerdings weniger ausgefeilte Beispiele.