Where?

Download version 3.1 here

Version 3.0 is still available, because that is the version I entered the O'Reilly Mac OS X Innovator's Contest.

Changes since 3.0


What?

PWP is a command line cgi program that manages web bookmarks. Because it runs on a web server it can be accessed from any machine using any browser. Bookmarks can be stored in different categories and can even be split up among different web pages. Output is controlled to some extent by the use of a simple set of tags in an HTML template file. This program is not user friendly as far as installation and setup is concerned. If you are not familiar with the command line and with basic Apache configuration, I strongly recommend that you not attempt to use it.


Why?

At one point I was using five different web browsers on two different machines with two different operating systems. Keeping all of their bookmarks in sync was too much effort. For a couple of years I had been using a simple web page (stored in the web space given to me by my ISP), but that was not very dynamic and didn't do some of the things I wanted it to.

Since I had a web server on my home machine (Apple's Web Sharing extension) and since my computer was connected to the web full time via cable modem I started writing a set of AppleScripts to manage my bookmarks for me.

That worked quite well for a year or two, until I started using Mac OS X Public Beta full time. At that point, since I had Apache and gcc I decided to rewrite the entire thing in C++ (the language I knew best at the time). I already had an object database called Parody from Al Steven's C++ Database Development so I figured I would just use that. Six months to a year later I had rebuilt all of the features I had had under the previous OS and even added a few new ones. At this point the app suited my needs so my motivation died and I only worked on it off and on for the next year or two. I had planned on releasing the source code, but the odd license of the Parody engine was (and still is) a stumbling block.

Finally, I decided to do another complete rewrite, this time in Objective-C using Apple's Cocoa frameworks. This iteration (Portal3) uses Cocoa's Keyed Archiving as data storage rather than a database but is otherwise almost feature identical to the C++ version. Because I'm no longer using Parody, the source code (distributed under the GPL) is in the tar file.