Entries in the ‘OSS’ Category:

How To Configure Onion Skinning in GAP

The Gimp Animation Package, or GAP, is a plugin that lets you do video or animation in Gimp. Like most plugins in Gimp, it is both very powerful and very unfriendly. If you have done animation in a program like Flash, you are used to having frames laid out along a visual timeline. The timeline in Flash has a bracket to show the onionskin range, which is the frames you will see overlaid on the current frame to help create a smooth animation.

None of this is readily apparent in GAP. Each frame is a separate Gimp file, and GAP sees that they’re part of the same animation because the file names end with successive numbers. There is an onion skinning item in the GAP menu (cleverly disguised as Video), but it doesn’t seem to do anything until you configure it correctly.

To configure onion skinning in GAP, go to Video » Onionskin » Configuration…. The onionskin configuration in GAP is exquisitely flexible and confusing. Here is how to configure onion skinning in GAP for a couple of common scenarios. Note that I’m using Gimp 2.8.2. Read the rest…

Tags: , ,

Comments (1)


Mako Cache Permissions

Just a quick tip about a problem I ran into with Mako recently. When it creates the cache directory for compiled template files, it sets the directory’s permissions to rwx——. This will cause a problem if you use a constant cache directory like the Mako documentation, because only the first user to run the program will have access to the compiled templates.

To get around this, be sure to use a unique cache directory for each user. On Linux, you can append the effective user id to the cache directory name like this:

CACHE_DIR = '/tmp/mako'

# ...

module_directory = '%s-%s' % (CACHE_DIR, os.geteuid())

Tags: , ,

Leave a Comment


Taco Bell Programming

Ted Dzuiba makes some pretty good points in this post, but once you have to scale past one server things start to break down.

Taco Bell Programming

Tags: ,

Leave a Comment


Progress in Real Time Content Distribution

Dave Winer is doing some interesting work towards a new real-time content protocol he’s calling FeedHose. It’s like a feed aggregator combined with a subscription hub. It’s similar to the PubSubHubBub/rssCloud to XMPP bridge I made last year, but better. He’s pretty good at forming communities around his protocols, so hopefully this will gain some traction. We need some progress in open, real-time content distribution.

Tags: , , , ,

Leave a Comment


Server Variables in Puppet Templates

Puppet is an invaluable tool for managing a large number of Linux servers. By defining different classes for each service I deploy, I can easily define what runs on each server I control just by changing the site manifest.

A problem I ran into early when I was bringing services into Puppet was slightly different configurations on servers with different specs. For example, I run Tomcat on three servers but one is also running some other services. On this one server the JVM maximum heap size needs to be lower than on the others, but the rest of the Tomcat configuration is the same. To manage this without making a second class definition I used the template system in Puppet.

There are four steps to making this work. First you need to define a default for the variable. Next you need to write the template. Third, connect the template to a file on the client. Finally override the variable where you need it.

Read the rest…

Tags: , ,

Comments (5)