programmierung - 5.11.2002 - 7.1.2003

LLGPL Implementation eines XML-RPC Server and Client für OpenMCL

LLGPL Implementation eines XML-RPC Server and Client für OpenMCL - cool. Das hätte gerne etwas eher auftauchen können, vielleicht hätte ich dann zusammen mit dem portablen Webserver PyDS doch eher als CLDS geschrieben. Hmm. Klingt nach einem Projekt das ich vielleicht noch angehen werden.

Gefunden bei lemonodor.

Package metadata repository for Python

Package metadata repository for Python - sehr schön, eine Art CPAN für Python. Das wird auch mal Zeit, denn das Zusammensuchen von Paketen kann - bei kleineren Paketen - doch schon mal nervig sein.

Gefunden bei Python owns us.

Beitrag ohne Titel

Manchmal verarscht mich Python. Heute zum Beispiel: Initializer von optionalen Funktionsargumenten werden leider zum Zeitpunkt des Compiles evaluiert! Wenn man also ein now=time.localtime(time.time()) als optionalen Parameter definiert, sollte man sich nicht wundern wenn now nur noch der Zeitpunkt des letzten Modulcompiles ist, und nicht wirklich heute. Ich weiss noch nicht ob ich das als Bug oder Feature sehe.

New rdflib release

New rdflib release - sollte ich mir mal angucken, denn für PyDS könnte ich das für den Aggregator benutzen.

Gefunden bei Second p0st.

OpenMCL Now LLGPLed

OpenMCL Now LLGPLed - hmm, könnten das erste Zeichen davon sein, das jemand es nimmt und ein anständiges GUI drumstricken will, um es zu kommerzialisieren? Wenn der Preis deutlich unter MCL läge, wäre das für mich schon interessant.

Gefunden bei lemonodor.

Einfache Dinge sollten einfach sein

Einfache Dinge sollten einfach sein - die Macht von High-Level-Bibliotheken.

Gefunden bei PyLog.

Friday 3 January AllegroServe : 3 edits

Friday 3 January AllegroServe : 3 edits - hmm, still und heimlich ist es OpenMCL-kompatibel geworden? Das wäre ja mal was lohnendes, doch mal wieder mit OpenMCL zu spielen. Vielleicht eine parallele Implementation von PyDS als ClDS? Oder zumindestens Teile daraus?

PyDS macht übrigens schöne Fortschritte, ein einfachstes Weblogtool ist schon da, es fehlt aber noch rendering und upstreaming. Aber die Infrastruktur ist jetzt weitestgehend komplett. Mal schauen, wenn ich Rendering und Upstreaming fertig habe, könnte ich eigentlich meinen Kram von Radio runternehmen und in PyDS importieren.

News könnte ich erstmal mit AmphetaDesk machen und dort nur das Template so patchen, das ich Beiträge an PyDS posten kann. Damit könnte ich dann erstmal wieder all das machen, was ich heute auch mache. Nur hässlicher

Gefunden bei CLiki Recent Changes.

MacBird Open Source Release

MacBird Open Source Release - tja, drei Jahre hats rumgelegen und ich fürchte keiner wird den Ball aufnehmen. Schade eigentlich, denn ein GUI ist das was Frontier/Radio noch fehlt. Die Weboberfläche ist nicht immer das optimale und die eingebauten Editoren sind zwar für die vordefinierten Typen brauchbar, aber nicht unbedingt immer ideal für echte Anwendungen. Ok, Dave lebt im Outliner, aber es gibt Leute die noch immer klassische Anwendungen wollen

Gefunden bei Scripting News.

Beitrag ohne Titel

Im Moment hacke ich an einem grösseren Python-Projekt, das eventuell bei mir Radio ablösen könnte. Mal schauen. Die Infrastruktur steht schon, ich habe mich da einfach mal bei PyCS bedient und gleiche Module eingesetzt. Als nächstes wird nochmal Feinschliff an der Infrastruktur gemacht, dann kommt Templateintegration und Themes. Dann werden die ersten Tools erstellt. Bin ja mal gespannt, wie es läuft, aber von meinen bisherigen Projekten her mit Python bin ich da eigentlich recht zuversichtlich, Python und die ganzen vorhandenen Bibliotheken sind ein recht verlässliches Werkzeug - ich werde da also nicht mittendrin im Regen stehen, nur weil irgendeine piselige Library mal wieder rumspinnt ...

Beitrag ohne Titel

Cyclone 0.4 released - gestern auf dem Stammtisch noch mit Kai drüber gesprochen, heute sehe ich den Update. Ok, Kai meinte das hiesse Taifun, aber ich denke mal Cyclone ist meteorologisch nahe genug dran (Gefunden bei Lambda the Ultimate)

Sollte ich mir das mal angucken? Ich bin zwar mit "Pyrex" und "Python" bisher ganz zufrieden, aber ich brauche für dieses Jahr noch die obligatorische neue Programmiersprache, mit der ich mich beschäftigen will ...

Gefunden bei Lambda the Ultimate.

Verloren...

Verloren....

 > look Du befindest dich in einem verworrenen Labyrinth aus Python-Build-Abhängigkeiten, alle bedeckt mit unleserlichen Fehlermeldungen. Es gibt Ausgänge nach: N, S, E, W. Was tust du? > python setup.py build Ein Compiler-Goblin stürzt aus einem der Gänge, kritzelt an eine Wand und rennt gackernd einen anderen Gang hinunter. > help Es gibt keine Hilfe für dich. > n Du befindest dich in einem verworrenen Labyrinth aus Python-Build-Abhängigkeiten, alle bedeckt mit unleserlichen Fehlermeldungen. Es gibt Ausgänge nach: N, S, E, W. Was tust du? > get coffee

[ richard's stuff : /python] So (s/coffee/apfelschorle/) fühle ich mich auch manchmal. Meistens aber mit Perl, wenn eine Modulinstallation gleich das ganze Perl selber mit installieren will aufgrund seiner Abhängigkeiten ...

Gefunden bei richard's stuff : /python.

Fotoalben auf dem OUT e.V. Server

Fotoalben auf dem OUT e.V. Server erstellen jetzt automatisch einen RSS-Feed der neuen Bilder, so das diese in einem Newsaggregator wie "Radio Userland" abonniert werden können. So behält man auch bei Fotoalben gut die Übersicht wo etwas neues hereingekommen ist.

Die XML-URL für den RSS-Feed kann übrigens um einen zweiten Parameter "&count=NN" erweitert werden, mit dem die Anzahl der aktuellen Bilder ausgewählt wird. Der Default ist 10, das sollte reichen. Eventuell werde ich da noch an der Serversoftware Optimierungen vornehmen, damit Transfers und CPU-Last nicht zu hoch gehen.

Ein paar Bilderalben sind bei mir in der Liste der bestellten Newsfeeds rechts zu sehen (z.B. Leicaesk, hugo.f-2.org, die drf-Bildkritikseiten).

Beitrag ohne Titel

Matthew Thomas: When good interfaces go crufty. Lesenswert. Gerade die expliziten Beispiele sind sehr interessant. Gefunden über Scripting News.

Gefunden bei Scripting News.

Ook!!!

Ook!!!. http://bluesorcerer.net/esoteric/ook.html: "Specially for orang-utans an Ook# .NET Compiler v1.0 has been developed. The syntax only contains one word, namely Ook,... - bekloppt. Lusti, aber voll bekloppt ";->" (gefunden über BloQ).

Ook.

Gefunden bei BloQ.

Beitrag ohne Titel

Vom Der Schockwellenreiter:

[Exotische Programmiersprachen]: Type inference in Icon(

pdficon.gif

, 192 KB). »The original, interpretiveimplementation of Icon performs rigorous run-time type checking and incurs significant overhead as a result. A new optimizing compiler for Icon, on the other hand, has a type inferencing system that is effective in determining type usage and in eliminating much of the run-time checking that otherwise would be required.« Schade wenn solche Highlights wie Icon jetzt schon als exotische Programmiersprachen gehandelt werden. Icon ist immerhin die Fortführung der Ideen aus Snobol in eine Programmiersprache mit einer richtigen Syntax. Naja, woran Icon gekrankt hat (und immer noch krankt) ist eine zu simple Modulbibliothek. Es gibt zwar für jeden Mist Module, aber ernsthafte Netzwerklibraries, Standardprotokolle und weitergehende Sachen wie Datenbankanbindungen, GUIs, XML-Parser etc. gibt es leider nicht. Icon ist nie aus dem Spielzeugstadium und aus dem "mal einen Filter hacken" Stadium rausgekommen.

Der Icon Compiler selber ist übrigens ein alter Hut, den gabs damals schon - und auch mit Type-Inference. Letzteres ist ja auch ein alter Hut, im Lisp-Compilerbau wird das ständig angewendet, und im Bereich der funktionalen Programmiersprachen (ML, Haskell, OCAML) gehts schon garnicht mehr ohne (dafür aber sehr viel eleganter als bei anderen Sprachen, wo die Type-Inference nie komplett sein kann).

Schade, Icon hätte wirklich das Zeug gehabt eine brauchbare Alternative zu Perl, Python und heute Ruby zu haben.

Gefunden bei Der Schockwellenreiter.

Beitrag ohne Titel

searchebay.py ist ein kleines Python-Script das ich zusammengehackt habe, welches Suchen auf eBay ausführt, das Ergebnis analysiert, die einzelnen Angebote rausfischt und aus dem ganzen Gesumms einen RSS-Feed aufbaut. Dieser RSS-Feed kann dann z.B. in MacReporter benutzt werden, um eBay Auktionen zu überwachen, ohne dafür dauernd auf eBay suchen zu müssen. Ich finde es praktisch.

Der Aufruf ist ganz simpel: python searchebay.py +contax +zeiss -ikon -o=contax

würde zum Beispiel nach Contax und Zeiss suchen, dabei alle Ikon rauswerfen und damit hauptsächlich Contax Objektive von Zeiss finden.

Das Ergebnis wird in contax.xml im public_html Unterverzeichnis des Home-Verzeichnisses des aktiven Benutzers gespeichert (~/public html/contax.xml). Unter Windows muss also eine Environment-Variable HOME angelegt werden, die auf ein Verzeichnis mit einem public html Unterverzeichnis zeigt.

Das ganze dann per Crontab oder Scheduler regelmäßig auf einem Webserver laufen lassen und in MacReporter ein entsprechendes Plugin erstellen (MacReporter Forge ist dafür ausreichend). Man kann natürlich auch andere RSS-fähige Newsaggregatoren nehmen.

What is RSS?

What is RSS? - Mark Pilgrim's beschreibt hier die Geschichte und technische Details der Varianten von RSS, die im Web benutzt werden. Er lierfert auch Beschreibungen wie man die meisten davon parsen kann. Für jemanden der einen eigenen Aggregator schreiben will sicherlich ein guter Startpunkt um eine Übersicht zu bekommen.

Gefunden bei Meerkat: An Open Wire Service.

Happy Birthday Perl

Happy Birthday Perl - hey, noch 3 Jahre und Perl ist Volljährig

Gefunden bei use Perl.

Galgenhumor gegen Software-Patente

Galgenhumor gegen Software-Patente - witzige Idee. Vor allem das Beispielpatent von Canon mit der Verletzung durch ein einzeiliges Shellscript hat was . Dank an Industrial Technology & Witchcraft für den Link.

Gefunden bei Industrial Technology & Witchcraft.

Beitrag ohne Titel

Für Python-Hacker: guckt euch mal Psyco und Pyrex an. Sehr interessante Wege um Python-Code zu beschleunigen, wenn mal massiv mit Arrays oder Zahlen gearbeitet werden soll und mit den üblichen Methoden (besserer Algorithmus zum Beispiel) nicht weiterzukommen ist.

Psyco ist eine Form eines Just-in-Time-Compilers für Python, allerdings hat er rudimentäre Typen-Inferenz enthalten, er ermittelt also zum Zeitpunkt der Codeanalyse was eigentlich für Werte ankommen können. Das hilft natürlich primär in den Bereichen, in denen Spezialisierungen in diesem Compiler enthalten sind. Schwerpunkte liegen derzeit auf Arrays und Listen von Basistypen, ganz besonders Zahlen, und auf arithmetischen Ausdrücken.

Pyrex ist etwas ganz anderes, aber nicht weniger spannend. Pyrex ist eine eigene Sprache, die sehr stark an Python angelehnt ist, aber mit C verheiratet wurde. Dadurch wird das Erstellen von Python-Erweiterungen sehr viel einfacher als mit C oder C++ alleine, da man in - für Python Kenner - gewohnter Art programmiert, aber mit C Typendeklarationen arbeiten kann.

Beitrag ohne Titel

6/2/02: How to create a directory in Radio's Outliner - ich weiss noch nicht genau wofür, aber ich glaube das werde ich benutzen. Irgendwie ist es cool, auch wenn ich nicht genau weiss warum. Hmm - so gehts mir oft mit David Winers Ideen für Radio, muss wohl an mir liegen

Gefunden bei Scripting News.

Beitrag ohne Titel

Computer-Pionier Alan Kay heuert bei Hewlett-Packard an - ob er dort seine Vorzüge einbringen kann? HP ist ja - gerade nach der letzten Fusion - eigentlich nicht mehr die Denkerschmiede mit guten Ideen und teilweise recht hoher Freiheit für Forschung. Es wäre schade wenn Alan Kay dort verbeamtet. Umd um beim Thema zu bleiben: die im Artikel gelinkte Umgebung Squeak ist wirklich sehenswert. Ruhig mal reinschauen, eines der modernsten Smalltalksysteme das am Markt ist. Eine ideale Spielwiese, besonders weil schon viele interessante Basisprojekte drin sind, wie z.B. ein recht brauchbarer Webbrowser und Webserver.

Gefunden bei heise online news.

Java vs. Python

Java vs. Python - ein recht gut gemachter Vergleich zwischen Java und "Python". Versucht alle Aspekte anzusprechen. Eigentlich habe ich nur zwei Kritikpunkte:

Bei Remote-Methoden und verteilten Programmen wird gesagt das Python standardmäßig nichts liefern würde. Stimmt aber nicht, es liefert mit xmlrpclib ein Modul mit, mit dem sehr einfach Server und Clients für "XML-RPC" Aufruf erstellt werden können. Das wird ja auch intern beim "Python Community Server" benutzt.

Als Gegenstück zur Servlet-Architektur wird nur auf Zope Bezug genommen, nicht auf die mannigfaltigen Servlet ähnlichen Programme die es für Python gibt. "Medusa" ist sicherlich da ein mögliches Beispiel einer sehr effizienten Serverumgebung, aber auch Python Server Pages oder Quixote liefern da eine ganze Menge. Und es gibt mod_python - zwar nicht so weit verbreitet wie mod_perl, aber das kommt sicherlich noch.

Aber alles in allem trotzdem ein recht guter Vergleich und viele der Punkte die mich Python dem Java vorziehen lassen werden angesprochen.

Python JIT

Python JIT - sowas gibt es? Ich war ganz erstaunt als ich den vorigen Vergleichsartikel gelesen habe, das es tatsächlich so ein Projekt gibt. Es setzt sogar noch einen oben drauf und will über die klassische JIT-Technik mit Hilfe von Spezialisierung des generierten Codes noch mehr Performance rausholen. Sowas gabs ja schon im Bereich der Funktionalen Sprachen des öfteren, es ist also machbar. Auf jeden Fall ein Projekt das man beobachten sollte!

Threads considered harmfull

Threads considered harmfull - eine recht kontroverse Diskussion auf kuro5hin.org über die Gefahr der Threadprogrammierung. Meiner Meinung nach werden eine ganze Reihe von Problemen angesprochen die mit Threads in Programmen entstehen und das man oft die gleichen Probleme auch einfacher und effizienter lösen kann.

Ein Beispiel habe ich erst selber vor kurzem wieder entdeckt, den Medusa Webserver. Dieser arbeitet komplett ohne Threading und Prozessen, sondern statt dessen mit Input dispatching. Dabei implementiert er sogar mehrere virtuell parallel laufende Server in einer einfachen und effizienten Eventschleife. Medusa ist übrigens auch die Basis für Zope. Dort allerdings werden mehrere Prozesse vorgestartet und zentral verwaltet. Im Python Community Server hingegen ist Medusa in Reinform enthalten.

Die Kommerzialisierung des Wissens

Die Kommerzialisierung des Wissens - ja super, rosige Aussichten. Wer etwas schafft, ist am Arsch. Wer etwas benutzt, ist am Arsch. Nur wer die Teile verkauft und ausschlachtet, die andere sich auchgedacht haben, der darf die dicken Gewinne abschöpfen. So stellen sich warscheinlich viele Manager die Zukunft vor ...

Und nebenbei kann man noch gleich dem lästigen Konkurrenten Open Source den Nährboden (die Informationen) entziehen. Diese Idee stinkt.

Gefunden bei heise online news.

Macintosh Common Lisp 5.0b

Macintosh Common Lisp 5.0b - trotz des heftigen Preises und der meiner Meinung nach nicht ganz sauberen Art und Weise wie die letzten Subscriber mit Updates auf Classic-Versionen so lange hingehalten wurden bis auch dem letzten die freien Updates ausgegangen sind und somit alle die heftigen Preise bezahlen müssen ist das immer noch eine der besten Common Lisp Implementationen die ich kenne.

Naja, ich werde mir trotzdem den Upgrade verkneifen und weiter auf Open MCL - einer freien Implementation von Common Lisp, die auf einer älteren MCL-Version basiert - setzen. Was Gary Byers dort macht ist wirklich beeindruckend und irgendwann wird es da auch ein GUI geben.

Gefunden bei VersionTracker.com - Mac OS X.

Beitrag ohne Titel

Ein bischen Beschäftigung mit Radio Userland und der Übersetzungsmöglichkeit hat einiges an Informationen zutage gefördert. Natürlich ist nichts davon wirklich richtig dokumentiert, man muss suchen und graben. Google ist definitiv dein Freund ... Zuerst muss man sich eine Datenbank wie unter http://frontier.userland.com/localizationGuestDatabases beschrieben anlegen. In dieser Datenbank findet die ganze Übersetzung statt. Wenn sie direkt im tools Unterordner von Radio Userland liegt, wird sie bei jedem Start mit aktiviert.Als zweites muss man sich eine eigene Property neu anlegen. Dazu mit Apfel-J (Ctrl-J bei Windows) nach user.prefs springen. Dort einen neuen Scalar vom Typ String anlegen ( Table-Menü , dann New Scalar und dort String auswählen). Der Name ist language . Dieser String wird auf den Wert german gesetzt und aktiviert dann in der Web-Oberfläche die deutsche Übersetzung aus der Guest-Datenbank.Wenn man zu dem vorigen Absatz Doku will, findet man das nur indirekt. Eine Suche auf http://radio.userland.com/ nach localization förderte immerhin zutage das die Funktion radio.string.getLocalizedString die Sprachversion berücksichtigt (bzw. in der Mitteilung - sie war schon älter - stand das man diese Funktion patchen muss, damit sie sie berücksichtigt). Wenn man sich die Funktion anguckt (einfach mit Apfel-J oder bei Windows Ctrl-J auf radio.string.getLocalizedString springen), sieht man das dort user.prefs.language berücksichtigt wird. Für Hacker ist Radio ein Paradies, da der ganze Scriptsource mit da ist und man einfach loshacken kann. Man kann alles durchwühlen und untersuchen. Überall seine Nase reinstecken und nahezu alles verändern. Für Endanwender sollte sowas essentielles wie das aktivieren einer nachträglich installierten Übersetzungsdatenbank dann aber doch etwas einfacher gemacht werden |;-)|.

Beitrag ohne Titel

A Shallow Introduction to the K Programming Language - wer im Sinne der Pragmatic Programmers mal wieder eine neue Programmiersprache lernen will, und sich etwas wirklich neues und ungewöhnliches zumuten möchte, ist hier richtig. K könnte man als eine Mixtur aus Mumps (der K-Tree erinnert mich stark daran), APL, J und funktionalen Sprachen betrachten. Wild, unlesbar, aussergewöhnlich. Leider ist keine native Mac OS-X Version verfügbar, nur Linux, Solaris und Windows. Gefunden bei kuro5hin.org.

Beitrag ohne Titel

Buchtipp: The Pragmatic Programmer. Ein sehr interessantes Buch das sich mit der Philosophie des Programmierens beschäftigt, aber einen Ansatz verfolgt, der sehr weit von der klassischen Herangehensweise abweicht. Man könnte es als pragmatischen Ansatz zu Extreme Programming betrachten. Viele Ideen haben bei mir einen Wiederklang in meiner Arbeitsweise gefunden - man merkt den Autoren an das sie tatsächlich Programmierer sind und seit Jahren im Job stehen. Viele Ideen lassen sich auch direkt in Open-Source-Projekte übertragen, auch wenn dort keine kommerziellen Interessen verfolgt werden. Es geht weniger um Tools und Sprachen (obwohl die Pragmatic Programmers auf ihrer Webseite empfehlen - und ich diese Empfehlung nur bekräftigen kann - eine neue Programmiersprache im Jahr zu lernen), sondern viel mehr um die Denkweise die hinter erfolgreicher und geistig fordernder Softwareentwicklung steht. Softwareentwicklung soll wieder Spass machen und zu einem erfolgreichen Abschluss kommen. Als Gegenpol dazu könnte man "The mythical man month" von Frederick P. Brooks sehen. In diesem Buch wird klar dargelegt warum es zum Beispiel nichts bringt ein verspätetes Projekt durch noch mehr Mitarbeiter beschleunigen zu wollen. Und viele andere Irrtümer der klassischen Projektleitung werden anhand des OS/360 Projektes von IBM erläutert. Zwar ist OS/360 aus heutiger Sicht nur noch historisch, aber die Probleme in grossen Projekten sind die gleichen wie früher.

Beitrag ohne Titel

Compile Nightly, Run Faster - tja. Nette Idee, aber für mich der klare Hinweis darauf das es dringend Zeit wird das heutige Programmierer mal ein bischen etwas über ihr Handwerk lernen. Immerhin ist die Idee den Compile von Bytecodes in "die Abendstunden" zu legen ziemlich albern - ich halte immer noch mehr davon den Compile mit altbewährten Mitteln auf einer normalen Entwicklermaschine zu halten.

Just-in-Time-Compiler sind eine nette Sache für Sprachen, die auf Bytecode aufbauen und bei denen die Zielplattform vorher nicht klar ist und deshalb der Compile besser auf der Maschine des Benutzers zum Zeitpunkt der Benutzung geschieht. Aber wenn man schon einen Batch-Compile-Lauf auf der Servermaschine einplant (der ja nur für die Servermanschine kompilieren kann, von daher auch ganz andere Themen als eine JIT adressiert), dann bitte verdammt noch mal da wo er hingehört, nämlich auf die Maschine des Entwicklers.

Strange. Java verdirbt wirklich den Sinn für die Programmierung. Und sowas auf advogato - naja, immerhin kannte der Schreiber auch den "locate" Befehl nicht ...

Gefunden bei Advogato.