programmierung - 31.5.2010 - 6.9.2010

DOS on Dope: The last MVC web framework you'll ever need - I am scared.

Plac - a very nice option parser for command-line tools. The special feature: the parameters are simply determined from the function definitions and the whole thing works from Python 2.3 onwards (with some limitations in syntax, as there were no decorators in Python 2.3 and annotations only exist from Python 3 onwards). Seems to be a good way to build tools that should run on multiple Python versions (because otherwise only getopt remains and that is really very primitive).

Python Datastructures Backed by Redis @ Irrational Exuberance - Redis itself is already very interesting because it is not just a simple key-value store, but structured data (lists, sets) are allowed as values. And with this library, Redis structures are accessible as normal Python data types, making programming with Redis even simpler. Combined with replication in Redis, this could be very interesting in clustered environments.

zeromq - no idea if I already had it, but hey, repetitions also exist on TV. Interesting about ZeroMQ: it has almost no real build dependencies and is therefore directly installable on many systems. Oh, it's a message queue server with a lean interface and good performance.

JazzScheme - huh? Seems to have completely passed me by - there is an IDE for Gambit Scheme that runs on multiple platforms and can create binaries for OS X, Windows, and Linux.

Quicklisp - get started with Common Lisp libraries, quickly - Zach Beane is finally going to address the problem of the rather chaotic library situation for Common Lisp and is building a central repository for libraries with easy installation on various Lisp systems. In principle, something like PyPi or CPAN. Which is generally very interesting - but would be even more interesting if there were somewhere on the site or the group or the GitHub a hint as to how to actually get it running and with which Common Lisp ... (ok, it's still very early development status, but still - the only documentation a screencast? Hello?)

Paver: Easy Scripting for Software Projects - interesting small replacement for Make. Especially in connection with Python projects, it sounds very useful.

Pysistence - just checked if something like this exists or if I should write it myself. Pysistence implements functional persistent data structures for Python. This means that there are no side effects, but rather that each function provides a new version of the data, with common substructures shared across different versions (in order to be able to work efficiently with them both in terms of runtime and space requirements). I definitely need to take a look at this, as in many cases the lack of proper implementations of functional data structures in Python has bothered me.

The Official web2py Book - I'm a Djangonaut, but here's an online web2py book. And it doesn't hurt to look over the horizon.

emscripten - Compile LLVM bytecode to JavaScript, with loop detection etc. It's even usable to compile non-trivial C/C++ code to JavaScript. The author sees, for example, a purpose in porting existing game code to the JavaScript world, so it's quite serious. No indication whether you can boot a Linux kernel on a website with it ...

lambdaj - brings Java anonymous functions and higher-order functions (well, at least approximations of these).

nakkaya's static at master - GitHub - static site generator for websites in Clojure.

Meliae python memory analysis in Launchpad - sounds very interesting, bookmarked for later problems, could help with one or the other problem. Installation is quite simple via pip install meliae or easy_install meliae, it is also listed on pypi.

[Cython] ANN: Cython 0.13 released!](http://www.mail-archive.com/cython-dev@codespeak.net/msg09503.html) - There's a new release for Cython (formerly PyRex). And the language for Python extensions is becoming increasingly complete. This makes it much easier to create performance-critical parts of the code because you can work in a very Python-like language.

JEmacs - the Java/Scheme-based Emacs - just for future curiosity blogged.

Scribes - Simple And Powerful Text Editor for GNOME - interesting project, an editor that is expandable in Python. Since I work with Linux at work, I could take a look at it after the vacation.

PEP 380 -- Syntax for Delegating to a Subgenerator - a very interesting point for extending Python. So interesting that Guido could imagine implementing this PEP even now, bypassing the moratorium. Generators in Python are becoming a very pleasant language feature for me - code often becomes much more compact and readable. If only Django were also available for Python 3, I could use some of the new features there. Python 2.7 somewhat alleviates the pain.

saucelabs's monocle at master - GitHub - interesting package for easier programming of asynchronous routines in Python. Particularly interesting: it supports not only Twisted but also Tornado.

Hg-Git Mercurial Plugin - did I already have this? No idea, doesn't matter, it's good, can't hurt to repeat.

Valued Lessons: Monads in Python (with nice syntax!) - very interesting hack that can indeed have practical use. Found at Schockwellenreiter.

PJS4iPad - Project Hosting on Google Code - this is a really cool project: processing.js in a variant for the iPad, which uses HTML5 local storage to save programs locally, so that you can work offline with your own program. Interesting, for example, to doodle a bit while on the go (write small programs that have interesting visual effects). And because it's all a web app, the AppStore restriction does not apply.

Check out TIDE 2.0 beta - a JavaScript IDE that runs entirely in the browser.

Python IDE with Django support : JetBrains PyCharm - the JetBrains people (who make IntelliJ) have now built a pure Python IDE based on IntelliJ and it has a lot of interesting features. I should take a look at it, especially since it also includes support for Django and Google App Engine.

itod's fluidium at master - GitHub - the foundation of Cruz (social browser), Fluid (site specific browser) and Fake (browser automation ala Automator). Suitable as a basis for RIA as well as a basis for specific browsers for websites or mashups or whatever. However, it's Mac only.

Lightweight Approach to AOP in Python - and while we're on the topic of AOP: there is also a library for Python.

Building iPhone Apps with HTML, CSS, and JavaScript - for those who don't want to deal with the AppStore and are satisfied with a web app, here's a book about it. Under CC license.

jquery-aop - Project Hosting on Google Code - AOP provides (among other things) easier programmed debugging and is very practical when you want to modify frameworks afterwards, but don't want wild monkey-patching. Since jQuery is my preferred JavaScript tool, I should take a closer look at this.

jessenoller.com - PEP 3148 Accepted: “futures – execute computations asynchronously” - the PEP is a bit too oriented towards the Java world, I would have preferred a leaner and more Python-specific implementation, but at least. Particularly interesting are the considerations to look at concurrency stuff again and sort it out.

Chickenfoot - this is what runs under CoScripter. ChickenFoot is not just some ad-hoc scripting language like in CoScripter, but simply JavaScript with a quite interesting automation library integrated. So as a building block, in my opinion better suited, especially since the scripts remain on the local computer.

CoScripter - I'm currently looking at this, is an extension for automating web access (similar to FakeApp, but less graphical) and could help me automate the download of my SL transactions again. Because they are - as with many "social networks" - hidden behind stupidly complex login scenarios, which are not trivial to automate with e.g. Python. However, it stores the scripts on a public server, even private scripts are stored there, just not accessible to everyone. Somehow also not quite right.

Dropbox API - and this could become quite an important toy for me in the near future - an API for Dropbox. Of course, most of the time I just need to send files back and forth, so simply using Dropbox is sufficient. But for some things, an API to access the metadata on Dropbox would indeed be interesting (one of my projects that has been on the back burner for a while would be an implementation of the Simpletext.ws service from Google App Engine on a normal Python service with Dropbox as the backend, for example).

Python 2.7 Release - some good stuff in it, especially the set and dictionary comprehensions I like - so far I have made do with generator comprehensions, but the dict comprehensions just look better and more readable. Due to various dependencies, I am probably still tied to Python2 at work for some time to come, so it's nice that some of the Python3 features are also becoming available in Python2. However, I am one of those who really want Python3 - just for the much cleaner string handling with Unicode as default. But as long as Django does not run on Python3, I am reluctantly stuck with Python2.

liebke's clj - ah, someone has put together package installation and a decent REPL for Clojure, so you can play around with Clojure interactively without having to set up a project every time. Very practical for quickly trying out some Java libraries. Internally, it doesn't do anything else than setting up and managing a hidden Leiningen project, so it's rather cosmetic, but the right kind of cosmetic.

jessemiller's HamlPy - I need to check this out, an implementation of HAML (basically a shorthand notation for HTML) with integration for Django. This could be interesting for the many small internal templates, as they are created by programmers and not designers. However, I would first have to see how well (or how poorly) I can integrate JavaScript with it. But definitely interesting - HTML is not really Diff/Merge-friendly and simply annoying to write and read.

Write-Ahead Logging - in SQLite! From version 3.7. This is very interesting because it makes a use case easier - multicore-using applications that want to work with an embedded database. SQLite becomes even more the Swiss Army knife of data storage (and if you take this into account when programming, switching to PostgreSQL for larger installations where the embedded database no longer makes sense is easily solvable).

Inconsolata - I stumbled upon this font via my iPad (in iSSH) and find it very pleasant. Especially with today's higher screen resolutions, a monospace font can certainly pay attention to details - and this one does it well.

Nicholas Piël » ZeroMQ an introduction - a brief overview of how asynchronous messaging with ZeroMQ and Python looks and how the different messaging scenarios can be represented. I should take a closer look, because it's something like a deconstructed framework for messaging - so only the building blocks to be able to build your own, optimally tailored to the problem, messaging system.

PyFilesystem 0.3 released - looks interesting, filesystems in and with Python. You can write FUSE filesystems in Python or simply access Amazon S3 or FTP with the same code.

About Greenfoot - a graphical programming environment for games and other interactive content in Java. By the BlueJ creators.

PyPy Status Blog: A JIT for Regular Expression Matching - this is the reason why I firmly believe that the future of Python is PyPy (or something similar) and why I want something like PyPy. An environment where all language elements are reduced to a common base, where I can work at all levels of abstraction - if necessary even at the level of code generation. This offers significantly more pleasant optimization options than the CPython model, where higher performance beyond a certain point is only achievable through C extensions. However, I also come from Lisp, where it is quite common to work with a language family from high-level language elements down to code generation. My Xerox Lisp machine had a TCP/IP stack written in a subset of Interlisp - this is quite comparable to the situation of PyPy and RPython.

nutshell — Lettuce v0.1.2 (barium release) documentation - lettuce is cucumber for Python. cucumber is BDD for Ruby. BDD is behaviour driven development - first you write BDD stories, then you write the code and a small Python module that connects the story with the code. This automatically generates the test code. It looks a bit silly at first glance, but has the advantage that test cases actually orient themselves towards specified behavior and are not simply abstractly programmed into the woods. In combination with testcase-pro-bugreport, this provides a quite usable test environment.

iFolder - I just came across this. Open Source from Novell that builds functionality similar to Dropbox. Only that you operate your own server (a Linux box, ready-made packages for Open Suse). The whole thing is built with Mono, clients for Linux, Windows and Mac. I haven't tried it yet (Dropbox works too well for me to feel a great urge for changes), but I think before the next renewal with Dropbox I could take a look at it. Hosting a Suse box somewhere (or getting the server to run on Ubuntu or Debian) shouldn't be the biggest problem and I'm already hitting the limits of the 50G option from Dropbox. What I haven't found is access to older versions of files - but I haven't looked through the quite extensive manuals yet.

AdBlock for Safari - with Safari 5 you can now block ads. In this case, a Chrome extension has been ported to Safari - apparently they are quite similar (both are based on JS + HTML5 as technology).

Racket Released - PLT Scheme has a new name and a new release. And is still the coolest Scheme environment.

kenkeiter's ryfi - blogged for later. A Ruby server that can work with EyeFi cards and enables you to do more with photos than just store them. With this, you could build automatic syncs to your own cloud or other fun stuff.

Plac: Parsing the Command Line the Easy Way - interesting library for parsing parameters for Python tools. Much more compact than other libraries. Parameters are automatically derived from defined functions using inspect.

Python Package Index : Baker 1.1 - and yet another alternative of a more declarative command line parser.

Aeracode :: On Django And Migrations - South core libraries may move to the Django core in the near future (possibly targeting Django 1.4). I approve. Having the basis for migrations already in the Django core would not only be helpful for migrations but also for projects that require higher dynamics in the data models - my current hack with sqldiff and some self-made code is just that: a hack. It's probably time to take a closer look at South (so far only briefly looked at it, but what I've seen I liked) and consider whether I should already now put my hack on a more powerful basis.

Oppugn.us: Where The Rants Go - Zed Shaw on Flash. Fuck, yeah.

HackageDB: berp-0.0.1 - someone is programming a Python 3 compiler and interpreter in Haskell. At least intellectually quite interesting.