My Programming Page

linux-crypt 0.5.2: C, ncurses, getopt_long, flex, bison, va_args, Makefile, glib

linux-crypt was born from my love of cryptograms but my hatred of counting. It helps you solve cryptograms by counting letter frequency, beginning letter freq and final letter freq. It has letter and word assignments, save/load feature and alpha parsing lookups. You can mark unknown letters as being vowels and consonants and mark assignments you make as being probable and unlikely.

Included with linux-crypt is a file on how to solve cryptograms and letter frequency charts.

linux-crypt was my learning project for ncurses. It's a good example of many ncurses features including drawing on the screen, multiple windows and panels. The program is a good reference for using getopt_long, the GNU interface for parsing POSIX style command line arguments, and va_args, the way you write functions in C that take an arbitrary number of arguments. The Makefile shows how you can use a timestamp to write backup files. Right now, I'm switching the hand written lexer/parser to flex. It's a slow process because I'm in the middle of learning flex. I'm also in the process of converting a lot of stuff to using C's glib library.

linux-crypt: tgz

rip 0.9.2: perl, cddb interface, mp3-info interface, cool argument handling

rip will rip an audio CD and convert the tracks to mp3. It uses cdparanoia for ripping and lame for encoding. Why did I write this? Rippers sometimes have pretty exotic requirements, and the command line interfaces are extensive and confusing. I wanted to write something feature filled but that didn't require you to read any documentation in order to use well.

Rip will query a cddb database and get the CD's title, the artist and the individual track names. It names the mp3 file according to the track name and artist. It also sets the MP3 ID tags to the proper settings. It doesn't set the "genre" field and info fields, since you can't get these fields from the CDDB database. But it sets everything else.

The interface is easy. To rip track 4, just type ./rip 4. To rip tracks 4, 6 and 8, type ./rip 4,6,8. To rip tracks 4, 5, 6, 8, 10, 11 and 12, type ./rip 4-6, 8, 10-12. It's very forgiving about spaces around the comma and dash. It even comes with a --whole-cd switch to rip the whole cd. Requires the CDDB_get and MP3-Info perl modules.

rip: tgz

bed 0.8.5: C, ncurses

This is a binary editor, in the same style as the old `disk editors' and `bit editors' that were so popular in the 1980's. I wrote this because the user interface of all the modern binary editors I've seen SUCK SUCK SUCK SUCK SUCK. Why is the user interface of this program any better? Simple. I use the vi/vim interface. If you use vim, you can use this editor without reading the documentation. If you don't know vi/vim, well, then you suck. j/k.

bed: tgz

Mail comments, broken links and suggestions to Peter