programmierung - 20.1.2010 - 28.2.2010

mmcgrana's ring at master - GitHub - nice small lib at the level of Python WSGI. So absolutely minimal HTTP bindings for Clojure with the possibility to then operate the whole thing via a whole range of different techniques. Particularly interesting for the cases where you don't want to be put into the corset of a finished framework like Compojure.

PiCloud | Cloud Computing. Simplified. - very interesting service: trivial distribution of Python code (with access to C/C++ libraries for number crunching and other things, e.g. also image processing, even your own C/C++ libraries are possible) on a provider-managed EC2 grid. The programmer only writes his Python code, tests locally, if everything works well with small sets, upload base data, import, function call and wait until the results are there - payment is made according to usage time. Definitely keep an eye on it, in case you need to process larger amounts of data - this can indeed be cheaper than providing the necessary resources yourself.

rfc1437 / django-standalone / overview — bitbucket.org - As I often refer to Bitbucket, GitHub, or Google Code, here's a link to my own small package on Bitbucket: django-standalone. It was created because I often need an ORM for small scripts and tools, but I want to keep the hassle to a minimum - not set up an entire Django project, but simply define a few models in my script and initialize the DB via parameters and then use it. Preferably with sqlite3. This library makes it wonderfully easy, and I can finally cross one of my long-standing projects - "write a simple ORM for simple scripts myself" - off my to-do list.

dajaxproject.com - easy to use ajax library for django - maybe I should take a look at that, the current project might use quite a bit of Ajax and if you can reduce the amount of JavaScript that would be quite desirable.

Squeryl — Introduction - I should also take a look at that, as I was not so enthusiastic about the previous persistence layers for Scala. And for initial experiments, I actually don't want to build a web application with Lift right away, but perhaps just rewrite a few tools that I have solved differently with Scala.

IronPython 2.0 and Jython 2.5 performance compared to Python 2.5 - word of warning: both Jython and IronPython are significantly (and I mean significantly significantly) slower than CPython. The overhead for Jython with very large data structures is eventually better than with CPython, but for normal use it doesn't look so great.

IronPython hammers CPython when not mutating class attributes - more information about the performance issue. Here related to IronPython - apparently class variables can be problematic in some cases, as the classes themselves change through them and thus JIT compiler information must be discarded (due to the rather static structure of the VM, both in the JVM and in the CLI, probably a very similar problem), which means the JIT compiler then has to rework everything and thus not only are performance advantages lost, but they can potentially even be counterproductive.

bpython interpreter - definitely try this out at the company, at home this alternative Python shell made a really good impression. In some points better than ipython and that is already very good (but in my opinion too focused on its own features and away from the Python philosophy, while bpython seems more pythonic)

DreamPie: The Python shell you've always dreamed about! - another interesting alternative Python shell, this one as a GTK window. This opens up completely new possibilities, such as real popups as small graphical windows and direct graphical output. However, py-gtk for OS X is still rather shaky (like all GTK stuff currently, it's still alpha) and actually I prefer similar environments under OS X and Linux.

ZODB - a native object database for Python — ZODB v3.9.0 documentation - because I always forget: ZODB is also available standalone, without the Zope monster on top. And with direct access from Python, ZODB offers some very interesting features. Still one of the most developed real object databases for Python (but unfortunately still no general query language for the database to handle object sets more efficiently).

django-piston - I should also take a closer look at this, as it is supposed to facilitate the building of Web APIs with Django. And some of my company projects could benefit from it.

Murky - a nice small GUI client for Mercurial for OS X. It already looks quite useful, you can easily navigate through the history of a project, display differences, etc. - of course, all of this can also be done with the shell, but sometimes it's just simpler to work with a GUI.

Front Range Pythoneering: Realizing Jython 2.5 - it's written further down there. Jython has a GIL as a funny Easter egg in the future module (which makes future language features available as "Beta"). So no GIL, just a joke. I would have been quite surprised otherwise.

Interactive Python GIL Visualization [dabeaz] - very interesting analysis of the effects of the GIL in multithreaded Python projects. Could Jython (no GIL, threading based on Java standards) be a help here?

maven-jython-plugin - Maven Jython Plugin - hmm, the Jython support for Maven is quite outdated - the artifact only targets 2.2.1 and the plugin only goes up to 2.2.1. It seems like an update is urgently needed.

Bill Clementson's Blog: Elephant and Rucksack - Comparison of two CL Open Source Prevalence packages - because I'm also interested in Common Lisp again at the moment. Elephant and Rucksack are probably the more interesting persistence solutions for Common Lisp right now. Unfortunately, Rucksack is not asdf-install-compatible, so a lot of manual work is required.

Presenting django-devserver, a better runserver. - interesting idea, an extension of runserver that logs SQL statements and provides cache information. This could be quite interesting for my current Django project, as I sometimes produce somewhat more complex SQL there. (And yes, I'm tinkering with Django again, maybe something publishable will come out of it - but it's primarily a work project).

Persistence.js: An Asynchronous Javascript ORM for HTML5/Gears « I am Zef - very interesting, an Object-Relational-Mapper in JavaScript that maps objects to HTML5 databases. This could be very interesting for offline iPhone web applications, because raw database programming (raw database, not naked programmer) is not always fun.

Faster or Lazier Pagination - interesting approach, simply not to determine the amount of sentences, but instead to assume a number of pages and update this when accessing later pages. A bit similar to some websites that only offer a section of the page list as navigation - for this you don't need to know how many pages there really are. Google also cheats by limiting the number of pages to a maximum. For large amounts of data with slow count(*) certainly very useful and possibly you could also combine this with cached maximum page numbers for different queries, so that the next time the assumption about the amount is already more precise.

Using ctags in Vim - amix.dk - ctags enables navigation in larger sources and entire projects based on the definition structure. Under Ubuntu, you can easily install the taglist plugin with vim-addons and then use it extensively. Pretty genius.

Vim 7: Turning completion on - amix.dk - after having dealt with IDEs for a while, but somehow I have to realize I am not really IDE-compatible, VIM can also do symbol completion - and also for Python. Quite easy to set up and quite practical for accessing system functions.

mongoengine - Python API for accessing MongoDB with a structure similar to Django ORM.

InfiniDB 1.0.2: Analytical Database Engine for Data Mining - Golem.de - hmm, based on MySQL - I don't know if I should consider this a recommendation or a deterrent. On the other hand, a DB specifically for data mining-like query profiles would sometimes be useful - so I should try it out.

The Definitive Guide to Jython — Jython Book v0.91 documentation - it is what it says on the tin. Refers to Jython 2.5.1 and is also available as (updated with additional content, the open source version of the book is not yet fully updated) dead tree from APress.

CLiki : FirstStepsWithAsdfAndAsdfInstall - since asdf and asdf-install are anything but intuitive, here's a link to a tutorial

HintsForAsdfAndOpenmcl – Clozure CL - and this is how you generally get asdf-install running on Clozure CL.

AppScale, an OpenSource GAE implementation - an interesting project that mimics the Google App Engine API as an open source solution for self-hosting.

Clozure CL - not linked for the first time, but the current 1.4 distribution has become really nice by now, there are the first IDE tools (Apropos, Listener, Inspector, Editor) in a usable form and the Cocoa framework and the ObjC bridge are also quite mature. Furthermore, it is one of the fastest starting Lisps for the Mac. Offers nice possibilities to play around with OS X APIs.

Eucalyptus Community - and here is a project that emulates the AWS APIs (EC2, S3, and EBS). Interesting if you build AWS-hosted systems and later want to switch to your own systems. The cloud is quite nice, but you should have an exit strategy in case the provider goes under. Doesn't happen? Tell that to the potential customers of the SUN Cloud solution, which is currently being shredded by Oracle ...

denkspuren: Factor @ Heilbronn University - someone has used Factor as a programming language in university courses and seems quite impressed. I myself also like Factor - in a way, the Factor-IDE gives off that old Lisp machine vibe and the language is just nicely compact. However, I often notice that when I play around with it, I end up spending a lot of time finding the right abstractions - there are just mountains of included code and while the documentation is good, there's a bit of a lack of tutorials on how to use the code. Best practices and cookbooks would be in demand. Factor is still fun, though.

django-extensions - very useful tools for Django that plug into the manage. For example, a diff for SQL.

Scala 2.8.0 Beta 1 | The Scala Programming Language - Scala is also getting ready for the next release. The extensions and changes sound quite good - and the impact on existing sources seems to be low.

fastutil - sometimes certainly quite practical, Collections for Java that are based on primitive types and implement these Collections in a space- and performance-efficient manner. So for example something like an array of bytes. Or a map of strings to booleans. The library has over 1000 such combinations ready ...

IronPython in Action: Front Page - didn't even notice, there is already a book about IronPython, the version of Python that runs in Microsoft's .NET environment. Could be interesting for some company projects, especially since there have already been initial successes of Django on IronPython as early as 2008 ...

High-Level Virtual Machine (HLVM) - interesting project for a virtual machine. Written in OCaml.

Trellis - Library for event-driven programming in Python. The idea is to formulate rules instead of handcrafted callbacks that are applied to objects and automatically executed when corresponding changes occur. The system ensures a clean separation of these events, so that no deadlocks occur.

Closure Compiler - actually more of a JavaScript optimizer than a compiler - it removes unnecessary parts, compacts the code, cleans up some slow things and replaces them with more efficient variants and also provides some static tests on the JavaScript code. Once blogged about for company projects.

django-history-tables - could be interesting for a project at the company, there is also the requirement for a history of data changes.

EZ430-Chronos - Texas Instruments Embedded Processors Wiki - technical details about the portable embedded system from TI.

How to create offline webapps on the iPhone - terrible page layout, but interesting documentation on how to build web applications for the iPhone that work offline thanks to the HTML5 Application Cache. After I thought for a moment about whether I should buy such a TI watch, and got annoyed that it doesn't exist as a pocket watch version, I was able to think clearly again and remembered my iPhone ... (sometimes the obvious is too obvious)

Inheritance Patterns in JavaScript - interesting article about which class and inheritance strategy to prefer in JavaScript. Mainly interesting for JavaScript framework hackers, as for the others, a technique will usually have been chosen by the frameworks.

Syntensity - looks interesting, something like an open-source counterpart to Unity 3D. Currently no Mac client, but with open source the chances are quite high that something will come.

TI hits home run with Chronos sportswatch wireless dev kit - that's interesting. A wristwatch to hack - wireless, accelerometer, pressure and altitude sensors, LCD display, temperature sensor, and a developer kit and tools (hardware tools in this case). And also affordable (50 dollars for the watch!). So if you want to tinker with a small embedded system and always have it with you, why not take a wristwatch?

A Postfunctional Language - recently there have been more discussions about whether Scala is really a functional language. Here are the statements on this topic from the creator of Scala himself, Martin Odersky.

Kindle Development Kit - this could almost make the Kindle (the DX already has quite a large display) interesting again. However, Amazon can still remotely delete content on the Kindle.

ABCL-web - a framework to program Java servlets with Common Lisp, can also generate .war files directly. I probably won't be able to convince anyone at the company to use Common Lisp for web development (the chances for Scala are at least significantly higher in some areas), but maybe it can be used for some hacks.

Armed Bear - just so I don't lose it again, abcl is the Java-Common-Lisp, but under the name Armed Bear there is also a Lisp called XCL, a new native code compiler implementation for X86 and X86-64 systems. I could take a look at it sometime (although there are already many not entirely compatible Lisps and with CCL and sbcl two quite good implementations).

Clojure 1.1 and Beyond - where Clojure will develop in the near and medium-term future. Much of this indicates that Clojure will have an experimental character for a longer period of time - which should be considered when using it in production, as new versions can indeed have significant changes both in the language, the base library and above all the runtime behavior.

Kvardek Du: How a Common Lisp Programmer Views Users of Other Languages

pylint (analyzes Python source code looking for bugs and signs of poor quality.) (Logilab.org) - blogged for the colleagues, because when code standards are designed, it is also nice if you can at least automatically check part of them. In addition, pylint can perform (limited) static analysis of Python code and throw out warnings for parts that look strange.