<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="hacks.xsl"?>
<document title="Hack inventory">
  <p>
    Over the years, I have started or been involved in a number of
    software projects, using various source code control systems.
    By 2008, they were so many that I started having problems
    remembering which they were, and where the source code for them
    was.  That was when I started this page.
  </p>

  <p>
    Most of the projects are of no interest to anybody but me, but
    some may be useful for others as well.  There are no secrets in
    these projects, so feel free to take a look at them if you like,
    and have the access.  Some of the repositories mentioned on this
    page are not available to the general public.
  </p>

  <p>
    I keep this page on a public server, since that is the most
    convenient way for me to access the page.  I let Google index
    it, since that provides me with a way to find this page again if
    I forget it during the next few years...
  </p>

  <h1>Active public projects</h1>

  <p>
    These projects may be useful for others as well.
  </p>

  <project>
    <name>dwimmv</name>
    <private-hg>dwimmv</private-hg>
    <note>
      Do you have a filesystem with filenames in Swedish, but encoded
      in a mix of UTF-8, Latin-1 and cp-850?  The goal of this project
      is to auto-detect the coding of each filename, and convert them
      all to UTF-8.  The auto-detection will assume that the file
      names only contain ASCII and å, ä, ö, Å, Ä and Ö.  And possibly
      a few other characters, if that proves to be necessary in
      practice.
    </note>
  </project>

  <project>
    <name>LysKOM: server</name>
    <lgit>lyskom-server</lgit>
    <homepage>
      http://www.lysator.liu.se/lyskom/lyskom-server/
    </homepage>
    <lysbugzilla/>
  </project>

  <project>
    <name>LysKOM server: patches</name>
    <private-hg>lyskom-1616-generations-queue</private-hg>
    <note>
      Work on bug 1616, as a Mercurial Queue.
    </note>
  </project>

  <project>
    <name>LysKOM: elisp client</name>
    <lcvs>lyskom-elisp-client</lcvs>
    <homepage>
      http://www.lysator.liu.se/lyskom/klienter/emacslisp/
    </homepage>
    <lysbugzilla/>
  </project>

  <project>
    <name>LysKOM: kom++</name>
    <lcvs>kom++</lcvs>
    <homepage>
      http://www.lysator.liu.se/lyskom/klienter/tkomnilkom/
    </homepage>
    <lysbugzilla/>
  </project>

  <project>
    <name>SqueezeUtils</name>
    <lgit>squeezeutils</lgit>

    <note>
      Small Python scripts to control Squeezebox Server: pause/resume,
      forward, back, and zap current song.
    </note>
  </project>

  <project>
    <name>Nagios plugins</name>
    <lsvn>nagios-plugins</lsvn>

    <note>
      This project contains plugins to Nagios that are currently used
      by Lysator and/or Ryttargårdskyrkan.  They also contain
      framework for generating NRPE configuration files and installing
      the stuff needed by NRPE.
    </note>
  </project>

  <project>
    <name>check_ypmatch</name>
    <lgit>check_ypmatch</lgit>

    <note>
      A Nagios plugin that checks that a NIS server can look up a
      particular key in a particular map.  The time it takes is
      reported as performance data.
    </note>
  </project>

  <project>
    <name>lysrdiff</name>
    <lsvn>lysrdiff</lsvn>
    <note>
      The backup system that Lysator uses.
    </note>
  </project>

  <project>
    <name>pcl-expect</name>
    <lcvs>pcl-expect</lcvs>

    <note>
      A pure-python implementation of expect.
    </note>
  </project>

  <project>
    <name>pdiffdiff</name>
    <private-hg>pdiffdiff</private-hg>

    <note>
      Visualize the difference between two patch files.  This is a
      good diff program to use when running <tt>hg diff</tt>
      in <tt>.hg/patches</tt>, or when you are otherwise comparing
      diff files.
    </note>
  </project>

  <project>
    <name>lyspython</name>
    <lcvs>lyspython</lcvs>
    <note>
      Various Python hacks by various Lysator members.
    </note>
  </project>

  <project>
    <name>pkgadmin</name>
    <lcvs>pkgadmin</lcvs>
    <note>
      The /pkg management software.
    </note>
  </project>

  <project>
    <name>lysator-tracker</name>
    <lsvn>lysator-tracker</lsvn>
    <note>
      The scripts and installation instructions for
      the <a href="http://datorhandbok.lysator.liu.se/index.php/Rootmanual:Bittorrent"
	     >Lysator BitTorrent tracker</a>.
    </note>
  </project>

  <project>
    <name>cmod</name>
    <lyscvs>cmod</lyscvs>
    <note>
      A modules-replacement program.
    </note>
  </project>

  <project>
    <name>mscgen</name>
    <private-hg>mscgen</private-hg>

    <note>
      This fork of mscgen version 0.13 adds the png+html output mode,
      which produces a HTML client-side image map of the graph.
    </note>
  </project>

  <h1>Orphaned public projects</h1>

  <p>
    I no longer plan to work on these hacks, either because they are
    no longer useful, or because I have lost interest.  If somebody
    want to take over as maintainer of any of them, just contact me,
    and I will be happy to transfer the project to you.
  </p>

  <project>
    <name>strip_to_oisafe</name>
    <private-hg>strip_to_oisafe</private-hg>
    <note>
      A project to convert old Palm STRIP databases to the Android OI
      Safe import format.  I ended up solving this using a Perl module
      instead.  See <a
      href="http://cederlys.wordpress.com/2010/11/06/strip-to-oi-safe/">Migrating
      from Strip to OI Safe</a> for more details.
    </note>
  </project>

  <project>
    <name>accesslog</name>
    <lcvs>accesslog</lcvs>
    <note>
      This setgid program creates an AccessLog file with the proper
      group ownership at the proper place.  Or, it did, a long time
      ago.  The Lysator setup no longer allows this program to work.
    </note>
  </project>

  <project>
    <name>mailman-discard</name>
    <lcvs>mailman-discard</lcvs>
    <note>
      Mailman used to have a really crappy interface for discarding
      spam sent to lists.  This script made the process less
      painfull.  But the current versions of Mailman has improved a
      lot, so the need for this hack is vastly reduced.  It doesn't
      work for current versions of Mailman.
    </note>
  </project>

  <project>
    <name>netscape-remote</name>
    <lcvs>netscape-remote</lcvs>
  </project>

  <project>
    <name>evcnt</name>
    <note>
      An X-event recorder that is a helpful tool if you want to design
      your own qwerty replacement.
    </note>
  </project>

  <h1>Active private projects</h1>

  <p>
    These hacks are probably too specific to my needs to be
    generally useful.  Still, if you find something here that looks
    useful, drop me a note.  Maybe I can make a release, or at least
    assign a free software license on the source code, so that you
    can use it too.
  </p>

  <project>
    <name>Puppet configuration</name>
    <private-hg>cederpuppet</private-hg>

    <note>
      The <a href="http://reductivelabs.com/trac/puppet">puppet</a>
      configuration I use for my home network.  For now, this only
      configures the laptop, but I plan to migrate the server from
      cedercfg (see below) to this new and improved puppet
      configuration framework.
    </note>
  </project>

  <project>
    <name>Puppet configuration</name>
    <lsvn subdir="/puppet">cedercfg</lsvn>

    <note>
      The <a href="http://reductivelabs.com/trac/puppet">puppet</a>
      configuration I use for my home network.  This was my first
      attempt at using Puppet, and I made many mistakes.  This is
      being phased out, and the cederpuppet module (see above) will be
      used instead.
    </note>
  </project>

  <project>
    <name>Ekonchen</name>
    <private-hg>ekonchen</private-hg>

    <note>
      A web-based django-based system for keeping track of my personal
      finances.  The system can keep track on expected invoices (and
      other expected expenses and revenues), and generate a report on
      the expected future assets.  In the future, it will also be able
      to keep track of past transactions.
    </note>
  </project>

  <project>
    <name>Ekonchen: work in progress</name>
    <private-hg>ekonchen-patches</private-hg>

    <note>
      Clone this as <tt>.hg/patches</tt> inside a clone of ekonchen,
      to get access to the latest work in progress.
    </note>
  </project>

  <project>
    <name>photofokus</name>
    <lcvs>photofokus</lcvs>

    <note>
      My photo management application.
    </note>
  </project>

  <project>
    <name>kernelwatch</name>
    <lsvn>kernelwatch</lsvn>
    <runs>stentyst</runs>

    <note>
      Track <a href="http://www.kernel.org/">www.kernel.org</a> and
      report when new kernel versions are available.  The reports are
      sent to LysKOM.
    </note>
  </project>

  <project>
    <name>slidegtk</name>
    <private-hg>slidegtk</private-hg>

    <note>
      A Python hack that uses GTK to show a slideshow of images.  The
      photofokus package uses this program.
    </note>
  </project>

  <project>
    <name>rgpuppet</name>
    <private-hg>rgpuppet</private-hg>
    <runs>puppet.ryttargarden</runs>

    <note>
      The Puppet configuration used by Ryttargårdskyrkan.
    </note>
  </project>

  <h1>Sleeping public projects</h1>

  <project>
    <name>gpg-pathfinder</name>
    <lcvs>gpg-pathfinder</lcvs>

    <note>
      Find a path in the PGP web of
      trust.  <a href="http://www.lysator.liu.se/~jc/wotsap/search.html">Wotsap</a>
      is a lot faster than this hack, which can take hours to complete
      the search, but this hack has some benefits.  For instance, it
      verifies the signatures, so false signatures in the key server
      cannot pollute the result.
    </note>
  </project>

  <project>
    <name>gpgutils</name>
    <lcvs>gpgutils</lcvs>

    <note>
      FIXME: I don't remember what this was...
    </note>
  </project>

  <project>
    <name>xenofarm</name>
    <lcvs>xenofarm</lcvs>

    <note>
      Compiling software on a farm of heterogeneous machines.
    </note>
  </project>

  <project>
    <name>isoonline</name>
    <lcvs>isoonline</lcvs>

    <note>
      Take backup to ISO images, keeping an online database of the
      contents.  Only for use with file tree where files are added but
      never modified, such as the raw import from a digital camera.
    </note>
  </project>

  <h1>Dead private hacks</h1>

  <project>
    <name>snrgl</name>
    <lcvs>snrgl</lcvs>

    <note>
      A joke.  A C program that reads and sums numbers.
    </note>
  </project>

  <project>
    <name>ansaphonehandler</name>
    <lsvn>ansaphonehandler</lsvn>

    <note>
      My modem with voice functions that I used to use as a answering
      machine is beyond repairs, and so is this Ruby on Rails project
      to manage it.
    </note>
  </project>

  <project>
    <name>ciddb</name>
    <lsvn>ciddb</lsvn>

    <note>
      This Caller ID database is no longer useful, as my modem with
      CID functions is beyond repairs.
    </note>
  </project>

  <project>
    <name>likvid</name>
    <lsvn>likvid</lsvn>

    <note>
      This is a predecessor of ekonchen.
    </note>
  </project>

  <h1>Other hacks</h1>

  <a href="http://www.google.com/coop/trust/add?user=005097531828674610167&amp;sig=__aOonOHRXkqQn-BQP5wZP-LegDgE=">Google Subscribed Links</a>

</document>

