Showing posts from July, 2005

Funny: Revenge of the sith

What happens when you translate the script of Revenge of the Sith to Chinese and back into English.
For example, "Revenge of the Sith" becomes "The backstroke of the west"
And "obi wan, may the force be with you" becomes "ratio tile, the wish power are together with you".

See the actual screen shots, they're funny!

Food: Thinking about Bosna sausage

There's some fast food hot dog they have in Austria called the bosna, which I had a hankering for the other day. I guess I had a sausage which was similarly spiced and reminded me of this wonderful food. I can't seem to find a recipe on the internet but I remember it having onions, curry (and paprika?) on a long sausage. Yum. The picture is from Salzburg, Austria and is the actual hole in the wall that I often bought from.

Python: PyX

Wow, yet another complete library for creating plots and text. I'm currently addicted to matplotlib for plotting and was involved with ReportLab for drawing PDFs. This Python library has it has it both.
Here's the feature list from the site:
PyX is a Python package for the creation of PostScript and PDF files. It combines an abstraction of the PostScript drawing model with a TeX/LaTeX interface. Complex tasks like 2d and 3d plots in publication-ready quality are built out of these primitives.seamless TeX/LaTeX integration
full access to PostScript features like paths, linestyles, fill patterns, transformations, clipping, bitmap inclusion, etc.
advanced geometric operations on paths like intersections, transformations, splitting, etc.
sophisticated graph generation: modular design, pluggable axes, axes partitioning based on rational number arithmetics, flexible graph styles, etc.

Tools: Faces a Project Managment Tool

This tool (Faces) came out of nowhere and is very interesting. You create you schedule using what looks essentially like Python and it'll output Gantt charts and some other formats (like tables).
Here's a very simple example which has one task which will take one week. It is also setup to output a Gantt chart and a report (spreadsheet):

from faces import *
from faces.lib import report
from faces.lib import gantt
def My_Project():
def Task1():
start = "2005-1-16"
effort = "1w"

project = Project(My_Project)

class Gantt(gantt.standard):
data = project

class Report(report.standard):
data = project
cols = [

What's neat is you can have complex rules about when a task can start and which resources are required for the task. Anything that Python can do you can do with this management tool.

Tools: Task Coach

I've been using TaskCoach for two weeks now it it's a nice little program, that just fits my needs.

Task Coach is a simple todo manager to manage personal tasks and todo lists. It grew out of a frustration that well-known task managers, such as those provided with Outlook or Lotus Notes, do not provide facilities for composite tasks. Often, tasks and other things to do consist of several activities. Task Coach is designed to deal with composite tasks. link
What I love is that it's written in wxPython and uses XML to store it's data. In 10 minutes I wrote a program to parse the XML and create a reports of my activities by date so that It would be easy to enter in our time tracking system (which keeps changing).

Python: optparse

I'm working on a library that can override the built-in Python library optparse. For those who don't know, optparse.OptionParser is a class which handles arguments passed to you program at the command line. It's quite powerful, a quick count shows that I have almost 50 utility programs that I wrote that use it. I want to leverage this ability and be able to put a pretty front end on these programs. My idea is to replace optparse with my own class which throws up a user interface showing the options as controls.
Basically, I plan to call "wxoptparse mygprog" which would load up and look at the options available and bring up a dialog box (in wxPython) showing what the options are. This was far easier than I had ever imagined. Here's the crux of the code:
import optparse, wx

# my class inherits from OptionParser
class wxOptParser(optparse.OptionParser):
# Override this method
def parse_args(self, args=None, values=None):
# Stuff snipped out here