Am Rande notiert ...

Epistle – Android Apps auf Google Play. Und noch ein Markdown-Editor für Android, der hier ist weniger Wiki als mehr einfacher Markdown Editor, aber trotzdem ganz interessant – kommt auch gleich mit Dropbox Unterstützung.

JWBs blog: Ema Personal Wiki for Android and Windows. Weil ich gerade bei Markdown war – hier gibts ein Markdown-nutzendes persönliches Wiki für verschiedene Systeme, unter anderem Android. Der Beschreibung nach ist das ganze recht ähnlich zu Vim Wiki.

OscarGodson/EpicEditor. Das klingt interessant – ein Editor fürs Web der nicht einfach HTML produziert, sondern Markdown. Könnte für einige Projekte interessant werden.

Blackmagic Design: Blackmagic Cinema Camera. Wow, das Teil ist echt cool. Sozusagen die mirror-less Video Option für Canon, könnte man sagen – denn es hat EF Bajonett. Sieht echt schick aus, der Preis von 3000 Dollar ohne SSD allerdings auch.

Cloud Party. Klingt interessant – ein bischen nach Second Life im Browser mit WebGL. Scheint vor allem wirklich auf die Core-Features von SL zu zielen: bauen und anpassen. Muss ich mal mit rumspielen.

Repo.js. Darüber hab ich die Source-Highlighter gefunden – ein kleines jQuery Plugin, welches auf einfache Weise ein github Repository in eine Webseite einbettet. Ganz praktisch, wenn man seine Projekte in eigenen Webseiten einbinden will und nicht die ganze Website an github abtreten will.

isagalaev/highlight.js. Gerade drüber gestolpert, kleiner Source Highlighter in JavaScript der mit einer Sprachheuristik arbeitet und so keine expliziten Angaben der zu färbenden Sprache braucht – er versucht einfach alle Sprachen durch und nimmt die mit den meisten erkannten syntaktischen Elementen. Mit jQuery VanGogh gibt es dafür auch noch ein jQuery Plugin.

ErlPort – Erlang port protocol for Python. Ein etwas anderer Ansatz für verteilte Kommunikation ist dieses Modul bei dem einfach die Erlang-Bordmittel für Kommunikation (Ports und Terms) implementiert werden. Damit kann man Systeme bauen die je nach Bedarf Python oder Erlang als Implementierungssprache verwenden.

Hurricane. Klingt interessant, ist ein verteiltes Messaging System das mit verschiedensten Sprachen arbeitet und damit Integration von verschiedenen Systemen biete. Unter anderem dabei is Python mit WSGI und Ruby mit Rails, wodurch z.B. ein verteiltes System auf Basis von Rails und Django denkbar ist. Zusätzlich gibt es noch einen Prozessmanager, mit dem die Prozesse selber nur Standard-IO machen können müssen und dann direkt von Hurricane gemanaged werden. Könnte ich mir gut für das eine oder andere Projekt in der Firma vorstellen.

SQLite4: The Design Of SQLite4. Das klingt sehr interessant. Besonders der erste Absatz in „2.0 Overview“, in dem er ein wenig darauf rumreitet, dass SQLite3 weiter unterstützt wird und beide Versionen parallel verfügbar bleiben. Und natürlich dann die diversen Änderungen, die SQLite4 gegenüber der anderen Version haben wird, wie zum Beispiel die deutlich bessere Kapselung der Engine in einem eigenen Objekt. Dadurch ist es durchaus möglich mehrere Datenbanken gleichzeitig offen zu haben, ohne großes jonglieren. Und was mich besonders freut: alle Berechnungen in Decimal Math und nicht mehr double oder float. Sorry, aber double (und schon gar nicht float) hat irgendwas in einer Datenbank zu suchen, ausser vielleicht als Datentyp für seltene Sonderfälle. Auch sonst einige nette Sachen drin, zum Beispiel covering indexes und natürlich die standardmäßig verfügbaren foreign key constraints.

Jarvis. Da bastelt jemand an sowas wie Light Table für Python (Light Table hat auch Python Support versprochen, aber bisher gibts da nur eine Preview für Clojure). Sieht ganz interessant aus und bringt endlich mal wieder frischen Wind in interaktive Umgebungen für Programmiersprachen.

Remote Debugging – Real Software Documentation. Davon sollten sich andere Systeme ein paar Scheiben abschneiden. Bei meinem Spielprojekt hatte ich in der neuesten Version ein Problem unter Linux. Meine Entwicklungsumgebung ist aber OSX. Da läuft alles tadellos. Also was tun? Nunja, gute Gelegenheit sich mal den Remote-Debugger anzugucken. Und der ist wirklich trivial. Ein Linux hochfahren (ich benutze dazu Vagrant auf meinem OSX Rechner), das Remote Debugger Stub rüberkopiere, ausführen, minimal konfigurieren und loslegen. Direkt aus der OSX IDE den kompilierten Code auf die Remote Umgebung übertragen und starten, direkt mit Breakpoints und Variablenwatch und solchen Sachen. Eben all das, was ich auch mit OSX lokal hätte. Im Prinzip gibt es nahezu keinen Unterschied, ausser das halt das Programm im Linux läuft. Warum ist das bei so vielen anderen Umgebungen so viel komplizierter? Ich werd wohl langsam alt, ich hab einfach keine Geduld für umständliche Umgebungen mehr.

..Nowhere... hat eine Reihe von freien Klassen und Plugins für RealBasic, unter anderem eine für einen syntaxfärbenden Editor und Listboxen mit beliebigem Zelleninhalt.

The Opa blog: Announcing Opa 1.0. Opa erzeugt jetzt keinen Native Code fürs eigene Backend mehr, sondern erzeugt JavaScript für Node.js Integration. Klingt durchaus interessant, durch die Integration von Node.js könnte da auf Dauer auch Zugriff auf die dort verfügbaren Libaries Einzug halten (wobei man dann natürlich die garantierten Eigenschaften von Opa verliert). Und zusätzlich sind jetzt auch die Chancen höher, dass man einen geeigneten Hoster findet bzw. das Selbsthosting könnte dadurch auch angenehmer werden.

Make runfcgi fail when database connection is open before fork. Das ist eine Sache nach der ich schon ewige Zeiten jage, zuletzt in ein paar ziemlich wichtigen Projekten. Flup arbeitet so, dass es die WSGI-Anwendung erst initialisiert und mit dieser initialisierten WSGI Anwendung dann die Forks für die Worker macht. Dummerweise gibt es bei uns aber Datenbankzugriffe wärend der Anwendungsinitialisierung – dadurch hat der Basisprozess schon eine offene Datenbankverbindung, jeder Fork kopiert diese Daten. Aber der Socket der Verbindung geht natürlich nicht mit – der neue Prozess denkt nur er wäre verbunden, ist es aber nicht. Zugriffe von denen neuen Prozessen fallen dann mit einer Exception raus. Man kann im verlinkten Patch auch gut den raise auf die Exception einfach durch connection.connection = None ersetzen. Dann wird einfach die Verbindung die sowieso defekt ist weggeworfen und in neuen Prozessen immer eine neue Verbindung aufgebaut. Damit haben wir zumindestens in einem Produktionsumfeld (mit psycopg2) das ganze beheben können und sind guten Mutes, dass es auch bei der Umgebung  mit pyodbc helfen wird.

LiveScript. Sieht interessant aus, ein Abkömmling von CoffeeScript, aber mit einer Syntax die stark an Haskell angelehnt ist und einem Prelude, der sich ebenfalls an Haskell orientiert. Man kann damit dann statt JavaScript in einer funktionalen Sprache arbeiten, die allerdings weiter versucht eine Balance zwischen funktionalen und imperativen Elementen zu halten – also nicht der pure-Ansatz wie bei Haskell.

ronnix/fabtools. Sieht interessant aus – ein paar Tools für Fabric, mit denen man einfache Systempakete und Pythonpakete (auch innerhalb virtual environments) verwalten kann. Sollte ich mir mal angucken, könnte ein paar Sachen etwas vereinfachen bei der Initialisierung von Arbeitsumgebungen. Allerdings benutzt Vagrant im Moment nur Chef und  Puppet und nicht Fabric, wenn ich das richtig erinnere.

SET TRANSACTION ISOLATION LEVEL Transact-SQL. Da gibts mehr Infos zum Isolation-Level in MSSQL, speziell was die Snapshot-Geschichte bedeutet. Im Prinzip bringt man MSSQL damit dazu sich ähnlich zu PostgreSQL zu verhalten.

#18251 multithreading deadlock in django.models.loading.get_apps – Django. Und noch eine Sache, die uns vielleicht betreffen könnte – Raceconditions zwischen Django-Threads bei der Initialisierung von Django-Applications. Gibt auch schon einen Patch dafür, der das in den Django Internals behebt.

Enabling Snapshot Isolation – SQLAlchemy 0.7 Documentation. Könnte uns das helfen? MSSQL hat scheinbar einen eher ungünstigen Isolation-Level als Default. Hmm, werden wir wohl mal ausprobieren.

„Prince Flo, King Django & The Deadlock Doctor“ von Bluekilla – laut.de – Song. Ok, ja, ich war auf der Suche nach Ideen zu Problemen mit Deadlocks und Django, und nunja, der Titel dieses Songs klingt so, als könnte er dann die Titelmelodie für mein Problem werden, aber dummerweise hat der Deadlock Doctor auch keine brauchbare Idee parat.

Using SELECT FOR UPDATE in Django. Drin was dran steht. Denn der Django ORM kann derzeit keinen SELECT FOR UPDATE erzeugen, aber manchmal braucht man ihn einfach.

WordPress › WordPress 3.4 “Green”. Erstaunlich – Releaseupdate, zwei Themeupdates (eines – twentyten – benutze ich als Parenttheme für mein eigenes RFC1437 Theme) und ein Plugin Update später und mein Blog tuts immer noch. Tja, und trotzdem unzufrieden: ein Bug im Atom-Posting für Media ist seit ewigen Zeiten offen und nicht gefixt. Und 3.4 ändert zwar die Atom-Posting-Infrastruktur, aber fixt den Bug wieder nicht. Und der alte Patch tuts nicht mehr, weil sich die Filestruktur geändert hat. Und genau an der Stelle zeigt sich immer wieder das Defizit des WordPress-Dev-Teams: auf Bugreports einzugehen und die verdammten Dinger zu schließen. Tickets mit Patch 11 Monate verschimmeln lassen, bis die Filestruktur sich so ändert, dass die Patches nicht mehr funktionieren? Lächerlich. Und für mich bedeutet das, dass mein Posting-Workflow für Bilder in das Blog also erstmal kaputt ist, denn der XMLRPC Upload kann keine Metadaten wie z.B. Titel setzen und der Atom-Upload lädt nur die Bilddatei hoch, erzeugt aber nicht die verschiedenen Bildergrößen, die fürs Posten nötig sind.

Thomas Tempelmann | Arbed – The Advanced RB Editor. Worüber man so alles stolpert – den Thomas kenne ich noch aus Modula-2 Zeiten, er war da sowas wie der Modula-2 Compiler Guru damals. Und jetzt benutzt er Real Basic. Und hat da ein recht interessantes Tool zum Arbeiten mit RBP Files gebaut, das ich mir mal angucken sollte, weil es ein paar Sachen vereinfachen könnte (speziell die Versionierung, die Möglichkeiten die RB von Hause da liefert sind da nicht so beeindruckend). Und ja, ich benutze wirklich Basic. Ist kein Witz.

ucsd-psystem-vm 0.11. Weil ich gerade mal einen Flashback hatte – UCSD-p System lebt! Der Link ist eine VM für UCSD Pascal, die unter Linux läuft. Und es gibt auch noch das originale UCSD-p System zum Download. Dort ist sogar eine Version (IV) für DOS, das kriegt man warscheinlich am leichtesten zum Laufen.

TryAPL. Also im Web. Also, so ein APL in JavaScript. Mit Popup-Tastatur mit den lustigen APL Zeichen drauf. Luschtig.

PEG.js – Parser Generator for JavaScript. Drüber gestolpert als ich ein paar Parser-Implementierungen gesucht habe, unter anderem eben PEG basierte Parser Generatoren, denn ich habe für Markdown eine PEG Definition. Aber ich muss da wohl noch etwas Theorie studieren bevor ich das sinnvoll einsetzen kann. Oder ich löte mir doch den Parser mit der Hand – so kompliziert ist die Syntax von Markdown ja nicht wirklich. Und ich muss für mein Spielprojekt sowieso den Parser um diverse eigene Sachen erweitern.

REALbasic | Open Source | Charcoal Design. Open Source für Real Basic. Jau, ich programmiere zur Zeit Sachen für mich selber in Basic. Und ehrlich: das macht Spaß. Die Site hab ich gefunden als ich nach JSON Implementierungen für Real Basic gesucht habe.

Xcode 4.3 MacRuby compatible problem workaround – 東 . Blog. Lästig, aber notwendig – die AppStore-Migration von XCode hat die Template-Installation von MacRuby zerbröselt, so dass auch mit dem neuen MacRuby (0.11 mit Support für XCode 4.2 und 4.3 ist raus) die Templates nicht auf Anhieb funktionieren und die Integration mit Interfacebuilder nicht tut. Mit der Anleitung hier tuts wieder.

Waterbear: Welcome. Fällt in die ähnliche Ecke wie Google Blockly, aber es ist eher ein Toolkit auf dem aufbauend man visuelle Sprachen bauen kann. Also vielleicht doch interessant für den einen oder anderen. Zum Rumspielen allemal interessant.