New Pajama wiki


  • 2008-11-24: The wiki broke a few months ago, after a server change. I’ll restore it someday, when I get Pajama into releasable shape.

I set up a new wiki for Pajama (interactive, continuous, web-embeddable images). Please try it out and leave comments on the wiki or email them to me.

I’m very interested in help with Pajama, particularly:

  • Replacing the remaining old code from Pan (done while I was at Microsoft Research). Most of the code has been rewritten and simplified, including the complicated code motion stuff (common subexpression elimination and loop hoisting), code generation (nicely exploiting Java), and GUI construction.
  • Getting it whipped into shape to be a open source project.
  • Applying the (domain-independent) compiler to other domains (sound, 3D, …).
  • Improvements to the wiki, including easier uploading of examples and automatic generation of galleries.
  • Integration of Pajama and Eros (end-user syntax-free authoring of functional programs).

On wiki software selection: After looking around at different engines, including a visit to #wiki and WikiMatrix, I picked MoinMoin. It satisfies my requirements nicely: Java applet embedding (as generated by the Pajama compiler), free, wysiwyg page editing and a friendly implementation/extension language, namely Python. Then I started learning Python, which is a reasonably nice programming language for customizing the wiki server. My first Python program is a wiki macro that makes it fairly easy to embed Pajama effects in a wiki page.

P.S. to “Pajama site improved”

Please see this this January post for an overview of Pajama.

Pajama now runs on Java 1.4 and up, not just 1.5, thanks to Retroweaver, a class file rewriter.

Pajama site improved

The Pajama site is much prettier & friendlier now, thanks to Holly. She organized the image effects into several groups (with overlap), chose settings to show them off, and added “toy tips” suggesting what to try.

I would love to get comments and suggestions.


I am working on a new implementation, called Pajama, of the image synthesis embedded language Pan, this time generating Java applets. The advantages over Pan will be

  • Easy to run examples. Anyone with Java 1.5 or better can simply visit a web page to see and interact with the examples.
  • Examples run on all major platforms (wherever Java 1.5 runs), while Pan ran on Windows only.
  • The Pajama compiler runs on all platforms supporting GHC and the java compiler. In contrast, the Pan compiler ran only under Windows and only with Microsoft’s Visual C++ compiler. Worse yet, Pan used a GUI library (WTL) that Microsoft no longer supports. I haven’t been able to run the Pan compiler for quite a while now.

The disadvantage of Pajama over Pan is speed. Trig speed is quite a bit slower, and I suspect array accesses are also. Mustang (Java 1.6) improves trig performance considerably, though only with the server JVM, but almost everyone would be using the client JVM. I hope speed improves over time.

Quite a lot of Pajama is already working. I have first examples running here. More on the way.

April 13 edit: Pajama now runs on Java 1.4 and up, not just 1.5, thanks to Retroweaver, a class file rewriter.