Archive 25.12.2009 - 9.1.2010

My OpenID - just for future use, so I can find my own OpenID provider again when I need it ...

Nullege: A Search Engine for Python source code - very useful when you want to see how an API is used in various projects. Sometimes the documentation is a bit unclear and looking at example source code makes things clearer.

phpMyID - simple small PHP library for setting up your own private OpenID provider.

TidBITS Entertainment: "If Monks Had Macs" Available for Free - one of the strangest projects from the old Mac era. Interesting just because you can see how some people used Hypercard back then (runs today on Runtime Revolution and thus cross-platform).

Building a Codeless Language Module with BBEdit 8.5 and (Ir-) Regular Expressions - since I keep looking for this, here's a guide on how to build codeless language modules for BBEdit and TextWrangler. In the new version, they can use regular expressions. Tip: try out the regular expressions in the grep search of BBEdit/TextWrangler, then you can see if they work correctly on a source.

Wikipedia:Articles for deletion/Ejabberd - and for those who want to endure the entire nonsense of the Wikipedia watchmen: the discussion page about the deletion request for Ejabberd in December. Just to explain: Ejabberd is used, among other things, by Facebook for their XMPP support for Facebook Chat ...

Aasee (Münster) – Wikipedia - "Swimming in Aasee is currently prohibited and, due to poor water quality, especially during hot summer months, not recommended. However, there are efforts to improve the water quality. The main problems are blue-green algae, which multiply massively due to over-fertilization, as well as coliform bacteria. Contact with Aasee water in the summer can cause skin irritation, and ingestion can lead to life-threatening illnesses. Additionally, safety is compromised by the shallow water depth, which is further limited in some areas by bicycles lying on the bottom." - some things just have to be left uncommented ...

maven-scala-plugin - maven-scala-plugin - because Maven is mind-bending, but still better than Ant. And no one wants to manage all the many dependencies by hand ...

SQLiteJDBC - another JDBC driver for SQLite

SQLiteJDBC - because I am a SQLite fan (if it's too complex for simple text files, SQLite is the next level), and because I play around with Scala and Clojure, I might need this here.

Defective security chips: 30 million bank cards affected by the 2010 error - SPIEGEL ONLINE - News - Netzwelt - great, because of the idiots, EC cards and credit cards in ATMs suddenly have problems. And because of the stupid switch of most banks to V-Pay instead of Maestro, withdrawing money abroad (I'll be in Russia again soon) with the EC card is not possible anymore, because for these Visa idiots Europe ends at the borders of the EU and the banks only care about their own profit margins and not about customer comfort. What's the point of having an EC card with which you can withdraw money from 9.5 million ATMs worldwide without problems? Completely overrated. And because I now also need a new credit card due to ATM compatibility, it will probably also be from a defective batch and then I'll be in Russia in March and can see how I get money. And for all the nonsense that the pack spouts, you also pay fees.

Questions and Answers about the Bank Card Fiasco - oh, great, they're switching back to the magnetic stripe. Brilliant idea, since it's no longer fully described on the V-Pay EC cards, which is why the cards only work in ATMs that use the chip. Super idea - so I potentially go from the frying pan into the fire, just because these stupid bankers want to save a few cents.

Python Package Index : promise 0.2.1 - quite a cool bytecode hack for Python that uses decorators to declare functions as "pure" or "constant" (or a few others) and thus enables optimizations of Python code. Specifically, expensive lookups can be avoided if you assure the compiler that within a function, for example, built-ins or named functions do not change dynamically but remain constant.

FleetDB - small in-memory database with persistence via an append-only transaction log. The protocol consists of simple JSON arrays. Implemented in Clojure, but can be integrated with any language through the JSON interface (you just need a JSON library and socket access).

generator_tools - because you sometimes encounter the situation of wanting to save generators in Python (e.g. when simulating continuations or coroutines using generators and using them as the state of a running web workflow in a web framework), this module (based on a hack on bytecode introspection) works to a limited extent. Already interesting because of the insights it gives into the interpreter.

Introduction to Concurrent Programming with Stackless Python - because sometimes a very large number of microthreads is the appropriate level of abstraction. As can be seen in various Erlang programs. Stackless provides similar abstractions, or rather comparable to the Actor libraries in Clojure and Scala (basically the Erlang Actor Model without distribution across multiple computers). The GIL remains a problem, of course, which is why Manycore is not well supported, at least not without programming for it (via multiprocessing, for example).

Matasano Security LLC - Chargen - If You're Typing The Letters A-E-S Into Your Code, You're Doing It Wrong - interesting article (even if in a somewhat strange presentation form) about typical problems with the use of cryptography for SSO in web systems. Simply "I encrypt the cookie and then everything is fine" just doesn't cut it ...

MetaPython Documentation - one of the things that always bring me from Python to Lisp are the nice Lisp macros, with which one can elegantly build embedded DSLs for various purposes that integrate well with the host language. With MetaPython, you might be able to achieve something similar with Python. At least all the components are there.

Study shows viral SSIDs could be creating a massive wireless botnet Tech Sanity Check TechRepublic.com - and some more about viral SSIDs and a small list of SSIDs that have appeared in this context. I came across it because a friend of mine has one of the networks (hpsetup) near her and wondered where the SSID came from.

Viral SSID - WLAN/Wireless Security Knowledge Center - interesting. SSIDs from WLAN networks as an attack vector for computers.

OpenSimulator GForge - since I'm playing around with OpenSim again, here you can find a lot of projects around OpenSim.

Hg-Git Mercurial Plugin - should actually allow access to GIT repositories with Mercurial, but it seems to not work at the moment - I only get errors. But first of all, blogmarked for future use.

Daring Fireball: The Tablet - "I am not predicting that Apple is phasing out the Mac. (On the contrary, I’ve heard that Mac OS X 10.7 is on pace for a developer release at WWDC in June.) Like all Apple products, The Tablet will do less than we expect but the things it does do, it will do insanely well. It will offer a fraction of the functionality of a MacBook — but that fraction will be way more fun. The same Asperger-y critics who dismissed the iPhone will focus on all that The Tablet doesn’t do and declare that this time, Apple really has fucked up but good. The rest of us will get in line to buy one."

hgsubversion - since you occasionally encounter SVN and often get annoyed that you can't switch the working directory between releases, you can simply use hgsubversion. This mirrors a complete SVN repository into a local Mercurial repository from which you can easily populate your working area using Mercurial tools. Also useful if you want to manage patches for an SVN project, as Mercurial's patch queue is superior to all SVN-based techniques.

Data protectionists criticize "electronic income verification" - and yet another nonsensical data collection action that will only lead to other authorities wanting these data for completely different purposes. What does the state have to do with whether an employee has received warnings or shows "misconduct" (which is then, after all, a matter of interpretation by the employer)? What does the state have to do with whether and how long an employee has gone on strike? The fact that data pools are not secured against misuse should be well known by now. And that any data collection arouses the hunger of other authorities, as well.

duelinmarkers's clj-record - a persistence framework inspired by Active Records (the ORM of Ruby on Rails), but in Clojure and with a more Lisp-like API. (that was a lot of Denglisch in one sentence!)

mattrepl's clojure-neo4j - and here is an interface to Neo4J, a graph database for Java, with which complex data structures can be stored on disk quite easily. Looks quite interesting for simple persistence in programs.

neo4j open source nosql graph database - the graph database for Java mentioned earlier. Looks quite interesting for situations where relational databases are too rigid and inflexible.

pjstadig's tim-clojure-1.0.0 - quite a cool project that implements a distributed environment for Clojure using Terracotta (basically a distributed map for Java). Objects with appropriate metadata are automatically distributed to all Clojures connected to this distributed environment - and it does this for almost all objects that can be defined in Clojure.

At Night

Bei Nacht

Bei Nacht

Blue Hour

Blue Hour

Blue Hour

IPhone Remote - Plex - and the iPhone becomes the ultimate remote control.

Kanex Mini DisplayPort to HDMI 1080p Video with Digital Audio Adapter - also blogged about because the cheapest large monitors are after all HDMI-capable TVs.

Plex Media Center for OS X - poorly blogged, because I might want to build a small media server with a Mac Mini. With the mountains of digital photos I have now, automatic slideshows on a large monitor might be quite nice.

Privacy of 3.5 Billion Cellphone Users Compromised – GSM Code is Broken | ProgrammerFish - well, that's it for GSM, eavesdropping made easy. As the article correctly states: there should have been updates to the encryption of GSM a long time ago, it's simply negligence in the design of the technology that updates to the encryption were not planned from the outset. It will be interesting to see when this becomes a bigger issue and telecom companies are forced to take action.

Plane attacker faces 40 years in prison - "the father - a respected former Nigerian minister and banker of the US embassy - is said to have communicated." - and did he also have 20 million from his former ministerial work that he urgently needed to transfer abroad? I mean, no wonder Nigerian ex-ministers and bankers are not believed with all that Nigerian spam .... (reality still delivers the best stories)

Bundestagspräsident missfällt Regierungskurs - hey, CDU politicians usually only become loudly and clearly critical when they no longer play a political role (see Geisler)? What has gotten into Lammert?

Moscow ML Home Page - surprisingly, I hadn't come across this before. It's a small SML bytecode compiler that now implements the full language scope and standard library. Much slimmer than the large SML/NJ and also requires fewer resources than SML/NJ or MLton. Very useful for small tools (and installable on the Mac with MacPorts - just like SML/NJ and Poly/ML, the other two major ML compilers).

neatx - NX Server in Open Source by Google. I really like NX, but the commercial server is quite limited with only two parallel sessions in the free version. For future use at work.

openduckbill - automatic directory sync with rsync and a Python daemon (can sync locally, over NFS or SSH). Very interesting if you want to keep multiple directories in sync, but don't necessarily want or need direct NFS mounts (e.g. because it has to go across permission boundaries with different user domains).

Poly/ML Home Page - poorly linked, because Poly/ML is often ignored in favor of SML/NJ and MLton. Potentially also usable as an alternative to MosML, as Poly/ML is quite fast, but delivers native code that is also good for standalone tools. Although MLton still outperforms here, as it takes a long time to compile due to optimization across the entire program, but produces significantly smaller executables.

Standard ML of New Jersey - and no list of ML compilers would be complete without the grandfather of SML, so here's the last link. A bit aged, but certainly still one of the most well-developed systems.

Fuzzy Hashing and ssdeep - provides hash values for files that are similar if the files themselves are also similar. Can be used to find partially identical files (e.g. code reuse in source code or different versions of a document, etc.).

Home of pHash, the open source perceptual hash library - perceptual hashing provides similar hashes for visually similar files. So something like fuzzy hashing for images or movies. For example, phashes of images change only minimally if the image is minimally changed. The larger the difference in the images, the larger the difference in the hashes.

Culture Minister criticizes ARD smartphone apps - So, Mr. Naumann thinks that the public broadcaster has the task of supporting the stupid strategy of the Springer publishing house? What a ridiculous idea is that? We pay fees for the public broadcaster and, as fee payers, we certainly have an interest in receiving the broadcaster we finance on devices we use. Whether the Springer nonsense will be a success or not is completely irrelevant to me. But it has always been like this: on the one hand, complaining about subsidies and how terrible everything is, and on the other hand, more or less covertly supporting one's own friends diligently. You probably have to give something back to those who pay you the bribes from time to time? But why a culture minister would throw himself into the breach for something as uncultured as the Springer press ...

MLton Standard ML Compiler (SML Compiler) - MLton is required for Ur/Web, and conveniently, there is a binary download for OS X that works quite well if you have the GnuMP library installed via MacPorts (you can also install the mhash library from there, which is another prerequisite for Ur/Web). MLton is also an interesting project in its own right, as it is a standalone compiler for ML that has very good optimizations (though it also has extreme compilation times for the compiler).

Ocsigen - looks like something comparable to Ur/Web, which is based on the OCaml toolchain and the OCaml language. OCaml has some very nice properties, so this could also be interesting. However, the project gives more of a modular impression with several interoperating parts, and it remains to be seen how well the integration is. What excites me about Ur/Web is the fact that I can really put together a web application with just a handful of files, without much overhead. Also, installing Ur/Web from the source is simpler due to the small number of dependencies. On the other hand, Ocsigen is directly available in Debian, which of course makes the installation much easier.

The Ur Programming Language Family - interesting functional programming language with integrated XML templating and persistence. The goal is to write the entire interactive web application in one language. Data model in the same language as templates. All secured with type declarations and type inference - for example, there is a functor that automatically generates a complete administration interface for a table defined in Ur, with protection against code injection and other common attack scenarios. The language itself is very strongly oriented towards ML, but adopts some features from Haskell (specifically the monads and the more powerful type system). In some points, it reminds me strongly of Scala in terms of ideas - good embedded languages for SQL and HTML combined with a powerful functional language. However, the Ur compiler directly generates object code (and JavaScript for the client side) and not code for a virtual machine. And the runtime has no garbage collection, but memory management derived from the code (which makes memory behavior more deterministic). The whole thing is based on MLTon, a very well-optimizing ML compiler. Somehow, much of the project reminds me of Django - only not dynamically typed, but statically. Could be quite interesting.

Web Authoring System Haskell (WASH) - just for completeness, also linked, it is comparable to Ur/Web and Ocsigen, only with Haskell. But it somehow seems even more piecemeal than cohesive.

December 25th - "Happy Birthday to those of you born on the 25th! Sorry you get kinda shafted by the overlap with christmas." - fuck, yeah!