Linkblog - 10.12.2010 - 29.12.2010

A Type-Safe Database Query DSL for Scala. Sounds interesting, something between LINQ and ORM for Scala. I should check it out when I'm back from the cold.

"Moreover, the long announcement was only made in cases where the call center agents had the impression that the caller thought they had reached the German Railway. For all others, there was a short announcement." - fascinating, this call center operator has invented a telepathy interface? Because the price announcement comes before you speak to the agent (who is so expensive that you could gild the conversation time with him). More at 11861: Operator of the Bahn information number sues against shutdown - Golem.de.

Study: Power companies demand two billion euros too much. More astonishing than the audacity of the energy companies is the (feigned) astonishment of the Prolethicians about this matter - for what do they expect when a de facto monopoly is left in place and no serious state regulation is introduced? Throwing Merkel's cotton balls is now proven to be useless and a government that is controlled in a banal way by the energy suppliers certainly has no interest in changing anything. We will have to pay again (we always have to pay, I'm not fooling myself about that, but it would be nice to spend money on meaningful things and not on the billion profits of an already much too fat electricity mafia).

Sequel: The Database Toolkit for Ruby. Looks quite nice, I kind of like the DSL. Reminds me in parts of Django's ORM.

MacRuby: The Definitive Guide. Book at O'Reilly about MacRuby. You can already read many parts, maybe interesting for one or the other.

hoc - Project Hosting on Google Code. Just blogged about it in case I want to play with Haskell again. HOC is a bridge between Haskell and Objective-C and thus allows access to the OSX frameworks.

emscripten - Project Hosting on Google Code. And this is the tool that brought Python to the browser/server. It converts LLVM bitcode to JavaScript and enables a number of interesting tricks.

Emscripten: Python. Pretty cool, a cross-compilation of the standard Python to JavaScript with the help of Emscripten. And thus a full Python 2.7 (minus many libraries of course) in the browser window.

pyfilesystem - Project Hosting on Google Code. Could be useful if you want to access different types of filesystems from Python using uniform code.

Instagram api - instagram - GitHub. Unfortunately only unofficial, and Instagram has already asked the first service to stop using the unofficial API. Therefore, the use of the API should be approached with great caution. But it would be interesting (just so I don't have to pick up my current images from Tumblr anymore, because they have not been really stable lately). Because with the API I could simply access my collection page of my image feed created with it.

Monads Are Not Metaphors - Code Commit. Definitely one of the better explanations of what a monad is that I have read.

J Home. Because you should sometimes just take a look at other languages that are so different that you don't even get the temptation to compare them with the usual (and hey, an APL offshoot with an ASCII character set is at least worth some attention once a year). You can also consider it as a high-end calculator.

'surface' plot 1 2 o. / 0.2 * i.60

Ok, I've decided to use MacVim as my default editor because I don't have to retrain my fingers every time I switch to Linux, but Kod looks really interesting. It's a real OSX editor with good integration into system standards, and as a scripting environment, it's simply Node.js and JavaScript. Surface styling with CSS3. And the entire interface is multithreaded, so more complex actions don't block the editor. It could almost make you weak. Plus, it's Open Source and free to tinker with - unlike TextMate, which had a very nice approach, but then more or less fell asleep because the programmer has been tinkering with version 2 for years and hasn't released it.

The coolest part: if you look in the discussion forum, you read a comment: "Because this app has received such uptake, I would encourage the open-sourcing of it to get a jump start on features. There are a boatload of developers who are really tired of waiting for a specific feature in TextMate (split windows, etc.) and they are smart cookies. If you put the source on GitHub you can pull the stuff you like and leave the rest." - well, the developer just went ahead and implemented it directly.

The Art and Science of Smalltalk is now freely available on the web (PDF link). And where the book is located there are more books about Smalltalk for free download.

IPython as a system shell explains the function of the sh profile for iPython. I need to play around with it, because Python as a system shell can be very helpful.

" ... and the fearsome Teutonic minions of the Chaos Computer Club" via The Blast Shack. Bruce Sterling on Assange and Wikileaks. Somehow, the sub-sentence threw me completely out of the reading rhythm.

Oni Labs: Apollo. Interesting JavaScript runtime for browsers that translates StratifiedJS to JavaScript and thus allows asynchronous code to be written largely as one would write synchronous code. This can be very practical, especially with Ajax, because the actual algorithm is no longer buried in the many callbacks.

Jquery Snowfall Plugin 1.4 | Somethinghitme. I think a snowman is kissing me. And those who don't want to hack themselves can also use the Wordpress Snow Storm plugin.

MacBookAir3-2/Meerkat - Community Ubuntu Documentation. If anyone wants to equip the nice new MacBook Air with Ubuntu. Not really an option for me, especially since I found a really usable infrastructure for installing normal software with Homebrew.

Statement by the UN (ok, by a UN sub-organization that, among other things, deals with topics such as freedom of expression) on Wikileaks. Will this impress any of the unleashed prole-talkers with a biting reflex? Probably not.

Skype kaputt. Just reading the word "Mega-Supernodes" was worth it.

Outage: Skype unavailable for many users - Golem.de - hey, I rely on Skype. Stop the nonsense with the outages! And what do you mean by "appears to be offline" - if I don't get any contacts displayed and can't establish any connections, then it's factually offline, regardless of the technology behind it.

Denisovans Were Neanderthals’ Cousins, DNA Analysis Reveals - NYTimes.com. Wow. And parts of the Denisovan genome are found in today's inhabitants of New Guinea. As if they were all isolated.

Python Package Index : futures 2.0. Just stumbled upon it, one of the features is new in Python 3.2, but the reference implementation also runs with Python 2.6. Basically does something like my lazypy and lindypy (i.e. solves the same problems, but in a slightly different way).

Pharo Open Source Smalltalk. I should take another look at it, as it looks very sleek now and the installation has become really trivial. Clever how a Pharo.App directory is loaded, which is the app for OSX and includes simple startup tools (LNK for Windows and .sh for Linux) for Linux and Windows. Additionally, there is a new VM and the whole thing has become really fast. And it no longer looks so outdated (unfortunately still GUI-in-window and no native windows).

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.