python - 21.9.2010 - 30.1.2011

cfbolz / Pyrolog. Interesting project because it implements Prolog in Python, but uses the PyPy toolchain for JIT - this gives a nice insight into what is possible with PyPy besides Python.

Sho - Microsoft Research. A bit like SciPy and Sage (the part of Sage that deals with data analysis and visualization), but based on IronPython and .NET.

PyPy Status Blog: PyPy wants you! - yay! Fast-forward in PyPy gemerged! This means soon a 2.7 compatible PyPy - the project is now looking for contributors to implement the missing 2.7 features. The next PyPy version will be very interesting!.

Tail Call Optimization Decorator - someone taught Python tail recursion as a decorator. Very cool. Someone else picked that up and built two faster versions, which, however, have minor restrictions in use. And at LTU someone also made a version - what's particularly cool about it is that it uses my lazypy module. And then I also found a super-short and fast version that, however, delivers incorrect results if a function is not called in tail position. But since you usually use tail calls in compact recursive functions (or two or a few that do mutual recursion), you should be able to handle that.

Pyrates are cool — A wiki about python game development. That's what it says. Certainly not everything is linked, but it's a wiki, and as a starting point for someone who wants to see what's happening around games with Python, it might be quite interesting.

CLPython - an implementation of Python in Common Lisp. Simply because it combines two of my favorite languages and makes pure-Python libraries available for Common Lisp. Perhaps now some of you can see where my search is heading - to have my cake and eat it too. By the way, CLPython is compatible with Python 2.5, so it's even a fairly up-to-date language level (even though I'm sure I'll miss some things from 2.6, but it's no different with PyPy).

About Dirigible - for all those who want a spreadsheet in the cloud, but don't want to program with JavaScript like in Google Docs, but with Python. As a self-hosted solution, I would find it really great, especially because of the simple linking of spreadsheets across server boundaries described there.

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.

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.

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).

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.

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.

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.

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.

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.

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.

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).

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 ...

agr / ropevim / source – Bitbucket. There is also a Vim integration for the other tool that interested me about Spyder: Rope. A refactoring tool for Python code. Not entirely uninteresting for a sufficiently large code base.

pyflakes.vim - PyFlakes on-the-fly Python code checking : vim online. I'm also looking at this right now, as it provides some interesting tools for Python and is quite good to use, especially with MacVim.

spyderlib - Project Hosting on Google Code. I'm currently looking at it, it's a quite interesting Python editor with many IDE features. Since it is written in Python itself, various Python tools integrate very well (Rope, Flake, PyLint).

Python Package Index : lupa 0.18. Brings LuaJIT2 and Python together, so that you can access Lua scripts from Python, which are then compiled by LuaJIT.

PyPy Status Blog: PyPy 1.4: Ouroboros in practice. And with that, PyPy has now also arrived at the JIT in 64bit. In addition, VirtualEnv now works smoothly if you install a current version. And it's still fast.

Blogofile - I stumbled upon this while considering what to do. One of the many static blog engines in Python with Git integration. Could potentially be interesting for smaller sites (or e.g. for a metablog).

From the "pimp my Vim" department: UltimateVimPythonSetup. I am indeed a Vim fan, and some of the tips in there sound quite interesting. However, some things also go a bit too far for me, my reason for using Vim is precisely that I don't want an IDE, but an editor that mainly does one thing - source editing. But for the one or other out there maybe still (or precisely) interesting.

pyfpdf provides PDF generation without dependencies on other packages. However, it says "ported from PHP" up front. But if that doesn't deter you and you want to produce simple PDF outputs, you might not be so badly served with it.

Twisted Orchestration Language in Launchpad - and someone has ported the Orc combinators to Python, using Twisted. However, I personally find Twisted rather disgusting to program, but to each their own ...

Tornado Web Server Documentation - I should really take a closer look at Tornado. I just built a web service for a side project using web.py, which was surprisingly simple (and dirty). Tornado is based on a very similar concept, throws in Django-like templates, and also offers a good asynchronous server and support for asynchronous sockets and HTTP requests. Could be a good alternative for web services that require few resources.

Eventlet Networking Library - I need to take a closer look at this, the monkey-patching of standard libraries to trivially use them in an asynchronous environment looks very interesting.

Links

rfc1437 | Content-type: matter-transport/sentient-life-form - Strong trends towards "throw away with archive and start from scratch" with slight options for "throw away, static archive and maybe shovel a part into the new platform if I find the time". The link shows where I'm currently playing around. Wordpress with a few small plugins and an nginx caching front.

Bitrot

I've been hit by this as well. My old blog software probably won't be able to survive unchanged. Old Python version (2.3), old (very old) Django (0.91), old PsycoPG driver (1.0), old PostgreSQL (7.4) and all of this on an old Debian (a wild mix of various versions with backports and custom programs and several failed upgrade attempts). Argh.

Well, I'm still torn between "rewrite" and "throw away". The latter has the charm that I won't have to carry all that junk around anymore. And honestly, nothing particularly interesting ever happened on my blog anyway. Maybe I can set up a wget mirror beforehand and dump the whole thing somewhere statically, as an archive.

Rewriting naturally has a lot of charm as well, but converting thousands of old entries (over 4000 articles and over 4000 links, plus almost 200 images) from 8 years (first entry on 3.11.2002) of blogging doesn't sound like fun. And presumably, thousands of the links are outdated and obsolete anyway.

No idea what I'll do, maybe I'll try to bring the Metaeule to the new box first, where I only have the problem that PHP4 is no longer in the Ubuntu repository for 10.04 and I therefore have to force the owl onto PHP5 (and that with code based on Wordpress 1.5 - I must really be crazy).

Or I try to install an ancient Debian with the packages used at the time - the box doesn't run in the front anyway, but behind other machines, so the hacking risk is rather low at this point. The Metaeule naturally also has a few thousand posts in the archive (only 8291, which is almost nothing), but if I can keep the old software running (some security patches have been applied over time, so it can actually continue to tinker along), I don't necessarily have to tackle it.

Somehow, the internet was also such a really bad idea ...

Twisted Orchestration Language in Launchpad - and someone has ported the Orc combinators to Python, using Twisted. However, I personally find Twisted rather disgusting to program, but if you like ...

Kilim - stumbled upon this while browsing the Orc documentation, a microthread library for Java.

Orc Language - haven't read anything about it yet, but it looks quite interesting. The core is Cor, a functional language without side effects, and Orc, which is built on top of it, is used for orchestrating services in distributed systems. The whole thing in a quite appealing, compact syntax on the JVM. One could certainly take a look at it as an alternative to Scala and Clojure, Java is integrated as an external service, which makes it quite easy to build distributed systems in which parts are implemented in Java. It reminds me in many points strongly of the ideas of Erlang (generally assume a distributed system, but still keep parts local for performance reasons), but I find the syntax much more pleasant. And with the JVM a much more widespread VM than Erlang's BEAM.

Interactive Fabrication » Beautiful Modeler - wow, that's incredibly cool.

Tornado Web Server Documentation - I really need to take a closer look at Tornado. For a side project, I've built a web service with web.py, which was shockingly simple (and dirty). Tornado is based on a very similar concept, throws Django-like templates into the mix and offers a good asynchronous server and support for asynchronous sockets and http requests right away. Could be a good alternative for web services that need few resources.

Fat Cat Software - iPhoto Library Manager - since I was stupid enough to make a photobook on a different Mac than usual (well, the usual one was always occupied), I'll probably have to take a look at this to see if I can merge my books onto a single machine. It's quite annoying that Apple doesn't offer any merge function in iPhoto. With a notebook and a desktop, you quickly end up with separate libraries. If Lightroom supported book printing, I would have been gone from iPhoto a long time ago. Everything is somehow not quite satisfying.

The V4Z80P – A Z80 Based Laptop @ Retroleum - here someone not only builds his own computer with his own system, it's also a laptop. Or something similar anyway.

Oracle cooks up free and premium JVMs - and Oracle begins to try to cash in on Java. If it works, Java could soon be in a similar situation as .NET: the free implementations lag behind the scope of the commercial ones. What this means for alternative languages on the JVM remains to be seen - but it will certainly cause some problems. However, the JVM world is large enough and equipped with enough alternatives, and Oracle is not Microsoft. Therefore, this could all just be a storm in a teacup and only affect the typical Oracle victims.

Kunsthalle Bielefeld: Der Westfälische Expressionismus - I think I actually have a reason to drive to Bielefeld.

Mediathek für Mac OS X - I need to check this out. After all, archiving is now the viewers' job thanks to stupid private broadcasters (and politicians who have made themselves their errand boys).

Panasonic DMC-GF2 Preview: 1. Introduction: Digital Photography Review - I hate you, Panasonic. Now I want the cute little GF2+14mm kit. Menno. First Apple with the MacBook Air and now Panasonic, everyone just wants my money.

Eventlet Networking Library - I need to take a closer look at this, the monkey-patching of standard libraries to make them trivial to use in an asynchronous environment looks very interesting.

Coffee on the Keyboard » Bleach, HTML sanitizer and auto-linker - Library from Mozilla that offers white-list based HTML cleaning. The Mozilla people usually know what they are doing, so this library might actually be useful.

robhudson's django-debug-toolbar at master - GitHub - ok, this tool is officially hugo-approved. Simply brilliant, it provides exactly the right amount of information for Django development and doesn't interfere with existing layouts (at least it worked well for me in experiments).

postgres 9 streaming replication and django balancer - Santana may not yet run with Django 1.2, but the balancer for database access combined with PostgreSQL replication sounds like a nice method to scale up Django systems when normal means with one database are no longer sufficient. Maybe I should set up a test installation.

Fuzzy Mathematics with FuzzPy (Part 1) | Mad Python - if it's not just about fuzzy numbers or error propagation, but also fuzzy sets or graphs are of interest, this module might help.

buckingham - Project Hosting on Google Code - an interesting project that not only tracks error propagation in calculations (which we've already discussed recently), but also takes units into account and can convert between units.

Camelot - See it - quite obvious: take Python and an ORM (here SQLAlchemy) and make a 4G language for database programming with QT as a graphical interface. The whole thing here as a GPL project for which you can also get commercial licenses if you want to create commercial programs with it.

uncertainties Python package v1.7.0 documentation - a very interesting Python module that allows you to use floats with uncertainties in functions. Particularly interesting for situations where you need to track error propagation in calculations (e.g. planning figures or measurement data).

santhoshtr's pypdflib at master - GitHub - I might need this, especially since there is a sample that renders restricted HTML to PDF.

Filtering Dropdown Lists in the Django Admin — Stereoplex - because it is often needed and because some good ways are described here.

arskom's soaplib at 1_0 - GitHub - and another SOAP library. This one can provide the services as WSGI applications, so I can actually throw away the whole server handling from the Toolserver and replace it with normal WSGI servers like Apache mod_wsgi or FLUP.

pysimplesoap - Project Hosting on Google Code - as I still have a work project open to modernize my toolserver, this could be a candidate to replace the rather outdated (and buggy for years) SOAPpy.

Using the ElementTree Module to Generate SOAP Messages - and another SOAP library, this one is based on the nice ElementTree parser. And it's built by effbot, which also gives a lot of hope (he can XML).

dcramer's django-sentry at master - GitHub - unfortunately only Django 1.2 (my own internal framework that is based on Django is unfortunately not compatible with 1.2 at the moment), but very interesting for collecting error messages from Django in the database for later evaluation. Of course, you can also have the errors sent to you by mail, which is already possible with built-in tools, but especially when several people are maintaining a system, storing them in the database can be much more convenient.

README - copperhead - Project Hosting on Google Code - interesting idea, using decorators and introspection in Python to build an embedded language for programming on the GPU. Or to put it more understandably: translate Python code (limited language scope) into GPU machine language.