perpubplat now on github

Paul R. Brown @ 2008-08-28T06:22:18Z

With GHC switching from darcs to git, I decided to move perpubplat over to git (and specifically to github) as well. (For the reasons that GHC decided to move, see this wiki page.) The new landing page for the perpubplat repository is here.

At least if you've already got git, GHC 6.8.3, and cabal-install, building perpubplat is about as simple as it can get:

$ git clone git://github.com/prb/perpubplat.git
$ cd perpubplat
$ cabal install

As far as near-future feature development, I'll be adding github activity feeds to "stream of consciousness" aggregation and improving the configuration and control of aggregation in general.

(comment bubbles) 0 comments

Getting bash Completion Magic on OS X

Paul R. Brown @ 2008-06-25T07:18:06Z

One of the many nifty features of bash is that it provides context-sensitive completion, but for some reason this capability isn't part of the bash that ships with Mac OS X, at least as of 10.5.3, which is what I'm presently using.

To rectify the oversight, first install the bash_completion port via MacPorts:

$ sudo port install bash-completion

And then modify your ~/.profile as directed, e.g., by adding:

if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

To load your own local collection of completion hooks, create the directory ~/.bash_completion.d and then put the following in ~/.bash_completion (essentially cut/pasted out of /opt/local/etc/bash_completion):

if [ -d $USER_BASH_COMPLETION_DIR -a -r $USER_BASH_COMPLETION_DIR -a \
     -x $USER_BASH_COMPLETION_DIR ]; then
        for i in $USER_BASH_COMPLETION_DIR/*; do
                [[ ${i##*/} != @(*~|*.bak|*.swp|\#*\#|*.dpkg*|.rpm*) ]] &&
                        [ \( -f $i -o -h $i \) -a -r $i ] && . $i
        done
fi
unset i

Next, above the other block added to ~/.profile, add:

export USER_BASH_COMPLETION_DIR=~/.bash_completion.d

As for the contents of .bash_completion.d, I put the completion files supplied with darcs and cabal-install there, so in addition to the usual niceties like completion of paths on remote servers (e.g., for scp), I also get convenient completion behavior at the commandline, e.g., with cabal:

$ cabal install hsc[TAB]
hsc2hs hsc3 hsclock hscolour hscurses
(comment bubbles) 0 comments

Darcs Repository for Perpubplat

Paul R. Brown @ 2008-01-04T08:45:59Z

I succumbed to some mild peer pressure, posted a Darcs repository, cleaned-up the Cabal files for perpubplat, and fixed a few minor bugs. If you have darcs installed, you can pull down a copy of the source code — a grand total of less than 1500 lines according to SLOCCount — with:

darcs get http://datapr0n.com/repos/perpubplat

You can also browse the repository at the same URL, but Apache will serve those files to you as text/x-haskell, i.e., your browser probably won't display them as plain text in the browser. The Darcs-maintained revision history is here.

The README file contains instructions on building, but if you've already got GHC 6.8.2 and FastCGI libraries installed, it's as easy as:

$ cd perpubplat
$ cd perpubplat
$ chmod +x Setup.lhs
$ ./Setup.lhs configure && ./Setup.lhs build && sudo ./Setup.lhs install
$ cd ../perpubplat_servlet
$ ./Setup.lhs configure && ./Setup.lhs build

The FastCGI handler is dist/build/perpubplat.fcgi/perpubplat.fcgi.

(comment bubbles) 0 comments

Google Code Hosting: Hmm. Hmmmm. Well...

Paul Brown @ 2006-07-28T06:36:00Z

As a consumer/producer of open source, it was interesting to see Google Code hosting launch today. It also explains why people from Google were trolling with questions about how Google could help open source... (I should have asked for a search appliance for the Haus now that I'm thinking about it.) It's pleasantly minimal in that it fits cleanly into the spectrum of available infrastructure below the level of a SourceForge, RubyForge, or Java.net: no mailing lists, no forums, no releases, and no project entry criteria — just fill-in a form to get 100Mb of subversion space and an ultralight bugtracker.

From a producer perspective, no strings attached, free subversion hosting is a great offering, although I'd be more likely to use something private and something cooler than subversion — like darcs or Bazaar or another system that supports both push and pull branching semantics — until and even after a project is ready for public consumption. (Subversion+svk would count.) As a consumer, my question is how I'm going to filter out the crap. Nothing is worse than seeing a promising-sounding project and then finding out that there's nothing of value there. On SourceForge, there's plenty of deadwood, but I can look for releases, at activity levels on mailing lists, or at project statistics. On Java.net, I can look at releases, mailing lists, or at rankings. A good start on a crap filter would be a simple voting model for projects, e.g., allow a user to leave a star on a project that they found actually useful. (Of course, something like the Google Finance plotting widget applied to subversion activity and branches/tags wouldn't hurt, either.)

My answer to the “How could Google help open source?” at the time was straightforward: contribute effort and even sponsorship to the projects that Google developers find useful. This is what everyone does (or at least what everyone is supposed to do). Barriers to entry have never been an issue for open source projects, but drawing together a community and channeling combined energy into defining and creating good software have always been and remains a challenge.

(comment bubbles) 4 comments