- iobroker: message passing middleware
- iob-cmd: iobroker debugging tool
- ddl: data description language
- cfgparse: robust configuration file parsing library
- cds: simple data structures for C
- clog: basic logging framework for C
- applog: logging library for UNIX systems
- cutil: tiny library of utility code
- tcl-dox: filter for using TCL with Doxygen
- emacs stuff: misc emacs lisp
- pam timeperiod: playing around with PAM
- mls patch: bug fixes for MLS, the mailing list statistics tool
iobroker is a simple mechanism for passing arbitrary messages between processes. A message consists of a blob of data, a class-id string, and a ddl string. The class-id string identifies the message type and is free-form. The ddl string describes the format of the data in the blob. The ddl can be highly descriptive or as simple as “u1”, which would mean 25 unsigned integers each 1 byte in length.
iobroker uses a post/subscribe model. Clients may subscribe using regular expressions that match against the class-ids provided in messages. Any message that passes through iobroker that matches a client subscription is sent to the client. Communication is handled via UNIX and/or TCP sockets.
iobroker is licensed with the GPL v2 license.
iob-cmd is a tool for posting and decoding broker messages. Decoding is automatic using the DDL supplied in the messages.
iob-cmd will be licensed using GPL v2.
DDL, the data description language, is a compact and flexible language for describing binary format messages. It was developed to enhance iobroker messages providing a means to identify message content without prior knowledge. It also acts as a simple sanity check (the size described by DDL can easily be checked against the size of the iobroker message). The library is standalone and can be used with anything.
There are four basic data types, integers, unsigned integers, floating point values, and characters. You can define arrays and even variable length arrays. You can define structures and arrays of structures. All elements can be named (useful for tools that use DDL to
DDL is licensed with a BSD style license.
cfgparse is a convenient and powerful library for parsing configuration files. It supports name spaces and automatic detection of types. For example if 1.0 appears in the file then it is parsed as a floating point value and stored that way. The application can query the type.
cfgparse is licensed with a BSD style license.
cds is a small library of simple data structures to make C more fun to work with. C gets a bad rap mostly because the standard library is very poor (though that minimalism is also a huge reason why C is so successful). This library was inspired by the data structures available in glib but I needed something with a more liberal license. In addition there was a lot more in glib than I wanted. Though this was inspired by glib it shares no code.
cds is licensed with a BSD style license.
clog a very small framework for simple logging for C. It features a few logging levels and a few other features. It has limited features for portability. I’ve used it on micro-controllers and full blown machines. I’ve used it with Linux and with Windows. If you use this you’ll probably need to build a little bit on top of it (see applog if you are using a UNIX platform).
clog is licensed with a BSD style license.
Applog is a simple logging library designed, above all else, to be very easy to use. This library is intended for use on UNIX systems that have a syslog facility. Output can be directed to stdout, syslog, or both. There are just a few logging levels as, again, it is designed to be extremely simple to use (to promote good logging).
applog is licesned with a BSD style license.
cutil is a tiny library of utility code that didn’t fit well in other libraries.
cutil is licesned with a BSD style license.
This is a filter that you can use with Doxygen for documenting TCL source code. My employer, Impact Technologies, was kind enough to allow me to release this to the open source community. You can download it here. There is an example Doxygen configuration file in the source package. I am no longer maintaining tcl-dox. Jochen Keil provided a bunch of patches that may be useful.
A bunch of emacs code I’ve written and collected over the years. Probably the most useful code in here is mark.el. This code gives you a listing of the marks in the mark ring in a method similar to “occur”. It allows you to easily jump between your marks in a visual manner.
pam_timeperiod is a Linux PAM module that allows you to restrict the frequency of logins. I wrote it because I was extremely bored and was slightly annoyed at how often some people were checking their email on my server. I haven’t really used this module but it was fun to learn how to write a PAM module.