Sysadmin Hell

Legacy Labs 2026

Day 1: Swish-e

For my LegacyLabs pick, I want to revive an abandoned piece of software: Swish-e.

I used Swish-e on a customer project many years ago, but only at a surface level. It did some basic site-search work, and I remember admiring the idea of it, but I never really had the chance to understand it properly.

That makes it a good candidate for this project. This is not random retro software for me, it is unfinished business.

The motivation is simple: I want adequate website search, and possibly document search, without needing a large modern search stack sitting there with 32GB of RAM allocated to it. Swish-e comes from a time when search had to be smaller, simpler, and more directly operated by the sysadmin.

So let’s begin.

The first decision: this will not run on an entirely retro platform.

I briefly considered running an old Linux distribution, but running a 20-year-old operating system on the public Internet, with decades of unpatched security holes, gives me hives. I also do not have physical server hardware or an adequate home connection for hosting it myself.

Instead, I will use a small paid VPS: one CPU, 512MB RAM, and Debian 12 Bookworm.

That feels like the right compromise. The operating system will be modern and patched, but the application layer will still be deliberately small and old-school. Debian also makes sense because I will need build tools and compatibility with older C software. A minimal distribution like Alpine is attractive in general, but for this particular task it creates the wrong kind of difficulty.

Day 2: Actual sysadmin

I found the archived github repo: https://github.com/swish-e/swish-e. Well, actually before that, I found there's a Debian package for swish-e, but I decided not to use it but rather compile the latest source. I tried to build it on the freshly installed Debian 12 bookworm and immediately ran into build issues. Name clash, don't mind it, nothing that sed can't fix.

I managed to index couple of docs and query them back, confirming that it's actually working. Next step I'll need to harness it somehow to use programmatically. There are standard libs for C and Perl, I have no intention using either so I'll have to think about that.

Day 3: Docs

Reading the Swish-e documentation. It may as well be French. I am no longer used to documentation like that and I don't usually shy away from man pages. The capabilities that I want to achieve are as follows:

  • My documents will live in database, not flat files
  • I want to have them converted and consumed by the search engine.
  • I want to programmatically query it and return relevant information back to scripts.
  • I want to be able to index a document at the time incrementally
  • I want to be able to index everything in bulk
  • I want to be able to update / delete index if document changed or removed.

Finally, once I have all that, I'd like to proliferate documents to something uncomfortable (like at least 100,000) and see if it's still stands on 1CPU / 512RAM and whether the results I get from it are adequate.