Archiv 12.11.2009 - 11.12.2009

JavaScript web workers: use visitors to your website to do background data processing for you. : programming - verrückte Idee: auf Webseiten mit JavaScript Worker für distributed computing einrichten. Jeder Besucher beteiligt sich an der Berechnung von irgendwelchen Daten. Ausser natürlich er benutzt sowas wie NoScript oder PithHelmet und filtert den Kram raus.

The Tumblr Backup app is ready for its first beta... - wer Tumblr benutzt und einen Mac hat, da gibts jetzt ein Backup-Tool. Könnte ich mir für mein kleines Bilder-Tumblr mal angucken.

TuxMobil: Fingerprint Readers on Linux Laptops and Notebooks - weil mein Firmennotebook sowas hat. Und erstaunlich: es funktioniert! Die neuen S-Series Kisten von Fujitsu sind sehr Linux-freundlich.

Klimakonferenz: Keine 0,5 Grad extra für Tuvalu - die Arroganz der Wirtschaftsstaaten auf den Untergang (wortwörtlich - die saufen ab) von Tuvalu ist widerwärtig.

Regierungs-Smartphones arbeiten mit Windows Mobile - weil, das ist ja bekannt dafür, das es so super sicher ist und es keine Backdoors in das System geben kann. Schließlich kann man ja das ganze System sehr leicht einem Audit unterziehen. Ooops. Oh, und besonders niedlich die Entscheidung für HTC Windows Mobile Smartphones, nachdem HTC selber bekanntgegeben hat, das zukünftig die neuen Geräte schwerpunktmäßig mit Droid (das tatsächlich realistisch einem Audit unterworfen werden könnte) rauskommen sollen. Da kann HTC dann seine Lagerrestbestände teuer an den Bund verkaufen.

Zarengold Bahnreisen - weil ichs gerade mal wieder gesucht hab, jetzt einfach mal geblogmarkt. Irgendwann, wenn ich mal das Geld dafür über hab, und nicht andere verrückte Sachen mache wie Spontanreisen nach Russland oder russische Sprachkurse belegen, dann mach ich die Tour mal. In dem Zug.

taskpaper-web - und noch eine Web-Version von TaskPaper, diese hier recht alt und laut Projekt dormant, aber könnte mir eventuell als Startpunkt dienen (oder eben TaskPaper+).

taskpaperplus - ich bin ja ein TaskPaper Fan, aber unter Linux und auf dem iPhone hab ich das ja nicht. Daher mal gesucht und hier fündig geworden: ein Projekt, welches TaskPaper-Files unter PHP über das Web änderbar macht. Sieht erstmal ganz gut aus, damit muss ich mal ein bischen spielen.

TodoPaper - und wer TaskPaper auf Windows braucht, dem wird hier geholfen. Wäre auch noch eine Option, einfach per Dropbox die Files auf meine Windows-Kiste auf der Arbeit bringen (oder es unter Wine auf Linux laufen lassen)

We call it OPA - klingt nach der Beschreibung sehr interessant, eine Entwicklungsumgebung für Webservices und Webanwendungen auf Basis von OCaml mit Fokus auf die ganzen nötigen Grundlagen wie XSS Schutz, SQL-Injection-Schutz und ähnlichem.

Cadmium - Introduction - passend zu Cafesterol hier dann die OCAML Runtime in reinem Java. Damit kann man OCAML Bytecode ausführen oder das ganze als Runtime für Cafesterol-compilierte Programme benutzen.

Cafesterol - cool, eine Erweiterung des OCAML Compilers, die Java Bytecode erzeugt. Damit kann man mit OCaml nicht nur die eigene virtuelle Maschine bedienen und natürlich native Code erzeugen, sondern auch direkt in die Java-Welt gehen.

PLT Scheme Blog: Futures: Fine Grained Parallelism in PLT - das beste Scheme auf dem Markt bekommt jetzt auch Microthreads. Im Moment noch recht frisch, aber das wird sicherlich auf Dauer in den Standardumfang wandern.

Short Chat Server in Clojure - interessantes kleines Beispiel von Clojure Code. Zeigt gut die Nutzung asynchroner Prozesse und Netzwerkzugriff. Und mit 75 Zeilen schön übersichtlich.

clutchski's fileutils - macht Python noch besser für Shell-Scripte indem es diverse Basiskommandos als Python-Funktionen zur Verfügung stellen. Nett.

Escher in Hagen - ok, neben der Monet Ausstellung in Wuppertal und Toulouse-Lautrec in Langenfeld die dritte Kunstausstellung die ich mir auf die Liste packen sollte.

Mal mit Tabblo gespielt

Tabblo: Clemens Kirche

See my Tabblo

Die Bilder habe ich in der Clemens Kirche in Münster gemacht um die Kirche Juliana zu zeigen. Und bei meiner Suche im Netz habe ich festgestellt, es gibt kaum wirklich nette Programme zur freien Anordnung von Bildern auf einer Seite - Tabblo war da noch das bequemste. Irgendwie seltsam, scheinbar konzentriert sich nahezu alles darauf, Bilder in einer Form von Diashow zu präsentieren - in diesem Fall will ich aber ein "loses Panorama" machen, also die Bilder so anordnen, wie sie dem eigentlichen Raum ungefähr entsprechen. Falls jemand da für den Mac eine gute Software kennt, die solche Art von Webseiten lokal erstellbar macht, wäre ich für Tipps dankbar (möglicherweise gehts irgendwie mit iPhoto oder iWeb, aber vielleicht gibt es ja auch etwas schlankeres).

Grundsätzlich gefällt mir aber die Idee von Tabblo, Bilder relativ frei anordnenbar zu machen und das mit Text (optional) zu kleinen Bildergeschichten zu formen. Sowas als lokal gehostetes Projekt wäre vielleicht auch ganz interessant, denn irgendwie ist die reine Diashow doch oft recht langweilig.

Why Object-Oriented Languages Need Tail Calls – projectfortress Community - guter Post über tail-call-optimization. Von Guy L. Steele - der sollte wissen wovon er redet, er ist unter anderem massiv an Scheme beteiligt gewesen (der ersten Sprache, die Tail Recursion explizit in ihrer Sprachbeschreibung aufführt). Andere Sprachen mit denen er direkt zu tun hatte waren Common Lisp, Java und jetzt Fortress. Ich hoffe ja, dieser Post wird von Guido van Rossum gelesen und verstanden, damit Python auch endlich mal Tail Call Optimierung lernt (jaja, ich kenne all die Gegenargumente und sorry, ich finde die nicht wirklich sonderlich überzeugend).

Google Maps Distance Calculator - keine Ahnung warum Google Maps das nicht von Hause aus kann, aber naja, der Service ist echt praktisch wenn man mal eben wissen will, wie weit Ekaterinburg von Münster entfernt ist, zum Beispiel (sind bloß knappe 3400 Kilometer, das ist ja fast garnix!)

La Bamba

Weils uns in St. Petersburg richtig viel Spaß gemacht hat, die beiden zu hören, hier einer der Songs. Und gleichzeitig war das meine Premiere mit der GF1 einen Film aufzunehmen - und nicht über die Wackler meckern, ich hatte kein Stativ dabei und es ging mir sowieso mehr um den Ton. Aber so HD-Filme mit dem Fotoapparat machen, das hat schon was ...

MCLIDE - Lisp IDE for Macintosh - interessantes Projekt, welches die Tools aus dem Macintosh Common Lisp als Standalone-Tools reimplementiert und diese dann über Slime/Swank an diverse Lisp-Implementierungen ankoppeln kann. Definitiv für Mac-User angenehmer als z.B. Emacs zu benutzen.

Sonar - sollte ich mir vielleicht mal für die Firma angucken, ob man damit auch unsere Python Codebasis analysieren kann. (von Hause aus gehts nicht, da müsste man ein Plugin suchen oder schreiben)

Building Clojure Projects with Leiningen - einfach ganz simpel Leiningen erklärt. Gefällt mir sehr gut, besonders weil es zwar die ganze Java-Welt nutzt, aber sich wirklich wesentlich simpler anfühlt. Keine XML Orgien und saubere standalone-Jar-Erzeugung.

Amp | Version Control Revolution - Mercurial in Ruby, mit starkem Fokus auf Erweiterbarkeit über eine Ruby DSL. Wenn ich mir überlege wie oft ich ein VCS als Basis für irgendwelche Sachen (z.B. automatisches Deploy von Blogpostings in einem meiner Blogs) benutze, könnte das gar nicht mal so uncool sein.

formsets und inline forms in Django - ein ähnliches Problem kam letztens in der Firma auf, daher hier mal geblogmarkt, das könnte die Lösung sein.

Implementing a DHT in Go, part 1 - wer mal etwas mehr Go-Code sehen will, hier ein recht interessantes Beispiel: eine verteilte Hashtabelle (also Key/Value Paare verteilt über viele Knoten). Erster Teil beschäftigt sich mit den Buckets und der Routingtabelle, der nächste Teil wird dann das Netzprotokoll zufügen.

Understanding Haskell Monads - von allen Tutorials die ich bisher darüber gesehen habe, für mich das verständlichste.

AvahiAndUnicastDotLocal – Avahi - weil ich gerade ewig danach gesucht hab. Wie man ZeroConf (Bonjour) und z.B. ein Microsoft-Domain-Dingens unter .local miteinander verbinden kann.

gopenvpn - weil network-manager-openvpn unter Ubuntu Karmic Koala komplette Moppelkotze ist. gopenvpn ist wie Tunnelblick auf dem Mac - und es funktioniert einfach.

uWSGI - könnte interessant für die Django-Projekte in der Firma sein, klingt von der Beschreibung her ganz gut.

Clojars - der Anfang eines Repositories für Clojure-Bibliotheken ala Ruby gems oder PyPi oder CPAN.

Incanter: Statistical Computing and Graphics Environment for Clojure - sowas wie R (Statistikpaket) für Clojure. Könnte mir helfen mit Clojure mal ein paar praktische Doodles zu machen.

technomancy's leiningen - interessantes kleines Buildsystem für Clojure, das seine Metadaten einfach in Clojure abfasst und daher wesentlich kompakter daher kommt als Monster wie Ant oder Maven. Wenn man sowas wie Netbeans benutzt, ist natürlich der Build schon in der IDE geregelt, aber mit diesem System kann man auch gut kleine Standalone-Projekte ohne große Java-IDE aufbauen. Und es integriert sich gut mit Clojars.

2060 wird jeder Dritte 65 oder älter sein - ich halte ja nix von Voraussagen mit Laufzeit von 50 Jahren. Guckt mal 50 Jahre zurück und überlegt, ob aufgrund der damaligen Situation irgendein Statistiker auch nur minimal relevante Aussagen über unsere heutige Zeit hätte machen können. 50-Jahre-Vorhersagen sind nur Trendhochrechnungen, die bestenfalls als statistische Selbstbefriedigung dienen können.

Hudson CI - da ich mich verstärkt mit JVM Sprachen beschäftige, wäre sowas durchaus interessant. Eine Continuous Integration Plattform in und für Java (und auch für andere Zwecke nutzbar). Interessant vor allem die leichte Installation - einfach nur ein .war das man startet oder in einen Container wirft und dann über das Webinterface konfiguriert. Continuous Integration hilft gewaltig beim Deploy, gerade wenn man seine Projekte sauber mit Unit-Tests aufbaut. Manuelles Durchlaufen der Testsuite entfällt dann weitestgehend, da der CI Server das übernimmt und zum Beispiel automatisch sauber durchlaufende Builds als Beta deployen kann oder z.B. funktionierende Snapshots (im Sinne der Testfälle funktionierend) als Downloads bereitstellen kann.

Light and Shadow

Light and Shadow

Light and Shadow

PyGoWave Server - keine Ahnung ob ich das schon hatte, aber gerade aus aktuellem Anlass wieder nach gesucht: eine Implementierung der Google Wave Idee in Python. Und das witzige: die Website darunter ist mit Django gebaut!

Python moratorium and the future of 2.x [LWN.net] - eine gute Zusammenfassung der aktuellen Diskussionen rund um Python Releases, speziell die Diskussion ob 2.6 das letzte 2er Python ist, oder ob das schon existierende 2.7er noch released wird, ob es danach auch noch 2.8 oder mehr geben wird, oder ob der Wechsel zu 3.x forciert werden soll.

Steinbach wirft Westerwelle Profilierung vor - tja, mag ja sein, das sich Westerwelle profilieren will (sicherlich ist es so, er ist ja erst ganz frisch Außenminister und muss ja erst ein Profil kriegen das mehr aussagt als "kann kein Englisch"). Aber in diesem Fall hat er schlicht recht. Denn eine Frau Steinbach, die sich gegen die Anerkennung des Polnischen Staatsgebietes ausgesprochen hat, wäre als Aushängeschild eines Vertriebenenzentrums komplett das falsche Signal. So jemand ewig gestriges ist da völlig fehl am Platz. Wir reden hier ja nicht von einer Abstimmung in den 50ern oder so, wo die Stimmung noch aufgeheizter war - wir reden von einer Abstimmung in 1991 ...

Verteilte Wikipedias statt zentralem Monster mit Löschfanatikern - interessanter Vorschlag. Eine dezentrale Wikipedia auf Basis eines verteilten Versionssystems wie Git. Geht genau in die Richtung in die meine Überlegungen für mein Blog in letzter Zeit gehen. Ich hab sowas in meinem Second Life orientierten Blog ausprobiert und als sehr angenehm empfunden - Blogeinträge habe ich da auf einem meiner Rechner gemacht und dann einfach roh als Markdown files per Mercurial (mag ich lieber als Git vom Handling her) auf den Server gepushed, wo das ganze dann durch eine Blogengine genudelt wurde und statisches HTML erzeugt wurde. Sauberer Nachvollziehbarkeit von Änderungen, saubere Konfliktbehandlung, ordentliches Backup von alten Versionen - und die Übertragung per Mercurial (git ist da vergleichbar) ist auch schön zügig, da nur Differenzen rausgeschickt werden. Im Moment grübel ich immer noch wie ich sowas effizient auf ein Blogmonster mit mehreren tausend Einträgen anwenden kann. Und wie man sowas z.B. auch in der Firma nutzen kann, anstelle von Wikis, da diese dort auch nicht unbedingt die optimale Situation darstellen.

in which things are mapped, but also reduced - ein wirklich nettes Beispiel der Agents in Clojure anhand eines Log-Analyzers. Berechnungen werden auf parallele Prozesse verteilt, ein zentraler Prozess liest und verteilt, am Ende wird alles gemerged. Also klassische map/reduce Technik. Schön wäre natürlich noch gewesen wenn das Lesen auch parallelisiert worden wäre, denn auf Plattesystemen mit vielen Spindeln kann paralleles Lesen durchaus schneller sein als sequentielles Lesen (besonders bei gigantischen Filegrößen wie sie von Tim Bray im originalen Problem postuliert wurden). Aber trotzdem nett mal ein kompaktes sinnvolles Beispiel für map/reduce in Clojure zu sehen. Die Sprache gefällt mir immer besser.

Fefes Kritik an Spdy - ich bin ja nicht der eingeschworene Fefe-Fan, aber seine Kritik an Googles neuen Protokoll trifft IMO durchaus. Meine Meinung über SPDY ist auch eher negativ - die Kritikpunkte, die Google an HTTP hat, liessen sich problemlos innerhalb HTTP lösen. Multi-Requestr? Wir haben schon keep-alive um Verbindungsaufbauten zu minimieren, das zu erweitern zu Multirequest bei dem man mehrere Requests gleich abschickt und dann sofort alle Daten bekommt wäre kein unlösbares Problem. SSL gibts für HTTP auch schon lange. Komprimierte Header? Sorry, aber die Header machen nun wirklich nicht den großen Teil der Daten aus, die zu komprimieren bringt ja nun mal garnix.

More Freedom Necessary as Top Developers Abandon iPhone - wenn Apple das nicht bald mal in den Griff bekommt, kann das eine ziemlich negative Wirkung haben. Denn wenn jetzt schon eingeschworene Apple-Schmieden wie Rogue Amoeba Apple die rote Karte zeigen, dann werden auf Dauer auch andere dort folgen. Und wenn dann im App Store nur noch alberne Taschenlampen brennen, wird Apple vielleicht merken, das ihr Vorgehen selten blöd war. Aber dann wird es zu spät sein ... (man schaue sich nur an, wie Palm den Palm Pre mehr oder weniger als Plattform ad absurdum geführt hat durch all das Heckmeck rund um deren Variante von App Store).

nothing new - da vergleicht jemand Go (Googles neue Systemsprache) mit Algol 68 - und die alte Tante Algol 68 kommt recht gut dabei weg.

warum Common Lisp nie wirklich Mainstream sein wird - der verlinkte Source dient nur dazu, um eine binary-ascii decoding/encoding Bibliothek in verschiedenen Common Lisps über einen automatisch decodierenden und encodierenden Stream zu verwenden. Was steht drin? Berge von #+ Markern mit diversen Common Lisp Implementierungen. Das ist keine Portabilität, das ist schlicht Moppelkotze.

Play framework - ein recht interessantes Framework für Java im Stile von Django oder Rails. In der Dev-Version 1.1 unterstützt es auch Scala für die Viewfunktionen, was dann wieder ganz interessant ist, denn egal wie nett das Framework ist, ich werd mir nicht Java roh antun.

Google Closure: How not to write JavaScript - klingt so, als ob die tolle Library bei Google vom Praktikanten geschrieben wurde ...

Mandelbulb: The Unravelling of the Real 3D Mandelbrot Fractal - Mathematik kann einfach nur schön sein.

NetBeans support for Google App Engine - der Titel sagt schon alles. Netbeans gefällt mir übrigens relativ gut. Sieht zwar absolut arm aus (nicht sonderlich gut in Cocoa eingepasst - Eclipse macht da einen deutlich besseren optischen Eindruck), aber im Gegensatz zu den Alternative scheinen die Plugins recht gut zu funktionieren (Eclipse produziert komische Fehler, IntelliJ muss man erst die richtige Version vom Plugin für die richtige Version der IDE jagen gehen). Und das Clojure-Plugin von Netbeans scheint bis jetzt das netteste zu sein - die REPL ist echt gut.