Archive 15.5.2011 - 4.6.2011

Comparison to Python | Cobra - just blogged for completeness, as the language has some interesting ideas. Specifically, I would like the contracts as explicit syntax, Python only allows similar things in a roundabout way. However, the language is otherwise just one of the many niche languages. And honestly, Python is more than just the indentation - what about the very sophisticated metaprotocol of Python in the various niche languages? PyPy in combination with Rpython and the new ctypes for pypy is much more interesting.

Clack - Web Application Environment for Common Lisp. This finally looks really nice and lean - most Common Lisp web frameworks are just too big, too complicated. This looks much more pragmatic, a simple routing, a lean request and a function that reacts to it. One could play around with that, installation is trivial thanks to Quicklisp (I'm so glad that Quicklisp exists now, the asdf-install hassle was really annoying). In its approach, it reminds me a bit of Turbogear for Python - various existing libraries are bundled with Clack, so to speak a lean web best practices. There is already an application framework that also runs in the minimal environment, Caveman.

Polycode. Looks like something like Processing for C++ and Lua - so it's actually a C++ library for creative projects (2D/3D), but at the same time there is a Lua-based scripting layer with which you can program directly with the same APIs. Sounds a bit similar to Cinder, except that there is no scripting solution included, but only a C++ library.

CouchDB: The Definitive Guide. And since it fits so well, here is the link to a book on CouchDB for online reading. It is also available online in German (and of course in English. And also in French). However, the German version seems to be incomplete - you keep encountering English pages.

Simple JavaScript Applications with CouchDB - CouchApp.org. Interesting approach: entire applications are implemented in HTML+CSS+JavaScript and stored directly in the CouchDB, also persist their data in the CouchDB. Reminds me a bit of Frontier, only here CouchDB and JavaScript are used instead of the Frontier Roots and UserScript. The big advantage: if the application actually gets by with the elements used, you get the easy scalability so to speak for free - because CouchDB can be easily scaled by starting multiple instances. Maybe it becomes clearer what it means in this tutorial.

Its About The Hashbangs. Blogged because it is a pretty good description of what is wrong with these #! in addresses. The part after the # is only client-side, the server never sees it - any form of server-side redirection and server-side routing is completely out of the question. Also, server-side access controls are largely out of the question, the server only sees the main page. For single-page applications like TiddlyWiki, this is all fine - everything is already in one file and it is the declared purpose of these applications to be structured this way. For websites like Twitter or even news sites like those of Gawker Media, it is simply absurd. Twitter can perhaps guarantee due to its banal structure that the URLs to tweets also work with #! in the long run, in that a corresponding JavaScript part remains in the homepage forever (which is already pretty silly), but news sites will sooner or later simply drop the old #! URLs - and thus produce massive link rot.

Function Reference/site url. I need to go through this more carefully, because if a site is supposed to run in parallel under http and https, then there must no longer be any absolute references, everything must be routed via these functions. A few plugins (jQuery Lightbox and Infinite Scroll) also cause problems here, so bug reports will probably be necessary.

Shedding Bikes: Github's Favorite Joke. Why social networks in combination with code and geeks quickly become asocial networks. One reason why I also keep my distance from Github - I have an account there to set favorites and make bug reports, but I prefer to host my projects on Bitbucket. And even then, I'm very glad that Mercurial (as well as Git) as a distributed version system allows me to switch to other systems or switch to self-hosted sites (Rhodecode would be useful to install in the long run). Update: Github reacts and finally builds in blocking.

SSL and Cookies in WordPress 2.6 « Ryan Boren. Although originally written for WordPress 2.6, it is still valid. I had to do a bit of hacking, as my WordPress server is not directly connected to the network, but behind a firewall (iptables with DNAT helped), but now I have properly secured admin cookies and am better protected against WLAN sniffers at public hotspots. The WordPress idea is really nice - not 100% security, as with my login cookie comments can still be posted under my name, but at least the administration is protected. However, it conflicts with the Safer Cookies Plugin, which I previously used to at least pin my cookies to the IP. Additionally, there is a patch that has gone through 3.1 and enables securing the login cookie as well.

cloud9 is the software behind Cloud9ide.com - an IDE that runs entirely in the browser and is programmed in JavaScript based on Node.js. An interesting project, the current version also offers an offline mode, so you can easily work on projects on your server via the browser and then continue working locally in the offline case (on the train or in WLAN-sparse hotels in Swabia) and later resynchronize. I myself am IDE-incompatible, but programming in the browser has fascinated me for many years, simply because you can access your projects from anywhere, even without having your own computer with you. If I ever want to take a closer look, someone has written an installation guide for Ubuntu. Support for iOS devices is also in the works - so this could also be a nice way to access your own projects via iPad while on the go.

Hackers broke into Lockheed Martin. Holy cow, worst case scenario. Who bets that now cybersecurity laws in the USA will be tightened, after attacks on companies in the defense industry can presumably be portrayed as a matter of national security?

Spring cleaning for some of our APIs - The official Google Code blog. Good example of why cloud services are simply a bad idea as a basis for projects that have any significance beyond "playing around". The provider of these cloud services and APIs can simply shut them down at any time - and Google once again shows how to piss off a large number of developers with such actions. I can only quote from one of the comments: Why should we ever use any API from Google again?

IPhone PPTP VPN – GRE Protocol Issues | it-fabrik blog. Argh. That's exactly where my experiments failed - the VPN doesn't work over Edge - and it's probably because Telekom filters GRE (verified via a WLAN connection and then everything works fine). Why do these stupid mobile providers mess around in the network, they should just provide a connection and that's it. Now I have to manually turn on the VPN in WLAN environments that I don't trust, just because the Telekom people think I shouldn't be able to establish VPN connections over their sacred network. You're supposed to be able to do this via another APN that assigns public IPs and doesn't have a NAT box in between, but whether it's then billed as a flat rate with the tariff, of course, no one can say. I hate mobile providers and their protectionist behavior and their chaotic network structure.

clj-android. And while I'm at it, a framework for Clojure and Android. Although it all seems a bit raw (for example, it requires a fork of Clojure to work around some issues with Dalvik). And just for playing around with Clojure on the go, the Clojure REPL might be interesting.

scalaforandroid - Scala for Android. And for completeness, a project for creating Android applications with Scala. Scala does require a large runtime library of its own, but scalaforandroid uses a tree shaker (Proguard) that only transfers the used classes of the library during packaging, keeping the volume small.

mirah/pindah - GitHub. Mirah is a language inspired by Ruby, but continues to work with static types and is therefore closer to Java in terms of performance. Type inference takes the pain out of types, as you can often skip the declarations. Codemakros also offer interesting approaches for internal DSLs. Pindah is a framework and toolset for writing Android applications with Mirah. Mirah offers the advantage over JRuby that no separate runtime and no dynamic interpretation is added - the applications should therefore be significantly closer to Java applications in terms of performance.

Ruboto: Ruby on Android. A small article at the IBM Developernetwork with a small example application in Ruby for Android. Ruboto currently has the problem of rather high startup times for applications and rather large application size, as the entire JRuby is delivered with it.

Ruboto is a framework and an app for Android devices. With the framework, you can write Android apps in Ruby (based on JRuby, which, unlike JPython, can not only keep up with regular Ruby but also sometimes leads in performance) and with the app, you can script interactively in Ruby directly on the Android device. Maybe a reason to dust off my Ruby-Foo ...

MS Optical Super Triplet Perar 3.5/35 Mark II. A reissue of an exotic lens for Leica M - this time with direct M-mount, no more screw mount with adapter. It would indeed tempt me, but I already have a 35mm and with the Zeiss C-Biogon, the triplet can't really compete. The compactness of the lens is great, though. I hope the 200-unit production run sells out quickly, so I won't be tempted anymore.

Zotonic - Hmm, should I take a look at this? A CMS in Erlang that has some interesting features on the list - and aims a bit in the direction that Drupal also has, i.e. rather a CMS construction kit than a pure pre-made blogging solution. The admin interface also looks quite tidy.

hij1nx/SugarSkull - GitHub. Because I recently had single-page JavaScript apps (an example of this type of application would be TiddlyWiki): this is a simple library with no prerequisites, with which you can build simple parsing and automatic function start for hash-routes. So basically something like the Django URL Handler, but in JavaScript and purely on the client.

Seesaw - GitHub. Since GUI programming almost always annoys me, this is quite interesting: a Clojure library that brings Swing into a much more compact form. So that you don't have to write your fingers raw for simple GUIs. And since MCL-IDE now also supports Clojure, it might actually be time to take a closer look at the whole thing.

Tequila Suicide | Blogrebellen Kreuzberg. It's so stupid that it couldn't be more stupid (and only insurance agents could be so dumb to actually try it, so Ergo is almost believable). And well, at the Blogrebellen there's also a funny comic about it.

Single Page Apps with Node.js. - blog.nodejitsu.com - scaling node.js applications one callback at a time.. A few interesting projects linked from the article that are interesting for web applications that live in a single HTML page. Bookmarked for later.

llama font - say it in llama. The Llama Font. I can't think of anything else to say about it. Someone must have painted all those llamas ...

Roundabout for jQuery by Fred LeBlanc. Nice effect, even if I'm not sure right now what I would need it for (ok, you could use it to display images, but personally I prefer Lightbox or something similar). It's probably just a gimmick, but sometimes that's quite useful.

"Summarizing: The German police, due to a past protest action against the website of an energy company, have paralyzed a democratic party shortly before the elections, hindered the democratic movement of citizens in Spain, and disrupted Anonymous operations against regimes in the Middle East. All in all, #Servergate was thus a very undemocratic day in the history of our friends and helpers." - from the Anonymous statement on Servergate. One may think what one will - the reaction of the police is more than questionable. Here, a trivial reason has probably come a bit too cheaply into the hands of a public prosecutor. The alternative would be blatant incompetence, both in assessing the reason and in assessing the effects. And slowly, the whole thing looks even worse, because there was not even a request for legal assistance from France, but only the announcement of such.

Cloud Foundry - Make it Yours!. Interesting project for building a cloud platform based on Ruby. The source is freely available on Github. CloudFoundry is probably what runs under ActiveState Stackato (where Perl and Python are supported). Such a private cloud can also be quite interesting for your own projects, because you can develop locally at home or on the go, and the deployment to your own root server is simple and easy. At some point, I think I want to set something like this up (currently, every service is set up individually for me, which can be quite annoying in the long run).

AndTidWiki | mgBlog. As a supplement to my TiddlyWiki links, there is of course also an app for Android with which you can run TiddlyWiki on phones and tablets. It is based on the same mobile plugin as the iOS version (logically, since both platforms use WebKit as the core).

Introducing JetBrains dotPeek - dotPeek - Confluence. For those curious about peeking into .NET assemblies (and Mono assemblies too, although the source is often available there anyway).

TiddlySpace/tiddlyspace. And since I find TiddlyWiki interesting right now: this project is a hosting project for TiddlyWikis that can be linked to users there and can be networked with each other - sounds like an interesting platform for collaboration on projects, for example (projects that are not about code - there's GitHub and Bitbucket for that). TiddlySpace is also a direct platform where you can register, or you can simply take their open source project here and host it yourself.

TwMobile. Regarding TiddlyWiki - yes, there is also an app for iOS devices. By the way, it uses Phonegap to create the app. The link at the beginning goes to the user group, but here is also a link directly to the AppStore. Quite interesting because in TiddlyWiki, plugins and similar things are also automatically possible in JavaScript and thus extended access to iPhone hardware becomes possible. At the moment, the integration with Dropbox is still a bit meager: you have to send files back and forth between apps. But since in TiddlyWiki everything is in one HTML file, that's not such a big problem. Enables the same interface for a small desktop wiki on iPad, iPhone, and desktop. And one that also looks quite nice. And additionally enables onboard programming in JavaScript. Sounds like a nice toy!

QuickSilver Network. Hmm, had I already mentioned that? Doesn't matter, it's cool. It's a Smalltalk-like development environment, but with JavaScript as the language and in the web browser instead of in an application. However, it's all still very raw and some things don't quite work (at least in Safari), but somehow still nice. Somehow, I could imagine someone combining it with TiddlyWiki (for persistence) and then making a JavaScript image system like the old Smalltalk systems, but on the web. Would be somehow funny. Pointless, but funny.

Judgment: Sharehosters must check external link collections. It all sounded somehow absurd, my first reaction was "Landgericht Hamburg" - and indeed, it is the LG Hamburg. And it is as absurd as suspected. And in the case of rulings by the LG Hamburg, I don't necessarily believe that the reporters have simply misrepresented them. Hamburg is Germany's Texas.

On TermKit. A pretty cool project for reinventing terminals. In this case, the output is made as HTML and the terminal is not rendered as a simple console but as a browser window. This way, for example, you can make directory lists graphical or output images directly. It also works on things like pipes and the idea of how data is transported between tools, so that they can all work universally with it - JSON is used here. The whole thing makes a well-thought-out impression.

AI art | painting robot | art | expert systems. Something else - a real robot controlled by Lisp (at least for prototyping). So not a virtual robot like Turtle graphics, but real hardware that moves.

xmlisp - eXtreme Media Lisp: Rich media cross-platform programming for 3D (OpenGL) and 2D applications. I think I've mentioned this before, but I'm not sure. Doesn't matter, repetitions aren't unusual, and this is really interesting - a Lisp environment with particularly good support for 2D and 3D data. Has a lot more on the TODO list - the goal is a Lisp environment specifically for game programming and other graphical, interactive programs. A bit like Processing.

MilkPack - Edgar Gonçalves. Interesting project that implements a task list that communicates with Remember the Milk on the Internet. The interesting thing about it: it is written in Common Lisp and intensively uses the Objective-C Bridge for OpenMCL.

MichaelMacInnis/oh. A shell in Go. The shell has some interesting features, for example prototype-based object orientation, first-class functions, and explicit channels (which other shells have implicitly behind pipes). Looks quite interesting at first glance.

Javascript PC Emulator - Technical Notes. Yes, a PC emulator. Based on QEmu, so quite mature code. Boots Linux in the browser. Because it can.

Infinite Scroll WordPress Plugin - nice effect, when the end of the page is reached, the next page is automatically loaded and mixed in via JavaScript - so pages are built endlessly until all blog content is there. Facebook and Flickr have been doing this for some time and I somehow find it better than these "older posts" and "newer posts" links. Without JavaScript, the links should still appear, search engines will continue to index everything (although a Google Sitemap helps a lot in this regard), so it shouldn't cause any harm.

Lightroom Developer Center. Since I want to take a closer look at this again soon, maybe I will create my own plugin for easy sync to WordPress after all. And Lua is not such a terrible language.

Recently on Flickr

I have uploaded new pictures to Flickr. Here they are - unsorted and uncommented.

Microsoft Small Basic. In a strange way, nostalgic. A Basic in the style of QBasic, but for Silverlight and the browser with libraries for graphics output and similar things. Essentially something like Processing, but .NET instead of JVM and Basic instead of Java.

Pressbox « WordPress Plugins. I wanted to build this myself all the time, but now it's already available. I could take a look at it - with this you can select images from Dropbox and insert them into posts. Since I'm using Dropbox a lot for images, this would be quite practical - but I first have to check if the image is then brought to the WordPress server, or if it remains on Dropbox - I want my media files to be on my own servers.

Expensive healthcare system: Funds expect additional contribution of 70 euros. Funny, how quickly it's all just about how to fleece the insured as much as possible and no longer about temporarily helping a cash-strapped fund. And it's always great how politicians keep saying you just need to switch to a fund without additional contributions. How, when soon all funds will do that? And of course, the employee has to pay for it all. So that the pharmaceutical industry, doctors, and pharmacists can still reach powerfully into the pockets of employees tomorrow. And the Prolethicians in Berlin hold the stirrup nicely.

Leistungsschutzrecht: Bundesjustizministerin ĂĽber eine Abgabenpflicht fĂĽr Zitate. Once again, the politics helps the internet non-understanders and rights extortionists in companies with a broken business model to make money at the expense of others' work. And incidentally, the right to quote is destroyed. Because does anyone really believe that "commercial" won't quickly become "business-like" and then, through legal hair-splitting, "every blogger"? It's enough to have advertising on your own blog to be considered a commercial provider. And of course, the idea of introducing another collecting society for the nonsense is great, which also wants to be paid well again. At some point, we will probably have to pay the gas suppliers when we want to fart.

ZenphotoPress is a WordPress plugin that allows you to access images and galleries in ZenPhoto from WordPress. Since you can upload entire folders to ZenPhoto via FTP or other methods (e.g., by simply linking the Albums directory to Dropbox), and thus easily get images into galleries, you can also quickly and easily access these images in WordPress. Might be something as a tinkering project, as I'm still looking for simple ways to feed my photo blog from Lightroom.

From Me To You. Fascinating not-quite-photos and not-quite-films. A bit of background information on how these GIFs are made. And another site that does something similar.

Dropbox Lied to Users About Data Security, Complaint to FTC Alleges. Just a reminder: anyone using something like Dropbox (or any of the other services with similar functionality) should encrypt client-side (on Macs, sparse bundles are suitable), if it's critical or personal content. Because even if a service promises to encrypt everything and no one can read the data, this service can simply lie. Or have a wrong implementation. The deduplication, the folder sharing and the fact that for some versions a public URL is generated for each file - and thus in both cases people get access to files to whom you have not revealed your password - should make it clear that Dropbox must be able to decrypt server-side. Which of course does not make the wrong presentation on their advertising pages any better - yes, it was just omitting information, but with security statements you'd better say a bit more to make it clear what you actually guarantee. If you leave out essential information, you should not be surprised if you (rightfully!) are called a liar. And especially in the USA, something like this could put a company in quite a predicament.