Elnode - an Emacs version of node.js. Mal wieder ein Projekt aus der Klasse "weil es geht" - ich glaube jedenfalls nicht, dass irgendjemand auf die Frage "wie will ich meine Webservices betreiben" als Antwort spontan "Emacs" sagen würde. Aber nunja, das Betriebssystem mit eingebauten Basisfunktionen zur Textverarbeitung kann eben auch einen asynchronen Webserver darstellen.
programmierung - 15.6.2011 - 18.7.2011
Replication, atomicity and order in distributed systems. Sehr interessanter Artikel über Verteilung und Ordnung in verteilten Systemen mit paralleler Ausführung - denn das ganze ist nicht wirklich trivial. Lesenswert alleine für die Links auf verschiedene Projekte in dem Umfeld. Am Ende ein bischen ein Cliffhanger, weil auf einen kommenden Artikel verwiesen wird - hoffentlich kommt der auch, denn dessen Thema klingt ebenfalls interessant.
Kivy: a crossplatform framework for creating NUI applications. Interessante neue GUI-Library für Python, läuft auf verschiedensten Plattformen (und neben den drei Großen Desktopumgebungen ist mit Android ist auch schon eine mobile dabei) und kann OpenGL zur Beschleunigung der Ausgabe einsetzen (intern haben die einen JIT, der die Basisfunktionen compiliert und so schnelle Ausführung ermöglicht).
Simple, Secure, Scalable Web Development with Opa. Das Opa Buch ist auf den ersten Blick eine sehr vollständige Einführung in die Sprache Opa und ihre Motivation. Was auch begeistert: die Installation unter Linux basiert nur auf Basispaketen, da wird nicht erstmal das halbe Internet runtergeladen und installiert nur weil man eine Sprache benutzen will. (Was bei Spielereien mit Opa übrigens eher nicht so positiv auffällt: sehr lange Compile Zeiten - schon die im Buch gelieferten Beispiele, die ja nicht gerade überragend groß sind, liegen schnell mal bei recht heftigen 15-20 Sekunden ...)
Bulbflow: a New Python Framework for Graph Databases. Auch wenn ich immer wieder denke, Graphdatenbanken sind eigentlich sowas von 70er Jahre, nicht alles was alt ist ist automatisch schlecht - IMS ist ja auch immer noch da und für manche Zwecke sehr interessant. Und das hier klingt interessant, sowas wie DBAPI für Graphdatenbanken, so dass man in seinen Projekten auch mal die Datenbank wechseln kann, ohne das alles komplett umgeschrieben werden muss.
The Pragmatic Bookshelf | Core Data. Das Buch klingt recht interessant, Core Data wird auch bei MacRuby voll unterstützt, wäre also vielleicht interessant sich das zu holen und zu lesen.
Responsive Applications - Mono. Ein Artikel über die verschiedenen Wege wie man Anwendungen mit GTK# aufbauen kann, damit sie zügig reagieren und das Userinterface nicht blockieren, obwohl GTK# single-threaded ist (also nur vom GTK#-Thread auf das UI zugegriffen werden darf).
MonoMac und XCode 4
Autsch, das hat mich jetzt voll erwischt - ich wollte mal mit den GUI Tools spielen, aber MonoMac unterstützt XCode 4 noch nicht vollständig und hat nur lapidar das zu sagen:
Developers that use Interface Builder are recommended to install Xcode 3.2.6 for the time being. MonoTouch News.
Schlecht daran: das ist aus März. Das ist deutlich zu lange keine Unterstützung, so ist MonoMac einfach nur ein halbes Werkzeug (wenn überhaupt). XCode 3 und XCode 4 parallel laufen lassen ist auch keine Option (beides will im selben Ordner rumliegen). Defakto ist man entweder auf XCode 3 zurückgeworfen, oder MonoMac ist raus. Oder man baut seine GUI mit GTK# - dann ist XCode egal (der Compiler-Teil von XCode 4 ist unterstützt), aber dann kann man zum Beispiel AppStore vergessen (und GTK# sieht nicht wirklich toll aus). Mist.
Jtalk Smalltalk. Keine Ahnung wieso das bisher an mir vorbeigeschlichen ist - aber eine recht vollständig wirkende Smalltalk-Implementation in JavaScript inklusive IDE mit Class-Hierarchy-Browser ist schon durchaus bemerkenswert, auch wenn es nicht das erste Projekt dieser Art ist (Clamato wäre ein anderes, aber das scheint größtenteils tot zu sein).
jQuery vs MooTools: Choosing Between Two Great JavaScript Frameworks. MooTools hab ich ein bischen aus den Augen verloren, früher (bevor ich mit jQuery und dessen vielen Plugins Bekanntschaft gemacht habe), war es meine bevorzugte Library für JavaScript. Von daher mal interessant zu lesen, wie es sich mit jQuery vergleicht (aus der Sicht eines MooToolers geschrieben).
asuhan / happy. Auch nicht uninteressant: ein PHP Interpreter bzw. Compiler in Python auf Basis der PyPy Toolchain. Ok, ist jetzt nicht der Brüller, ich glaube nicht, dass ich schon sehr oft die Frage hatte "wie kann ich jetzt in Python PHP Code ausführen" - aber z.B. wenn eine Site auf Django-Basis den Nutzern PHP als Scriptsprache zur Verfügung stellen will, könnte sowas durchaus interessant werden - PHP ist nunmal eine der bekanntesten Scriptsprachen für das Web, Python aber mit einigen Frameworks einfach sehr viel interessanter aus Produktionssicht.
cfbolz / Pyrolog. Hatte ich den schon mal? Ein Prolog-Interpreter in Python, der die PyPy Toolchain benutzt. Könnte sehr interessant werden wenn man mal wieder ein bischen Regellogik in seinen Programmen braucht aber nicht unbedingt externe Tools dafür anwerfen will.
The Node Beginner Book » A comprehensive Node.js tutorial. Falls ich mir wirklich Node.js nochmal näher angucken will, könnte das (freie!) Buch hier hilfreich sein. Oder auch für andere, die das gleiche vor haben.
JQuery-Wysiwym - PushingKarma. Noch was das für mich interessant werden könnte: ein Markdown (unter anderem) Konverter in JavaScript. Kann benutzt werden um einen Life-Editor für Markdown-Code zu bauen. Ob man das für Restructured Text erweitern könnte? Denn das ist eines der Probleme mit denen ich mich öfter mal rumschlage, das ich für Docbook/XML Output eben ReST als Input habe, aber dann keinen geeigneten grafischen Editor.
pdf.js reached its first milestone. Und weil wir gerade bei JavaScript und PDF sind: mit dem Projekt hier kann man PDF Dateien ohne PDF Reader anzeigen - nur mit HTML5 und JavaScript. Sehr interessant, wenn das weiter ausgebaut wird, könnte das an vielen Stellen den PDF Reader völlig überflüssig machen.
PDFKit — A PDF Generation Library for Node. Ich glaub ich muss mir doch nochmal wieder Node.js angucken. Und CoffeeScript. Diese PDF Generierung sieht sehr interessant aus und könnte bei einigen Projekten ganz praktisch sein. Wobei mir bei solchen Libraries immer der Highlevel-Teil fehlt - das eigentliche Layouten. Wann baut jemand eine TeX Engine in JavaScript? Hyphenator liefert ja schon eine sehr gute Silbentrennung, aber was einfach fehlt ist eine gute Layoutengine zur Verteilung von Texten auf definierten Seiten. Und bitte auch mit guter Unterstützung für Tabellensatz.
manuel/edgelisp. Weil ich nie die Finger von Klammern lassen kann - ein Common Lisp Dialekt und dessen Implementation, die nach JavaScript compiliert un den Lisp-Code im Browser ausführbar macht. Macht einen recht vollständigen Eindruck - viele andere Projekte zeigen nur die rudimentären Elemente, aber hier gibts auch schon generische Funktionen und Makros.
paver/paver. Klingt interessant, wie eine Mischung aus SetupTools/DistUtils und Make (bzw. deren high-level Kumpel Rake/Cake). Könnte ich mir mal angucken, denn für Python-Projekte wäre das vielleicht doch recht praktisch - allerdings sind die Standardtools von Python auch schon ganz brauchbar.
PerlDancer - The easiest way to write web applications with Perl. Zur Ergänzung meiner Sammlung von Sinatra-angelehnten Microframeworks für Webanwendungen hier noch eines in Perl. Nicht das ich jetzt unbedingt Perl wieder einsetzen wollen würde - ist eher wegen der Vollständigkeit hier aufgeführt.
danlucraft/git.js. Wow, beeindruckend. Und potentiell sehr interessant - git als genereller Synchronisationsmechanismus ist ausgesprochen praktisch und Integration von Git-Funktionalität in Webanwendungen könnte einige Probleme gut lösen (z.B. wenn es um Synchronisation mit anderen Stellen geht, oder natürlich für Dokumenteninterne Versionierung). Muss ich mir mal genauer angucken bei Gelegenheit, ich hätte da schon die eine oder andere Idee wie ich das einsetzen könnte. Ist im Moment noch recht rudimentär, aber beobachten lohnt sich sicherlich.
Stiivi / cubes. Mal für später geblogmarkt: eine OLAP Library in Python die auf SQL Datenbanken oder MongoDB aufbauen kann. Für so einige Sachen auf der Arbeit könnte das mal interessant werden.
Tree for policy-settings-basic in MeeGo Multimedia - MeeGo. Da immer mal wieder behauptet wird, Prolog sei so eine völlig esoterische Sprache die niemand im normalen Leben benutzen würde: der Teil von MeeGo (wir erinnern uns, das ist dieses Handset-Betriebssystem vom Nokia N900/N950/N9), der abhängig von Umgebungsbedingungen verschiedene Einstellungen triggert, ist in Prolog geschrieben. Und läuft so produktiv auf den Handsets.
DropKick - a jQuery plugin for beautiful dropdowns. Sieht nett aus, auch wenn es natürlich hauptsächlich optisches Gimmick ist. Aber manchmal sind optische Gimmicks auch notwendig.
Prowl - iOS Push Notifications. Ist ein ausgesprochen praktisches Teil für das iPhone oder iPad als Ergänzung, weil man nette APIs bekommt, mit denen man z.B. von Servern aus Nachrichten an das iPhone schicken kann. Oder man benutzt Send2Prowl vom Firefox oder Prowl von Chrome um sich einen Link direkt ans iPhone zu schicken.
Opa: Advancing web development to the next generation. Hatte ich glaube ich im alten Blog schon mal, aber was solls - jetzt ist der Code auf github und unter Open Source Lizenz. Und das ganze Projekt ist nicht irgendwas grade frisch rausgekommen - das hat 10 Jahre Forschungseinsatz hinter sich, die Leute wissen wirklich was sie da treiben. Die Idee ist cool (und auch schon von anderen aufgegriffen): eine Sprache, aus der in Webanwendungen alle Schichten erzeugt werden, also auch JavaScript, HTML, CSS und das Backend. Das ganze mit typsicherung und entsprechenden Prüfungen und einer sich zum Beispiel daraus ableitenden Sicherheit vor Injections und XSS Angriffen. Und als Sprache drunter läuft OCaml, was ja auch nicht die schlechteste Sprache ist. Sollte ich mich wirklich mal ernsthaft mit auseinandersetzen, besonders weil verteilte Installation auch gleich mit kommt - und damit eine weitaus einfacherer Scalability gegeben ist als bei vielen anderen Ansätzen (der von OPA erinnert in gewisser Weise an den von Erlang-basierten Systemen). Oh, und Webanwendungen sind dann einfach nur ein einzelnes Executable - und nicht gigantische Verzeichnisstrukturen mit drölfundneunzig XML-Files (oder YAML-Files) zum Anpassen.
SymPy. Symbolische Mathematik mit Python direkt in der Python Shell. Zusammen mit NumPy für Matrizenoperationen und SciPy für diverse weitere wissenschaftliche Funktionen wird aus Python damit ganz fix ein schon recht veritables Mathematiksystem. Nichts wirklich groß neues außer vielleicht SymPy selber.
PyPy Status Blog: Global Interpreter Lock, or how to kill it. Wow, das klingt gut - das PyPy Projekt will das GIL durch STM (Software Transactional Memory) entschärfen - und hat dafür durchaus einen interessanten Ansatz. Manche Sachen sind auch erst durch PyPy möglich, weil dort entsprechende Infrastruktur für Codetransformationen vorhanden ist, die in CPython fehlen.
jsPlumb für alle, die Diagramme darstellen wollen (also vernetzte Graphen von Objekten) und an denen rumzuppeln müssen, um sie besser zu sehen oder zu strukturieren. Oder einfach nur weils witzig ist und cool.
Paper.js ist eine Grafikengine für das Canvas Element. Sieht alles sehr nett aus und hat eine Menge Features. Schon beeindruckend was man alles mit JavaScript im Browser anstellen kann - und das hier könnte im Gegensatz zum bootenden Linux sogar recht interessant für Projekte sein. Das ganze kommt aus dem Illustrator Umfeld und orientiert sich an Scriptographer, einem Plugin für Illustrator mit dem man dort Grafikelemente in JavaScript programmieren kann.
Sync BitBucket and GitHub - Ramanas Blog. Falls ich mal wechseln will, oder einfach nur Repositories sowohl für git als auch bitbucket zur Verfügung stellen will, dann könnte das hilfreich sein. Ausserdem auch einfach nur um mal Repositories zu konvertieren.
Issue Bucket. Gibt auch einen Client für BitBucket auf iOS, allerdings ist der iAd-Verseucht und leider sehr eingeschränkt in den Features. Und sieht eher wie eine Fingerübung in Oberflächengestaltung aus - sehr schlicht, man könnte fast "lieblos" sagen. Aber man kommt wenigstens an die wichtigsten Sachen zum Angucken ran und es kostet ja nichts.
iOctocat is your GitHub companion for the iPhone and iPod Touch. So langsam wird GitHub immer interessanter - auch für iOS gibt es einen interessanten github Client. Und der ist Open Source.
NancyFx/Nancy. Nancy ist dann schon deutlich näher an Sinatra oder Scalatra dran, geht aber eigentlich von C# aus - aber vielleicht kann man da ja auch einfach Module in F# schreiben, die Interoperabilität der beiden Sprachen ist ja sehr hoch (vergleichbar zu Scala und Java).
Bistro. Das ist jetzt ein Web Framework für F#, inspiriert von Django (unter anderem). Leider nicht so schlank wie Scalatra oder andere Mikro-Frameworks, aber vielleicht trotzdem mal einen Blick wert.
scalatra/scalatra. Das ist sowas wie Sinatra, nur eben nicht für Ruby sondern für Scala. Es hat direkte Unterstützung für Scalatest und bietet auch sonst einige nette Features und DSLs um schnell und simpel zum Ergebnis zu kommen - könnte gerade für die Erstellung von Webservices in Scala interessant sein.
The Larch Environment. Mal angucken - eine visuelle Programmierumgebung für Python. Interessantes Detail: Objekte werden nicht einfach nur textuell dargestellt, sondern über einen eigenen Mechanismus auch grafisch dargestellt - klingt ein bischen wie Output-Recording von CLIM. Zusätzlich ist das ganze eher als interaktives Dokument aufgebaut - also vergleichbar zu diversen Mathematik-Systemen (z.B. Mathematica oder Maxima). Leider nicht auf der normalen Python-Umgebung aufbauend, sondern auf Jython - also JVM als Runtime drunter.
django-gae2django - Django-based implementation of App Engine APIs - Google Project Hosting. Müsste ich mir mal angucken - damit kann man AppEngine Programme auf eigenen Servern laufen lassen, die dann auf Django basieren (die AppEngine-APIs werden also über Django-Mittel nachgebildet). Sicherlich besser als direkt den AppEngine Dev-Server zu benutzen.
DocumentClouds VisualSearch.js. Interessante JavaScript Library die ein recht mächtiges Suchfeld realisiert - man kann nach normalen Texten suchen oder nach Facetten der Daten (also spezifische Felder wie Titel oder Autor) mit automatischer Vervollständigung bei diesen Feldern. Das ist gerade für Dokumentensuche in teilstrukturierten Datenmengen interessant und die Darstellung im Browser ist nett gemacht. Guter Kompromiss für Suchfelder in die man eben nicht nur einfache Textsuchen ala Google reinhauen will, sondern unter Umständen eben auch Eingrenzungen auf Metadaten, ohne dass der Benutzer alle Optionen für Metadaten auswendig wissen muss in ihrer exakten Syntax.
SourceTree | Mercurial and Git GUI for Mac OS X. Das sieht auch sehr gut aus - allerdings sind 45 Euro nicht gerade wenig. Dafür kann es aber Git, Mercurial und Subversion, vielleicht sollte ich es mir also doch mal angucken (gibt ja eine freie Testversion). Update: Kurztest von mir und das Teil gefällt mir wirklich sehr gut - man kann externe Diff Tools einbinden (Changes wird leider nur als Diff, nicht auch direkt als Merge unterstützt) und hat immer die gleiche Oberfläche, egal welcher Server dahinter hängt. Das nimmt Git einiges der Schmerzen. Versionstools werden intern mitgeliefert, man muss also nichtmal die Kommandozeilenversionen installiert haben. Sieht wirklich interessant aus.
GitHub for Mac. Bin ja überzeugter Bitbucket-User wegen Mercurial, aber das Teil hier sieht echt gut aus, da könnte man glatt nur wegen der Oberfläche auf git wechseln. Bin halt unten drunter doch oft Mäuseschubser und Optikklicker.
traits.js - Traits for Javascript. Interessantes Experiment für JavaScript - Traits bieten bessere Komposition als klassische Klassen und mehr Struktur als JavaScripts Prototype-OO - und hier werden die Features von Traits gut auf die vorhandenen JavaScript Features abgebildet (z.B. werden Objekte über Closures abgebildet). Nachteil wie bei allen solchen Spracherweiterungen ist natürlich, dass man in der Regel zwar selber damit arbeiten kann, aber eben andere Bibliotheken sie nicht nutzen und damit der Vorteil bei stark auf Fremdbibliotheken aufbauenden Projekten eher minimal ist.
Technical Discovery: Speeding up Python NumPy, Cython, and Weave. Interessant für Zahlenfresser die nicht unbedingt auf PyPy wechseln wollen, sondern in der normalen CPython Welt bleiben wollen. Gibt einen schnellen Vergleich von NumPy, Weave und Cython.
Leos Home Page. Leo ist ein Outliner und Datenorganisator - das ist erstmal nix besonderes. Aber dieser ist in Python geschrieben und Portabel (überall hin wo es PyQT gibt, zumindestens in der Version 4.9, ältere hatten auch Tkinter als Oberflächenlibrary). Kann auch als IDE für Python eingesetzt werden.
Mozilla Firefox Add-on Builder and SDK - zum Erstellen von Erweiterungen mit HTML5, CSS und JavaScript. Der Builder ist eine Web-basierte IDE und das SDK liefert einen ganzen Stapel von APIs zur Programmierung von Erweiterungen.
Python/Harmattan - MeeGo wiki. Im Zusammenhang mit dem N9 sehr interessant: eine vollständige (und das meinen die wirklich Ernst - fast alle Teile des Systems sind erreichbar) API für MeeGo in Python. Damit kann man das ganze Telefon komplett in Python programmieren und auch die so erstellten Applikationen im Ovi Store (Nokias Variante des AppStores) veröffentlichen. Sowas ähnliches hatte ja Nokia schon mit Symbian in Form von Python S60 und den Tabletts unter dem Vorgänger von MeeGo, von daher hat gute Python-Unterstützung schon fast Tradition bei denen.
gcc python plugin and static analyser for CPython sources. Auf sehr seltsame Art und Weise Cool. Ich mein, mal ernsthaft: wer guckt sich gcc an und denkt da spontan "oh, da sollte ich einen Python-Interpreter einbetten"? Ja, ich weiss, die Antwort ist "der Autor dieses Plugins". Seltsame Dinge tun manche Menschen ...
What Is Inside A Cat. Ein sehr interessantes Dokument, das die Implementierung von Wraith Scheme sehr detailliert beschreibt, speziell auch die Implementierung der parallelen Prozesse.
Skulpt. Eine Python-Implementierung in JavaScript, Client-Side. Also im Browser. Nett der Hinweis, man solle garnicht erst probieren den Server zu crashen, man würde nur seinen eigenen Zeh stoßen ... (ansonsten ist das aber wohl eines der vielen Projekte "weil es geht")
MAXIMA. Nettes Buch mit vielen Beispielen wie man Maxima benutzt. Da der Schockwellenreiter gerade mal wieder von Maxima schrieb und mir die wxMaxima Oberfläche in seinem Post recht gut gefallen hat (und im Gegensatz zu manchen anderen Programmen auch unter OSX ordentlich aussieht), werde ich damit wohl auch mal etwas rumspielen. Ganz besonders, weil es deutlich schlanker ist als Sage (auch wenn das natürlich viel mehr kann, da es noch viele andere Mathepakete integriert).
JQuery Form Wizard. Interessantes kleines Plugin welches komplexe Formulare über Steps abarbeiten lässt - und die Routen durch das Formular können abhängig von gewählten Daten eines vorherigen Schrittes sein. Zusätzlich werden #-Hacks benutzt, um die Formularschritte in der History auftauchen zu lassen (in dieser Form begrenzt ist das meiner Meinung nach absolut in Ordnung).