<Photograph of pebbles near a fountain>


Here you'll find some free cross-platform computer programs.

In the fun department, there are a couple of online games (some thinking required) and an application that determines the best way to distribute gifts in a gift exchange.

In the useful department, there's an application that music therapists and other musicians can use to organize songs by category; there's an application for archiving revisions of a file; there's an online tool for formatting text; and there's a tool for technical writers that hides specified conditional content in DOCX and ODT files.

Finally, there are a number of useful classes for Java programmers.

All software is offered as is, with no liability assumed by Pebblesoft or the author of the application.

Online Applications

Pebbles is a puzzle‑like game with three levels of difficulty.

Here's the link to Pebbles:


WordRecall is a matching game that uses words. You can be creative in thinking of associations to help you remember which words are where.

Here's the link to WordRecall:


PebbleWrap is a very useful tool for wrapping (or unwrapping and then rewrapping) lines of text, attractively indenting paragraphs and lists, and making great-looking tables from delimited text.

Here's the link to PebbleWrap:


Downloadable Applications

These are free Java-based applications that have been tested on Linux, Mac OS X 10.7, and Windows 7 (and they probably run fine on other platforms as well). They require only that Java be installed on your system. (The minimum required Java version is 1.7, also known as "Java 7".)

To use any of these free applications, just unpack the appropriate zip file to a convenient location. An "application bundle" is provided for Mac OS X users. On Linux and Windows systems with Java installed, you can run the application by double-clicking the JAR file (for example, cage.jar), or you can create a shortcut to that file.

Computer-Aided Gift Exchange calculates which distribution of gifts, out of all the possible arrangements, maximizes the joy of the group overall without requiring too great a sacrifice from any individual participant. The application takes as input each participant's rankings for the gifts and then determines how best to distribute the gifts among the participants.

To download Computer-Aided Gift Exchange (CAGE), click the appropriate link:

CAGE for Linux

CAGE for Mac OS X

CAGE for Windows

Song Indexer is a desktop application that enables you to manage one or more collections of songs organized in categories. Each song can be in more than one category. For a given collection ("song index"), the application generates a document on demand that lists all the songs both alphabetically and by category.

Song Indexer is particularly suitable for music therapists, individual musicians, and groups who perform or present different types of songs depending on the client, audience, or occasion.

To download Song Indexer, click the appropriate link:

Song Indexer for Linux and Windows

Song Indexer for Mac OS X

SimpleRevisionArchiver is a desktop application that enables you to archive the original version and subsequent revisions of a file. You can also view a file's history, which includes a check-in comment and timestamp for each revision.

To download SimpleRevisionArchiver, click the appropriate link:

SimpleRevisionArchiver for Linux and Windows

SimpleRevisionArchiver for Mac OS X

HideConditionalContent is a desktop application that removes specified conditional content from .docx and .odt files so that you can make different print or PDF versions of a document for different audiences.

To download HideConditionalContent, click the appropriate link:

HideConditionalContent for Linux and Windows

HideConditionalContent for Mac OS X

Java Libraries

(for Java programmers)

The following classes were built for Java version 9 or later.

SimulatedAnnealing and related classes (in the bfitch.optimization package) provide a high-performing general-purpose implementation of simulated annealing for optimizing the numbers in a list or the order of items in a list.

Json (in the bfitch package) provides methods for parsing, generating, and formatting JSON text strings.

XsvReader, XsvWriter, and XsvConfiguration in the bfitch.xsv package provide complete facilities for reading and writing data in CSV and related formats.

IniSettings (in the bfitch.ini package) encapsulates the data stored in an INI file.

CalendarDay (in the bfitch package) represents a calendar day as a plain date with no associated time or time-zone information.

ProgramDir (in the bfitch package) is an abstract class designed to be inherited by a static member class such as ThisProgramDir nested within the main class of an application. The class provides a single method, getPath(), that returns the full path to the directory containing the running program (even if the program is running from a JAR file).

Zipper (in the package) provides static methods for zipping a file, zipping a directory, zipping the contents of a directory, and extracting zipped directories and files.

You can download the bfitch, bfitch.xsv, bfitch.ini, and packages within a single zip file:

Java Packages

The zip file contains source files as well as generated documentation and class files.

Enjoy the software!

Comments can be sent to