Communication protocols, database servers, software libraries, Adempiere
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
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
Free Software Service and Contributions
- pymilter a
python interface to the
. 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
- 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).
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
- 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
- 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
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
The protocol converter was connected to a Series/1 minicomputer,
running a simple email system I wrote to unify multiple methods
of text communication.