To conclude my week of open source projects I spent time in the hotel lobby and airport today implementing the beginnings of an idea I've had for a while.
gyt is (the start of) an implementation of Git-like ideas in Python (see github).
It's not intended to be a port of Git to Python. It's more designed as an exploration of how Git works and how the concepts might be applied to other tasks. In particular, I'm interested in exploring its use for versioning in-memory data structures rather than blobs on disk.
So in a way, gyt is to Git what Rel is to a relational databases. In fact, the two might have some strong tie, in terms of gyt being used to version relations.
gyt will probably look less and less like Git internals over time. I'll likely change the name at some point as the distance between the two increases.
by : Created on July 23, 2010 : Last modified July 23, 2010 : (permalink)
For my fourth open source project, I thought I'd get around to starting a repo for my various Relational Python explorations, including functional dependency analysis and some ideas I've been having lately that I haven't yet implemented.
Rel (github) is an exploration of the relational model and data analysis in Python.
I'm starting off just bringing together code I had on my blog from various posts in 2005, initial focusing on implementing relations, a few relational operators and exploring functional dependency analysis.
Still to come is broader support of the relational model, use of namedtuples, use of itertools, importers and exporters (including possible support for Django's fixtures format) and more utility functions I have scattered all over the place in various data analysis scripts I've written over the years.
by : Created on July 22, 2010 : Last modified July 22, 2010 : (permalink)
I have to do an impromptu additional blog post because I just found out that my first big open source project, Apache FOP, just had its 1.0 release today.
I started FOP in 1998 and, in 1999, donated it to the Apache Software Foundation. I haven't been involved in its development for a long time but am delighted to see it reach 1.0, and from the articles written about its release, it sounds like it's actually used by a lot of well-known companies.
FOP was the first project I used Python on. It was the first open source project I did involving other contributors. It was the first large Java project I did (and I remember first grokking things like the Visitor Pattern in trying to solve design problems in FOP)
For a blast down memory lane, be sure to look at my archive of the old FOP website.
by : Created on July 21, 2010 : Last modified July 21, 2010 : (permalink)
It seems entirely appropriate that today's featured open source project should be Pinax.
I gave a talk on Pinax at OSCON this morning and at the end of the talk announced the availability of the first 0.9 alpha.
Pinax 0.5 was our first release. 0.7 represented a response to Pinax's first contact with actually building real sites and included fairly cutting-edge (at the time) use of virtualenv and pip.
The development work since then has come from a lot more experience building websites with Pinax. But while a lot of work has taken place, a lot of people didn't know about it because we went too long without a release.
Today that was rectified. Pinax 0.9a1 is now out and is available as easily as typing "pip install Pinax" (preferably inside a virtual environment)
Brian Rosner did a great write up on the mailing list about 0.9a1.
by : Created on July 21, 2010 : Last modified July 21, 2010 : (permalink)
Continuing my blogging about an open source project of mine each day during OSCON...
parse-helper (github) is a javascript library for building controls for assisting in the entry of parsing codes during linguistic annotation. I only just started it last week as part of a larger project called OXLOS, a Pinax-based platform for collaborative corpus linguistics.
The idea of parse-helper is that the controls could be attached to any text input expecting a parse code to be entered.
It currently includes support for the CCAT parsing codes for Ancient Greek (as used by the MorphGNT project). Other parsing schemes are planned.
The CCAT support includes filtering available attributes based on part-of-speech selected (and choice of verbal mood can further refine the options).
At the moment there is no support for going the other way and taking an existing parse code as a string and correctly showing the individual attribute values selected. This will be coming soon.
This project is at a very early stage and I'm sure the code could be improved a lot.
You can view a demo.
by : Created on July 20, 2010 : Last modified July 20, 2010 : (permalink)
As I'm at OSCON this week, I thought it would be fun to kick-start my blogging by blogging each day about some open source project I've worked on in the last year.
Today I want to introduce Czerny (github).
Czerny, named after Carl Czerny—the Austrian composer and piano teacher, is a early-stage Python project for assessing the performance of piano pieces.
The idea came when I was doing Charles-Louis Hanon's Virtuoso Pianist exercises. My thought was that it would be nice if a program compared my performance with the score and indicated not only mistakes, but deviations in velocity and timing.
The basic idea is:
The first two items are at a very early prototype stage. The third has not yet been started on.
Czerny includes a pyrex wrapper around OS X's Core MIDI library and a Python script for outputting events coming in from a MIDI keyboard. At some point it could also just read MIDI files (SMF) but for now, it records MIDI input into its own simple file format.
Alignment is currently done via my implementation of the Needleman-Wunsch alignment algorithm. There's a lot more work I plan to do on the note difference function, but I need more data first.
I haven't yet started on actually interpreting the differences once an alignment has been made. The obvious feedback I can give is in notes added or dropped. But my goal is also to express variations in velocity and timing. If the "score" has fingering, I could also eventually give stats on the performance of each finger, perhaps indicating which need more work.
A long-term goal might also be studying the performance, not of piano exercises, but real pieces to identify and learn patterns in how scores are mapped to performances.
by : Created on July 19, 2010 : Last modified July 19, 2010 : (permalink)