Linkblog - 3.12.2010 - 21.12.2010

pure sounds very interesting, even if it is of course yet another niche language. But at least it's a rarely trodden (not necessarily new, but not often used in compilers) path. What is particularly interesting is that the interpreter fully relies on the LLVM infrastructure and since 0.45 Pure can directly integrate various languages for the LLVM backends (e.g. C/C++ and with Faust a special language for audio processing). Pure thus goes far beyond simple scripting languages and offers a very interesting alternative to classical FFIs.

Netzsperren: Großbritannien plant globalen Pornofilter and thus proves that mad cow disease can jump from harmless cows to politicians and then to ISP bosses. The obvious thought of an analogous treatment as with the cows, however, does not seem practical. There are indeed differences between company bosses, politicians, and cattle. Amazing. (I decline any betting offers on whether the British model will quickly spread to the EU because it is too obvious)

c't on the iPad. Thanks for that, even if it's just a dressed-up PDF for now. Okay, it's embarrassing that you can't properly link to this article because it's hidden behind a paywall - wouldn't it have made sense to have an online article for this? Never mind. But what's annoying: "free for subscribers until February 2011" is not what someone wants to read who pays you for the dead tree. Because asking for money twice for already sold content is usually only done by the dregs of the media landscape. If you now introduce a digital-only subscription that costs more than the print version, there will be verbal beatings. By the way, even a dressed-up PDF can be given a memory of the last visited page. Honestly. It's not that hard.

Alex Gaynor -- Getting the most out of tox. I should take a look at this - currently I'm quite lazy when it comes to creating unit tests for my projects, usually I only test against the one Python version that I primarily work with and for dependencies I only take the ones that are currently installed on my machine (or in the virtualenv). It would make sense to set up a more comprehensive system for this, just to have more meaningful test results.

Sparrow - The New Mail for Mac. Looks really good and is the first mail client that makes me consider switching from MailPlane. Because MailPlane does support - necessarily - all GMail features, but also looks exactly like what it is: a website. If Sparrow also implemented a "universal inbox" like iPhone/iPad, it would be pretty perfect.

coleifer/peewee at master - GitHub. I must have already had it, a small ORM for Python that is based on Django and works with sqlite. Particularly interesting for small web services if you don't want to pull in a large framework, but just want to make the code a bit more readable. Caution: it does not directly support programmer-controlled transactions, but is essentially always in autocommit mode. However, you can change this with relatively little effort if you want - just derive UpdateQuery, InsertQuery, and DeleteQuery and set requires_commit to False on the classes, and define an extended execute method that takes an explicit commit parameter.

Middleware_and_Utilities - WSGI Wiki. If you are working with wsgi as a basis, it is a good idea to check out what WSGI applications and middleware are already available.

Python Package Index : urlrelay 0.7.1. Web services based on gevent require URL dispatching. urlrelay seems to be an interesting small WSGI library that, unlike other systems, does exactly that and nothing else.

Bug 1044 – CVE-2010-4345 exim privilege escalation. The second part of the Exim march. This is the privilege escalation via Exim and an alternative config file. Because Exim is a monolithic server running under suid rights (i.e., starts with root rights even if executed as another user), there is a small time window in which the service always runs as root - and this is exploited through the alternative config file. The patch restricts the locations where these config files may reside and, combined with the configuration of write permissions on this location, can prevent non-root users from injecting their own configs.

Bug 787 – memory corruption in string_format code. Important if you're running a Debian version older than Lenny, as there are no more security updates available and you have to patch it yourself. This one closes the door. By the way, it's quite interesting to look at the date - it has been fixed since 2008, but due to the early discontinuation of security updates for outdated Debian releases, it is still present in many Debian systems based on Etch (and older). Debian is only recommended for use if you can actually keep up with every release change in a timely manner. Otherwise, solutions like Ubuntu LTS are by far the better choice. Apart from that, it's quite embarrassing that Lenny still had such an outdated Exim ...

rhodecode is something like bitbucket or github. Like bitbucket, it uses mercurial and offers various tools in the interface. The special thing? The code is free and thus something like Bitbucket for self-hosting. Maybe an alternative to Trac.

HP Storage Hardware Harbors Secret Back Door | threatpost - hopefully puts an end to the regular "we need to switch to HP because it's much better than NetApp" discussions. And yes, that was sarcasm.

The Self Publishing Revolution: Amazon in the Book Banning Business. This time it's against erotic (ok, let's be honest: pornographic) books by Selena Kitt. But who says Amazon will stop there? And even if Amazon naturally has the right to no longer offer a book in the future (there are enough alternatives for eBook stores), what gives them the right to delete sold books besides their ToS? After the 1984 embarrassment, one thought they had understood. But there the cause was a rights violation by the publisher that Amazon reacted to - this time it's pure arbitrariness. The whole thing confirms my approach of never buying eBooks that I can't free from their DRM. Necessary as an investment protection. (and of course preferably buy books without DRM if possible)

Bottle: Python Web Framework I should also take a look at as an alternative to web.py - because in Bottle the app is simply a collection of functions with routes and mappings and not always a class. In addition, the functions can have different parameters for different verbs and JSON is directly supported as an output format. For web services, this sounds even more streamlined than web.py - and it also looks cleaner in structure to me.

In Albania and Bosnia, visa requirements are waived. And why not for Russia? Would be much more important for me ...

Majority in NRW against new state treaty for youth protection on the internet - Computer. The attempt by the Union to portray this as an embarrassment for Red/Green is quite amusing. I mean, how stupid do these prolethicians in Düsseldorf actually think the voter is? The waffling of Red/Green is indeed embarrassing - especially with the Greens, after their bold statements, one could only have accepted a rejection - but the ridiculousness of the Greens is something the Union can hardly claim as a success, the Greens manage that quite well on their own. Good that this dreadful contract has been postponed for now (whoever believes the topic is now settled for good is also putting on their pants with pliers), but it is hardly a merit of any of the parties. Everyone has made a fool of themselves, even the Left (with their approval in Berlin).

Nicholas Piël » Benchmark of Python Web Servers. Very interesting benchmarking, I definitely have to take a look at gevent, the performance in the tests is already impressive. Update: after I looked at gevent - I am impressed. For web services you have to be careful: gevent.wsgi only supports GET and POST, only gevent.pywsgi also supports PUT and DELETE.

RecordExtension - Mercurial. Great, I hadn't noticed this before. With this, you can select individual patches to commit when you've done several things at once but don't want to commit them together.

Security: Alleged Backdoor in OpenBSD's IPSEC Stack. Ouch. If there's anything to it, we might need a WikiLeaks for Open Source. And of all places, in OpenBSD, which has put security at the top of its TODO list.

Home | The FinePix X100 Professional Photographer's compact digital camera from Fujifilm. It all looks quite interesting. But as long as you can't hold it in your hands, it's all still speculation.

Mrdoob/three.js - GitHub. 3D Engine in JavaScript. Actually, I don't have a real application for this at the moment, but it could be quite practical for visualizations. And well, it's just cool, that alone justifies a blog post.

Namespacing in JavaScript. Everything you always wanted to know about it but were afraid to ask. Or also: why syntactic support for namespaces is overrated and plain old objects are sufficient.

The Ball Revealed – Sphero « The Orbotix Blog. Will. Haben.

For those who need to fiddle with bytes in Clojure: gloss. At the moment, I don't have an application for it, but I'm bookmarking it for later when I have to deal with binary data again.

Mac OS X Automation: Services. An example of how to build an integrated HUD browser for Twitter with Automator and OSX Services. Not bad at all.

Clojure Libs and Namespaces: require, use, import, and ns - 8th Light Blog. Just a brief overview of the different namespace functions in Clojure.

ninjudd/cake - GitHub. After taking another closer look, it's now a really practical way to get Clojure up and running. Unlike other build tools in the Java ecosystem, it doesn't download half the internet. It can also be integrated into MacVim using slimv with a small helper script and is at least usable for my Clojure tinkering.

slimv.vim - SLIME-like Lisp and Clojure REPL inside Vim with Profiling, Hyperspec, Paredit. Quite interesting, as it is much lighter and simpler to install than Slime or VimClojure or one of the other heavy solutions. And you can simply program Common Lisp or Clojure from within Vim. It is currently only in the "playing around and looking" mode, but it sounds quite interesting.

Mainz/Landau: Geothermal power plant likely responsible for earthquakes. Well, but in Emsdetten and Nordwalde, Exxon wants to pump water into natural gas bubbles to extract it there. At an unprecedented depth and with methods that have not really been tested in continuous operation. But even a geothermal power plant can cause earthquakes that cause damage through a similar approach. I think homeowners in Emsdetten and Nordwalde should keep a very close eye on this ...

Gundo - Visualize your Vim Undo Tree. Vim does have a bit more to offer when it comes to undo than usual editors - the entire tree of undo/do/redo actions is stored and you can move freely within it. However, no one really understands this with the normal Vim means. With the Gundo plugin, you can directly visualize this tree and perhaps make sense of it. Sure, you can achieve something similar through regular commits and version control. And of course, we all commit early and often and never have any long editing sessions, right?

Chromium Blog: A New Crankshaft for V8. And this makes JavaScript even faster. V8 is also the basis for Node.js, so this performance improvement will likely soon be available for the server as well.

Now also available on instagr.am - of course as rfc1437. I've been doing something similar on tumblr for quite some time now, and Instagram is an amazingly practical uploader for tumblr.

The Risks of Cloud: Lessons from Wikileaks - Simon Says.... Summary of the actions against Wikileaks and what this means for business on the web. Because what happened to the Wau Holland Foundation with PayPal (their PayPal account was frozen, not Wikileaks') can happen to anyone if someone doesn't like your nose. Without even a rudimentary legal process. They simply claim that the Terms of Service were not followed. And even self-hosting doesn't really help because you are still dependent on many others (the place where the server runs, the domains ...). Strangely, this arbitrariness on the net is never mentioned when politicians talk about the terrible "lawless space Internet".

pyquery: a jquery-like library for python — pyquery v0.6.1 documentation. That's what it says. Essentially a subset of what jQuery can do, as jQuery has its own selector extensions and this one simply builds on lxml (but therefore has full CSS3 selector support).

stream – Lazily-evaluated, parallelizable pipeline — stream v0.8 documentation. Interesting small module for easier programming of calculation chains with iterators. Makes source code much more compact for suitable use cases (e.g. transformations and selections of bulk data). Blogged because I have implemented something like this several times myself ad-hoc within projects.

Wau-Holland-Stiftung: Donors of Wikileaks threatened with sanctions. But it's actually less about Wikileaks than about the foundation's negligence. Financial statements are standard business for foundations, if you simply leave them out, you can expect - predictable - trouble with the authorities.

Another implementation of Common Lisp Conditions in Python.

Python Package Index : withrestart 0.2.6. Sounds quite interesting - the interactive restarts of Common Lisp are often very practical, especially when working interactively.

snipMate - TextMate-style snippets for Vim : vim online - since I'm just listing things that aren't really interesting to me but are still somehow cool, here's an implementation of TextMate-like snippets for Vim.

vcscommand.vim - CVS/SVN/SVK/git/hg/bzr integration plugin : vim online - something I'd rather do in a shell than in the editor. Mainly because I rarely have single-file commits. But for querying history, it could still be interesting. It's also one of the more active Vim plugins - some of them are really shockingly old, but still work well. One plugin even had a reference to its homepage at GeoCities ...

pyclewn. Not sure if I want to dive into this - I don't usually use debuggers. But this one is integrated into Vim and thus directly usable from the editor. gdb and pdb (for Python) can be used.

Vim Taglist plugin manual. Another important component to be able to work properly with MacVim. It is also recommended to install exuberant-ctags with brew install ctags if you want to use real languages (such as Python).

Harsh criticism of French Concorde ruling. Okay, that Continental is at fault is certainly clear - after all, it was their aircraft that was poorly maintained. However, with 113 fatalities, it is probably only understandable for sarcasm-dripping cabaret artists that this company pays a fine of 200,000 euros - but 1 million euros to Air France for the image damage. It then also fits that the mechanic, who - possibly with a lack of care, but simply as a mechanic an employee - did his job and riveted a blade to the aircraft, goes to prison. Strange world.

Vim autocomplete, Django and virtualenv | rosemanblog. Especially the integration of VirtualEnv and MacVim is helpful, because otherwise Omnicomplete does not work cleanly with VirtualEnv, as it knows nothing about the modules located there. By the way, installing MacVim with Homebrew is trivial ...

Homebrew — MacPorts driving you to drink? Try Homebrew!. I can only support the call. After using MacPorts for years, I have now switched to Homebrew on the Air, and it is much slimmer. And since it doesn't want to install half of the internet for every little package, you even have a realistic chance of installing the tools on the smaller disk of the Air. It's also nice that you can intervene in many places if you want to (since I am a programmer after all, it is quite a natural desire to sometimes do the configure yourself or something similar). By the way, the recipes are quite up-to-date, for example, Node.js is in the latest version, pypy is also, as well as Scala and Clojure. Fits well with my currently planned experiments.

chrisdickinson's wilson. One before lunch, as the framework is heavily inspired by Django, and since I'm a Django fan, it's definitely worth its own link.

Modules - node. Many modules for Node.js, more than I can quickly glance through (or want to), so for now just bookmarked for future perusal.

persistence.js: An Asynchronous Javascript ORM for HTML5/Gears. Since you always want to save data at some point, here's a link to a client-side ORM library for JavaScript. It looks quite good and could perhaps also be used for the server side. (I found another link for this that explicitly supports Node.js with MySQL).

Express - node web framework. Great, if you want to quickly build small web services with Node.js. I think it fits well with Node.js installations and jQuery on the client side. At the moment, JavaScript is pushing into many niches where Python used to be at home. Not least because JavaScript is actually not such a bad language after all.

Socket.IO is a small JavaScript library that supports socket communication from the browser and can use various techniques, automatically selecting the best available one. This makes it work across different browsers and browser generations.