PYBAG implements a portable bag and is intended for fast synchronization and backup. It lets you use a portable digital storage device to carry your electronic documents similar to the way you can use a bag to carry paper documents. You can synchronize the bag with your original files easily. If a synchronization conflict occurs, it will be reported. You can specify rules for automatic conflict resolution. With PYBAG, you can backup files and synchronize any changes made to the original files with the bag. The synchronization process will only copy changed files. The program is cross-platform and independent from the OS and filesystem. You may easily synchronize files between Windows and Linux, for example. Symbolic links are supported on all systems (if the OS or filesystem does not support symlinks, then they are emulated). This program has a GUI and a command line interface.
Boscli is a framework to create interactive command line interfaces. It is meant to help developers write interactive shells for domain specific tasks. It provides an easy way to wrap and join together command line apps and utilities and create specific shells with security levels and modes, history, auto-completion, and so on. Using this framework any developer can build an interactive command line interface for configuration or monitor an appliance in a few minutes. Boscli can be used as a "glue code" for an appliance's interface or to create a "homogeneous" administration interface for different systems and applications.
mi is a Linux command line utility that can identify potential deadlocks in multi-threaded applications. It can also collect statistics such as number of successful and failed mutex operations, time spent acquiring mutex locks, etc. It can also show call stacks for all mutex operations. It is able to identify the following conditions: the order of locking two mutexes in one thread is opposite to the order of locking the same mutexes in another thread; unlocking a mutex that was not locked earlier; a mutex is left locked after an application has finished; the order of unlocking mutexes does not correspond to the reverse order of locking these mutexes; and unlocking a mutex that was locked earlier in another thread.