Linkblog - 26.4.2012 - 18.6.2012

Enabling Snapshot Isolation - SQLAlchemy 0.7 Documentation. Could this help us? MSSQL seems to have a rather unfavorable isolation level as default. Hmm, we'll probably try it out.

"Prince Flo, King Django & The Deadlock Doctor" by Bluekilla – laut.de – Song. Okay, yes, I was looking for ideas about problems with deadlocks and Django, and well, the title of this song sounds like it could become the theme song for my problem, but unfortunately, the Deadlock Doctor doesn't have any useful ideas either.

Using SELECT FOR UPDATE in Django. That's what it's all about. Because the Django ORM cannot currently generate a SELECT FOR UPDATE, but sometimes you just need it.

WordPress › WordPress 3.4 “Green”. Amazing - release update, two theme updates (one - twentyten - I use as a parent theme for my own RFC1437 theme) and a plugin update later and my blog still works. Well, and still dissatisfied: a bug in the Atom posting for Media has been open for ages and not fixed. And 3.4 changes the Atom posting infrastructure, but doesn't fix the bug again. And the old patch doesn't work anymore because the file structure has changed. And that's exactly where the deficit of the WordPress Dev team always shows up: to respond to bug reports and close the damn things. Let tickets with patches rot for 11 months until the file structure changes so that the patches no longer work? Ridiculous. And for me that means that my posting workflow for images into the blog is broken for now, because the XMLRPC upload cannot set metadata such as title and the Atom upload only uploads the image file, but does not create the different image sizes needed for posting.

Thomas Tempelmann | Arbed - The Advanced RB Editor. You stumble upon all sorts of things - I still know Thomas from Modula-2 times, he was like the Modula-2 compiler guru back then. And now he uses Real Basic. And he has built a quite interesting tool for working with RBP files, which I should take a look at because it could simplify a few things (especially versioning, the possibilities that RB offers out of the box are not very impressive). And yes, I really do use Basic. No joke.

ucsd-psystem-vm 0.11. I just had a flashback - UCSD-p System is alive! The link is a VM for UCSD Pascal that runs under Linux. And there is also the original UCSD-p System for download. There is even a version (IV) for DOS, which is probably the easiest to run.

TryAPL. Also online. Also, an APL in JavaScript. With a popup keyboard with the funny APL characters on it. Fun.

PEG.js – Parser Generator for JavaScript. I stumbled upon it while looking for some parser implementations, including PEG-based parser generators, as I have a PEG definition for Markdown. But I probably need to study some theory before I can use it meaningfully. Or I'll just handcraft the parser - the Markdown syntax isn't really that complicated after all. And for my game project, I need to extend the parser with various custom features anyway.

REALbasic | Open Source | Charcoal Design. Open Source for Real Basic. Yeah, I'm currently programming things for myself in Basic. And honestly: it's fun. I found this site while searching for JSON implementations for Real Basic.

Xcode 4.3 MacRuby compatible problem workaround - ćť± . Blog. Annoying, but necessary - the AppStore migration of XCode has broken the template installation of MacRuby, so that even with the new MacRuby (0.11 with support for XCode 4.2 and 4.3 is out) the templates do not work right away and the integration with Interfacebuilder does not work. With the instructions here it works again.

Waterbear: Welcome. Falls into a similar category as Google Blockly, but it is more of a toolkit on which one can build visual languages. So maybe interesting for one or the other. Definitely interesting to play around with.

google-blockly - A visual programming language - Google Project Hosting. Generally, I consider visual programming languages to be dead-ends and rather useless, albeit entertaining toys, in most cases. I would also place Blockly in this category, especially since it is really just a visual representation of classic programming structures - such as IFs, variables, and the like. Actually disappointing, considering that Prograph already visualized data flow programming decades ago (and thus provided a much more interesting model for a visual programming environment).

AugmenteDev. Absolutely cool toy - you print a few markers (small pieces of paper with patterns), place them around, and then you simply load a few 3D models onto your iPhone or iPad - these then appear at the locations of the markers, correctly scaled and rotated according to the markers. Very entertaining, even if it sounds banal at first. My to-do now is to convert my SL avatar into its own 3D model in various poses, and then have these as models on my iPhone to take photos from all sorts of places with my avatar in the picture. Oh, and the app is free for iOS and Android.

RQ: Simple job queues for Python. Really simple - you only need a Redis server and the module and that's it more or less. Simple function calls are thrown into the queue, executed and results returned. No big overhead in the code.

apenwarr/bup. A very interesting small tool that manages backups differentially - and that is based on the git data structures. In principle, one could consider it as an intelligent splitter for large files with minor changes in each version - for example, tar files from servers. For this purpose, an rsync-like algorithm is used to determine the differences and the result is stored in a git archive. The whole thing can also be combined with the previous git-annex and thus provide a space-saving backup solution.

git-annex. Interesting plugin for git with which you only manage the metadata of large files, but not their actual contents in git. The files themselves are managed as normal external files, but the directory structures and references are correctly versioned - and all this together with normally versioned files. This bypasses the problem that git has with large files. And thus something like a photo archive based on git becomes possible.

Mumble. It's somehow funny when you get your software tips from a political party, but never mind. Mumble is something like Teamspeak (or also a distant relative of Skype group chats or Google+ Hangouts), only open source and for self-hosting. Clients are also available for OSX, Windows, Linux, and iOS. By the way, there are also efforts to integrate mumble as an alternative to Vivox in OpenSim as a voice system.

Sphero. Oh man, I want that thing. Why is there so much cool stuff now that I'm an adult? (for those who don't want to click: a robot in the form of a ball with precise control and the ability to use it as a controller - and controlled through apps on the smartphone).

Ubuntu 10.04: Why is ksmd eating CPU cycles? | Interphero Miscellany. Okay, just stumbled upon this on my server and blogging it for later reference. When using kvm, on newer Ubuntu versions, ksmd appears, which actually compares memory pages between virtual machines and only stores duplicate pages once - this saves RAM but consumes CPU. If you don't do over-commit on memory, you can safely turn it off.

Features | ownCloud.org. Hmm, now I just need iOS access to the OwnCloud and I think I have a longer installation session ahead of me. I probably won't be able to completely give up Dropbox or similar services (and I don't want to), but maybe it will be enough to switch back to the free version of Dropbox if I only manage the large amounts of data on my own server.

TypeQuery. Generic functions for Python. Only a simple variant with a restricted target range, but definitely worth considering for some things. Currently still single-dispatch on the first argument, but multiple dispatch is planned. At the moment, it is therefore pretty much identical in function to simplegeneric by PJE. And very similar to my multidispatch, in which I try to replicate the model of Clojure generic methods. I really should work on multidispatch again. Or just play more with clojure-py, then I can use "the real thing" right away.

PostgreSQL: Documentation: 8.4: hstore. From the series "Things your database can do that you might not know": Key-Value-Stores within a PostgreSQL data field. Or also poor-mans-object-notation. Or simply practical when you want to store loosely structured data but don't want to constantly adjust the schema - the schema is then the primary data for the order of the model, the dependencies, cardinalities, etc. - and the hstore field then stores the additional manifestations that, for example, result dynamically from business requirements. Sometimes the better alternative to a denormalized property table. And it's been there since the 8.x versions (though it is a loadable module).

TeamPostgreSQL - PostgreSQL Web Admin GUI Tools. Looks good, a web interface for administering PostgreSQL databases that comes close to PGAdminIII and doesn't look as spartan as PHPPGAdmin. However, I have problems accessing databases from a project - it seems not everything is quite cleanly implemented, especially in the handling of sequences. Therefore, I can't say anything yet about whether it is performant. The whole thing comes with a Java-Tomcat server, so you can install and run it locally directly.

Map of Life. Interactive map based on Google Maps that can display the distribution of animal species.

Matasano Security - Matasano Web Security Assessments for Enterprises. Analysis of cryptography in JavaScript. Summary: Cryptography in JavaScript is usually a bad idea, as the JavaScript is loaded from an untrusted source or untrusted network (if you trusted it, cryptography would hardly be necessary) and therefore a chicken-and-egg problem exists. Regarding the previous 0bin project: cryptography was not implemented to secure the user, but to secure the 0bin operator - it is therefore relatively irrelevant to the operator whether users are secure or not, it is only about "plausible deniability" for the operator. The situation is different, however, when a JavaScript encryption is implemented instead of using SSL.

sametmax/0bin. Interesting approach to circumvent the problems of pastebin hosting. With pastebin-like sites, the problem is that users post all kinds of content and the server operator can quickly be held liable. 0bin tries to shift this problem so that the operator cannot know what is in the pastebins, as they are stored encrypted and the encryption is done by the client via JavaScript. This works, of course, only if the judges also accept that the server operator cannot know what is going on - and not, for example, argue that he should then just install different pastebin software where he can know and still hold him responsible. Certainly an interesting approach, especially the idea of putting the key for the encryption in the hash of the URL (i.e., the part after the # in the address) and thus having a functioning URL, but still not providing the server with the key (since the hash of a URL is only used by the client and not communicated to the server).

Panasonic 12-35mm f/2.8 X lens officially announced!. Ok, the lens looks really good now - I think I might be tempted. Because a brighter zoom with a bit more wide-angle could be very good for the GH1.

Embedding Python in Objective-C: Part 2. An interesting project that embeds Python in Objective-C projects and allows direct connections between Python and Objective-C code via automatically generated bridge modules. I might check this out at some point, I still have a game project that could benefit from this.

jodal/pykka. An actor library for Python, based on threads and optionally on GEvent. Looks quite good and could be quite practical for communicating processes if the actor model fits. Perhaps one could also use something like this as a basis to run my Linda Tuplespace in a distributed manner.

Jython 2.7 alpha1 released!. Wow, it took a long time, but now at least the three major alternative Python runtimes are all at 2.7 (IronPython, PyPy and now Jython). I hope that Jython 2.7 has gained significantly in performance, because otherwise it is far behind in comparison - my last tests were rather depressing (2-3 times slower than CPython).

cocoa-python - Port of Objective-C runtime to Python using ctypes. It's actually all in the link text. Interesting because the author uses it to write a port of Pyglet that does not require PyOBJC and would therefore be completely python-only source code.

R17 - flexible, scalable, relational data mining language. Looks quite interesting, basically something like a cross between AWK and SQL. The result isn't really pretty, but it seems practical - especially because you can easily use multiple processors, or even multiple machines (implicit parallelization), and thus also quite easily evaluate large amounts of data with ad-hoc queries. Because there is a simple format for passing data to further steps, it can also be easily adapted to new data sources without first running a lengthy export step there.

The Schemaverse. And while we're on the topic of strange projects: someone has programmed an MMO that runs entirely within PostgreSQL. So using pgSQL as the language. Something like a multi-user battleships game. It just runs in a database. And is controlled via SQL.

sipML5 - The worlds first open source HTML5 client. Oh - someone wrote a SIP client in JavaScript that runs entirely in the browser. It is based on WebRTC, a standard for real-time communication on the web.

Plumbum: Shell Combinators and More — Plumbum: Shell Combinators. Looks interesting and much more thought out than some alternatives I've looked at (and much more expanded than shutil+glob).

Exclusive premiere: The full Leica X2 review – Ming Thein | Photographer. Certainly, the X2 (especially together with the electronic viewfinder) will not run even approximately in the category "cheap", but somehow it sounds like a really good update to the X1. And compared to the, in my opinion, completely absurd overpriced M9-M, the X2 is at least roughly within the range of "could consider it if you have some money left over".

Pocket-sized fuel cell charges phones for two weeks - Mobile Phones - CNET - CNET Asia. If this thing becomes a reality, I want one. Finally, mobile power that can be stored and then activated anywhere outdoors when needed. Plus, a battery charger connected via USB for the camera battery (or check if you can charge directly in the camera via USB) and the job is done.

Clojure/core — Reducers - A Library and Model for Collection Processing. Why a new library? Because the standard functions are interesting and meaningful, but sometimes you need a stricter implementation that avoids intermediate temporary collections and provides direct out-of-the-box support for parallelization. Without much fuss and bother, just a different namespace.

A free book (that will also be available as dead tree or electronic wood from O'Reilly) about backbone.js. Backbone.js provides an MVC-inspired structure for JavaScript programming (where you can argue a lot about what exactly is the View and the Controller and whether it is "pure" MVC - or you just program and ignore the theoretical ballast).

PyPy Status Blog: STM update: back to threads?. The discussion and development continue to progress - and the discussion is returning to the old thread model, only expanded with a function to define atomic blocks of code. And all of this in such a way that the code would even run under normal CPython (though then of course without the advantages of STM, since there is no STM in CPython, there is still the GIL) but still makes sense to use multicore architectures. I like it more and more and I hope it will soon land in the PyPy Main Branch.

tuupola/jquery_lazyload. This might be interesting for displaying large amounts of images because it allows you to delay the loading of images until the user actually scrolls to them. The page is pre-built with placeholder images, and only the images are later sent over the line. However, I think Infinite Scroll is the better solution, as it allows not only images but also general content to be added - and it also works smoothly with Masonry so that these content blocks can also be visually well distributed.

dirq 1.1.2 documentation. Hey, I was recently looking for something like this - a queue based on the file system. The advantage: simplest persistence and good "debugging" by simply poking around in the file system. The disadvantage is that queues often need to perform some operations atomically - and this can become a bit tricky if you want to get it right. This is a port of an already existing Perl module, so the chances that most of the childhood diseases are out are quite high. The API, in any case, looks nicely simple. Definitely worth a closer look.

Hotcanvas: Realtime coding. I'm a fan of Processing-like environments, this one comes quite close, but runs as an interactive environment and looks quite nice. Ok, there are probably quite a few of these things by now, but still, I like this kind of stuff.

Bilderarchiv | rfc1437. My image archive was revised over the weekend and now comes with funny JavaScript gadgets for automatic tiling. Not really groundbreaking, but more interesting than the previous, rather boring format. jQuery Masonry is the main part of the work. Nice little JavaScript library. The most interesting part is probably the heuristic in my little plugin, with which I bring the images into portrait/landscape/square formats, so that the whole thing does not become too boring due to an excess of landscape formats. Unfortunately, there are still gaps in the image stream, where Masonry could actually become a bit smarter (and e.g. pull up small squares). Or I have to sit down again with the heuristic and make sure that the chances of gaps are reduced.

ownCloud.org | Your Cloud, Your Data, Your Way!. I will definitely keep an eye on this, because once the OSX desktop client and the iOS client are available, this will be a clear alternative to Google Drive, Dropbox, or SkyDrive for me. After all, I already have my own server (classic Ehschonda solution), and I would only use Dropbox for integrating various iOS applications and then integrate their content into my own server and bring it to my desktops. Because no matter how good a cloud provider is (and so far Dropbox is one of the clearly better ones), my own server gives me more trust in the end.

RubyMotion - Ruby for iOS. Since MacRuby already interests me, this sounds good too - directly programming for iOS in Ruby. However, there is no free version, which somewhat limits the trying out. Additionally, there is nothing in an IDE, it's pure command line. Which can be an advantage, but for debugging, for example, it's a real disadvantage.

Mojolicious - Perl real-time web framework. You had one problem, you took Perl. Now you have two problems and a bunch of sharp brackets to cut yourself on. Jokes aside: nice to see that Perl is not only still active, but also actively modern in the web environment. After all, Perl once set the standard in that area.

RavenDB - 2nd generation document database. Bookmarked because I want to check it out in the not-too-distant future. Sounds quite interesting from the features and might be useful for one or two projects that I am currently thinking about.

JSIL - .NET to JavaScript compiler. No idea if I already had this, but it's one of those crazy projects you can safely link twice. The actual .NET IL code is translated - so you can run programs in the browser that were not really intended for it. For example, part of XNA is supposed to run, so you can run games in the browser that are actually for the XBox.

Amazon.com: Send to Kindle for Mac. Could be quite nice to easily "print" the various online documentations to the Kindle and read them comfortably there. In addition, they might also end up on the iPhone for on the go ...