pipp-2.0.2 (current)6 Jan 2008
pipp-2.0.116 Dec 2007
pipp-2.0.0Aug 2004

Pipp History

I wrote Pipp to get me out of a bind. Back in 1998, HTML used lots of <font> tags. These were laborious to enter in the first place and a real pain if you wanted to change the look of your site. There did not seems to be any satisfactory solution to this. Most sites were presented inconsistently, which did not look good to me. I realised that something like the C pre-processor could help and so I developer the Perl Internet Pre-Processor - Pipp.

In hindsight, it has been a great success for me - I used it to build my site for six years. The original version stayed very close to the C pre-processor. The main commands this provides are #include, #define and #ifdef, which are just enough to do what I needed. This keeps the Pipp processor simple, but makes Pipp code more complicated. The arrangement was a success because the complex Pipp code could be isolated in a header file. This made the individual .pip files quick and easy to create, which is what enabled me to create so much content.

I took the original version through to a release - it even had documentation. It gets a few downloads but I haven't had much mail asking about its use. After the release I kept the basic design but added several new features: hierarchical navigation bar, graphical titles and syntax-highlighted source code. My own website has been heavily dependent on these features but I never considered them release quality. For example, the graphical titles relied on a horrendous chain of different tools, which was very fragile.

For a long time I have considered the possibility of Pipp 2. I've attempted it in Perl, Python and even C++, but it never got very far. I researched various similar programs but didn't really like any of them. Perhaps the problem was that I wanted it to be perfect, and that isn't realistic.

In 2004 I really picked this up again. By then, most of the original problems had other solutions. CSS solves almost all the display issues. There is a choice of templating languages, such as XSLT, which are more suited to HTML than the C pre-processor. And a number of syntax highlighting tools are available. Although there were some features, such as the navigation bar, that nothing else did as effectively.

Once I made the decision to use XSLT, instead of coding my own template language, I wrote a functional Pipp 2 quickly. It has less than 1000 lines of code, while it runs much faster than Pipp 1. It uses the 4Suite XML toolkit, the Python Imaging Library, and Pygments. This version worked great for producing my site. I did release the code, and it gets a few downloads, but having received no emails about it, I don't think anyone's really using it.

In late 2007 I took another look at Pipp. I finally implemented a long-planned feature - dependency tracking and partial rebuilds. I also created the built-in web server for development, and the Windows system tray application. With the installer and tray application, it's now very easy for someone to download Pipp and try it out. Still, no-one seems to be using it.

Future Plans

  • Increased speed: avoid rebuilding graphical titles, thumbnails, etc. every time
  • Multi threaded: more responsive HTTP server; take advantage of multi-core CPUs
  • Tool tray app: build option, start project option, better icon; visual indicator when processing; tooltip shows % complete; do full rebuild in a separate thread.
  • Features: delete orphaned files, file iterators
  • Automatic publishing, with FTP and SCP, and incremental uploads. Upload new files before changed files, to avoid temporarily broken links while the site is uploading.
© 1998 - 2012 Paul Johnston, distributed under the BSD License   Updated:10 Jun 2009