Stuart D. Gathman

Last updated: Nov 4, 2020

Contact Details




Make xmpp clickable
Business Management Systems
Phone 1-571-243-6961
Company Website
Resume: PDF TXT
Profile: of my Ideal Company
Github: sdgathman
Fedora: Updates Articles Packages

Brief Biography

Communication protocols, database servers, software libraries, Adempiere support.

I worked as a software developer for Business Management Systems in Fairfax, VA for 35 years, where I designed and coded a telex protocol converter and email system for Jordan, a custom packet communication protocol and message system for the Air Force, two generations of a database server, and accounting algorithms. I am the maintainer (and authored most) of pymilter, a python wrapper for the sendmail milter API, and a number of addon modules supporting email protocols like SPF and DKIM, as well as greylisting.

Beginning in June 2013, I am supporting Adempiere open source ERP for Spanish House in Miami FL. I have decades of EDI experience with ANSI, EDIFACT and other minor formats, and that is a major area needing improvement in Adempiere. There are major assumption errors in how ISA and GS identifiers are created, for instance. I started cold, but now feel pretty confident about Adempiere internals, and have been fixing and enhancing.

I packaged OpenAS2 for Fedora, and a bundled version for CentOS, and began moving EDI Partners to AS2. I set up a private cloud with two locations, nightly remote backups, and manual switchover to the secondary location when the Miami office is closed due to hurricanes. There is also an internal Jabber server, issue tracker, wiki, and blog.

On a less pressing note, I believe the cursor based API I developed at BMS (inspired by Borland Paradox) is a better fit than the Persistent Object system currently used in most of the Adempiere code. The two can coexist.

My current side interest is decentralized protocols. I am the Fedora packager for Cjdns global IPv6 mesh VPN, and integrate it with existing IPv6 software to add authentication and encryption for both business and personal uses. Applications include relaying email via SMTP over Cjdns, SIP calls over Cjdns, messages between remote software components, nagios passive updates, etc. I also run a local mixed media mesh network using BATMAN-ADV protocol.

Free Software Service and Contributions

Free Software

  • pymilter a python interface to the sendmail milter API . The pymilter project includes
    • pydspam - interface to libdspam, a Bayesian content filter
    • pysrs - implementation of SRS with sendmail and Exim integration.
    • pygossip - distributed email reputation system
    • pyspf - widely regarded as the reference implementation for RFC 7208
    • milter - a highly effective spam and authentication filter
  • SPF Test Suite a validation suite for RFC 7208.
  • Java TimeZone with historical and leapsecond support.
  • Java Diff the GNU diff-1.15 algorithm with a nice O-O wrapper for Java.
  • Java Posix a JNI wrapper for selected posix calls useful for interfacing Java with other programs in a posix environment.
  • Java Elliptic Curves a Java implementation of Elliptic Curve cryptography.
  • TUIAWT an implementation of Java 1.1 AWTPeer interface that renders AWT controls on a character cell terminal (like xterm).

Non-free projects

Many of these could be free (e.g. BTAS), but need work removing dependencies on other BMS software.
  • BtasSQL - Wrap JDBC with the BTAS Java API, greatly simplifying common business programming - especially when updating. Emulating BTAS semantics on SQL requires ordered indexes, at least 1 unique index, and updateable cursors.
  • EDXWeb - a Java servlet plus Ajax that gives EDX applications a web user interface.
  • bmsi-edi - a unified Java API for any record oriented EDI standard. Modules currently include ANSI X12 through version 5010, CATAIR (used by US Customs and Border Patrol), XDoc, and XDec. Handling of separators, character sets, and syntax is automatic. Applications deal only with fields and data types common to the BTAS API.
  • EDX/Java a Java interface to the EDX virtual machine.
  • Java SNA/RJE a Java interface to a (buggy) SNA/RJE protocol converter.
  • Java X-Open JNI interface.
  • SQL engine for BTAS.
  • SOCOMM packet protocol stack and message center for US Airforce
  • ArabTerm bilingual smart terminal allowed the use of English character screen word processors (Uniplex) that supported onscreen attributes to edit and print mixed Arabic and English text. Lines are configured as right to left or left to right via manual or auto selection so that editing (insert/delete/left/right) worked as expect without the program knowing anything about Arabic. The Arabic text used auto shape selection.
  • X-Open (C-Isam) compatibility layer for BTAS.
  • C/Unix rewrite of EDX linker.
  • EDX macro source preprocessor and wrapper for EDX compiler.
  • Port of C standard library (Seabird) and Btas to native EDX on Intel (Hummingbird EDX).
  • Enhanced EDX virtual machine for *nix including visual debugger.
  • Early 88k port of gcc (internal use only).
  • Dynamic overlay architecture for EDX
  • BTAS - an indexed file system, where files and directories have variable length associative records. Indexes maintain the minimum unique key with leading duplicate compression. This will be free when I get a chance to finish packaging it for the world.
  • Embedded 6502 based ASCII/Telex protocol converter. This simulated 1 300 bps and 3 50 bps UARTs in software using PIO and a 3x300bps timer interrupt. When a character was complete, it would simulate a "soft" interrupt such as a hardware UART might provide. The hardware was based on a miniature Kim-1. The protocol converter was connected to a Series/1 minicomputer, running a simple email system I wrote to unify multiple methods of text communication.