[Update: Thanks to Blake Winton for pointing out that the project page link to the Pastels download was broken, fixed now. Also added a link to the project page.]

Pastels is an example project for creating an OS X screensaver in Python using PyObjC. By extension it could be used as an example for building nearly any plugin or bundle for OS X. It started when I had an idea for drawing a simple squiggle, over and over, while cycling the colours and moving the squiggle around. I was very pleased with how it turned out.

Project page:

It’s also my first attempt at hosting an open-source project at Google with their new hosting program. If it works out well I will add more of my projects there, which will save me trying to set up and configure Subversion on Dreamhost for public access (probably not difficult, but one more thing I don’t have to do means more time for writing example code and tutorials).

I’m working on the tutorial text to go along with this project, so ask any questions you have and I’ll try to get to them in the tutorial.

If you are seeing this on my site (as opposed to the Atom feed), there are some changes I’m making to the site that I’d like to point out. I’ve added pages for projects and mini-projects which use the same stylesheet and includes as the rest of the site. I know the stylesheet is uglyless than completely attractive right now–the first thing was to get everything factored and consistent, then to make it pretty. The projects page only has one item on it (Pastels), but that should be changing now that I have the infrastructure set up the way I want it. Nearly all the projects I mentioned in my presentation at the Vancouver Python Workshop will get their own pages soon. More about that in my next post.

Reflecting on the past, looking to the future

Programming is the art of telling stories to the computer in such a way that the computer can tell us interesting stories back. At its best, these stories help us to write even better stories, and to share them with each other.

I see computers as not ready yet. People buy them, they’re interesting toys. They help in some ways, make things more difficult in others. But we have bought into the mythology of computers. Meanwhile, the state of the art in computing has moved backwards in important ways[1], even though computers are getting cheaper and faster. Innovation crawl during the dotcom boom[2]. Tools get more complicated[3], resulting in less freedom of expression, wasting the time of the people who use them.

The idea behind Living Code is that software is not a thing that is finished, it is more like a conversation. Like telling a story that someone will make better. We are trying to take steps to move to a new model of software, one in which we don’t “write programs,” but instead play the computer like a musician plays jazz. This model should be accessible to children, and yes, even to adults.


A rather large goal.

But just as software is never finished, the goal isn’t there to be achieved. We have a goal in order to make focused, achievable steps while learning from history and aware of our limitations. In this conversation our goals become prototypes, experiments which are contantly evolving as they are tested in use.

Happy New Year!

[1] For examples of the promise that computers have thus far failed to live up to, see the wikipedia articles for Sketchpad, Dynabook, OpenDoc, Seymour Papert or Douglas Englebart.

[2] For examples of how computer innovation has stalled, check out one of many patents holding the field back, or check out this summary of Microsoft’s innovations.

[3] For an example of how tools are getting too complicated, see Charles Petzold’s article, Does Visual Studio Rot the Mind?

Sierra Sliders

Kathy Sierra, of the Creating Passionate Users blog, posted about using an equalizer metaphor for product planning and brainstorming. She included some images for her readers to play around with for their own equalizer-planning projects. I took those, apply the Gimp to them, mixed with Bob Ippolito’s uber-cool MochiKit, and release to you:

Sierra Sliders

You can label up to eight sliders using the text box, hit enter and tweak the sliders. When you have it the way you want it, you can bookmark the result and send it to your team members, or your mom. Tested in IE 6, Firefox 1.5, and Safari 2.0.2. Your mileage may vary. Void where prohibited by law. Some limitations may apply. Coded in a hurry™.

Declarative animation with SVG

One of the things which has been taking up my time from releasing Drawing Board is that I’ve been writing another guest edition of my friend David Mertz’s XML Matters column for IBM developerWorks. The latest, SVG and the Scriptless Script went live yesterday.

My last article, on using the DOM, was something I know well and have used for years. This one was on a subject I’ve wanted to learn more about, so getting the examples all working the way I wanted was challenging, but I’m really happy with the result.

Another reason I haven’t released Drawing Board yet is that I want to put up a screencast of it in use, but there doesn’t appear to be a good solution for creating screencasts on OS X. I think I’ve got a solution for that.

PySight Preview

Awhile back I promised a bunch of posts, but delays were made (including a month of vacation travelling around BC which I won’t apologize for). One of the promised projects I was going to talk about was PySight, which ought to be simple, since it’s just a trivial wrapper around Tim Omernick’s CocoaSequenceGrabber (used with his permission). But I wanted to package it nicely, write more example code, maybe some documentation.

So instead of a polished project I have no project, and finishing it is pretty low on my priorities right now, sad to say.

Fortunately, Robbie Tingey came to the rescue and prompted me about it. I put a zip file together with Tim’s code to create a framework, his example program to use the framework, my simple wrapper, and my re-write of Tim’s example program in python using PyObjC to show how to use this. There’s a README, but not much else. I sent Robbie the URL and he tried it out successfully, so I thought I’d toss it out to the rest of the world. Caveat emptor, this is pre-alpha, no guarantees, no promises, but hey, it “Works for me™.”

So if you’re feeling adventurous, go ahead and try out PySight (74K Zip) and start grabbing data from your iSight camera from Python. Contributions to packaging it nicely, documenting it, or adding examples are gratefully accepted. Or, just bug me about it and I’ll see what I can do to move it up my priority list.

Python, meet iSight. iSight, meet Python. Play nice together now.

[Update: I forgot the link. Thanks, Marcia!]

« Previous Page« Previous entries « Previous Page · Next Page » Next entries »Next Page »