I really enjoyed the following projects. These all took place when I lived in Germany for 10 years, mostly working as a team of one, cutting my teeth on C and later C++. It was the kind of hard work that was also energizing.
- An EDIFACT / VDA converter. EDIFACT is an international business data exchange format; VDA is the German variation for the automotive industry. To support the bi-directional conversion of dozens of record formats with hundreds of fields including contextual interpretation, I wrote a generic conversion engine that was steered by source / target data description and transformation scripts. Just like translating from German to English, sometimes the data I needed upfront was way at the end of the stream. It all had to be verified before the phone (!) was hung up.
- A multi-platform framework that provided windowing support to ASCII terminals and system routine access to COBOL application programmers. Their ERP applications were written on PCs and ran without change on various flavours of UNIX mini-computers with any brand of terminal. I had to rewrite a number of system libraries so that we had standard behaviour between systems.
- DTME was a pre-MS-Windows visual text editor/IDE. There wasn’t an easy to use editor that ran on both PC and UNIX systems at the time. Of course it used the above framework and in the spirit of C the editor was used to write the editor!
- A report generator based on an interpreted version of C (using lex, yacc) with printing and data transformation extensions. This became a “page management” framework with goodies like auto-managed page-level subtotals that were otherwise impossible from COBOL. This abstraction of the report generation mechanics vastly simplified the application code and eliminated a huge support and maintenance burden. It turned out that the COBOL programmers liked the reporting flexibility, but they didn’t like C.
- InfiScript was a visual programming environment built on top of Visio. This allowed service designers to reliably drag-and-drop telecom service applications together without concerning themselves with the implementation language or underlying hardware details. The diagram was then compiled into a compact, extensible, proprietary intermediate code. By defining this interface, I enabled another team to independently implement the virtual machine. I made heavy use of and extended the STL. I devised a method to eliminate memory errors by design. I greatly simplified usage of the DCOM interface by wrapping the tedious details in a self-configuring class library. See page 22-24 of this product management presentation.
The InfiScript development was the first time I led a team. Just to keep things fun, I was the only one who knew anything about compiler writing and the concept of virtual machines.
As much fun as this all was, it’s also fascinating to see how far we’ve come since then. And that’s the way it should be.