Team-One
I was the VP of Engineering at Intellinote, a team communication and collaboration platform for the web, desktop and mobile. Intellinote features: video conferencing, screen sharing, real-time messaging (chat), note taking, task management, file sharing, dozens of built-in integrations and an extensive REST API.
Intellinote was acquired by telcom-infrastructure giant BroadSoft in May of 2016 and is now known as BroadSoft Team-One.
BroadSoft was in turn acquired by Cisco in February of 2018. Team-One remains a key component of the BroadCloud platform.
Prior to Intellinote I worked in a number of digital product development roles at several large and small firms, including the Society for Human Resource Management and Encyclopædia Britannica.
See Rod's resume (PDF) for more detailed information but be warned that that document may not be up-to-date.
Recent Open Source Stuff
Some public repositories and other things I've worked on relatively recently:
dust-engine - a Dust.js template processor that can be run from the command-line, invoked from code, or registered with Express.js as a rendering engine. (Via DocumentAlchemy.)
SwaggerDSL - a CoffeeScript-based domain-specific language for generating JSON documents for Swagger. At Team-One (formerly Intellinote) we use SwaggerDSL to generate the documentation for our REST API. (Via Intellinote/Team-One.)
sql-client - a dirt-simple SQL-client abstraction for Node.js supporting PostgreSQL, MySQL and SQLite. (Via Intellinote/Team-One.)
Common Dust.js Helpers - a small library of "standard" helper functions for the Dust.js web templating framework. (Personal project.)
stew - JavaScript library that implements the complete CSS Selector syntax, and extends it to add support for regular expressions in tag names, ids, class names, attribute names and attribute values. (Personal project.)
gvpr-lib - a small library of common functions for gvpr, Graphviz's awk-like language for transforming and processing graphs. It includes gvpr-mode, a simple emacs lisp major mode for working with gvpr. gvpr-mode is available on the Marmalade and MELPA package repositories. In modern versions of emacs you can run
M-x package-install <RET> gvrp-mode <RET>`
to install it. (Personal project.)pandox is an implementation of the pandoc filter API in JavaScript/CoffeeScript. (Personal project.)
FATpick - the guitar tab player that listens (Personal project.)
paper-forms - a set of printable forms, templates and worksheets. (Personal project.)
inote-util - a collection of generic utility functions and classes for JavaScript/CoffeeScript. (Via Intellinote/Team-One.)
termstyle - a (server-side) JavaScript library that provides utility functions supporting styled console (terminal) output. (Personal project.)
Apache Software Foundation
I used to be quite active in the Java corners of the Apache Software Foundation. I had a pretty big role the creation of Jakarta-Commons (which eventually morphed into Apache-Commons) and a lesser role in the founding of the Apache DB project. A fair bit of my code can still be found in the Apache Commons, Apache-Tomcat, and (through a number of migrations of HttpClient) in HttpComponents, among other places.
The Graphviz Cookbook
To be candid progress has slowed quite a bit since my day job took off, but I had been working on a how-to book about Graphviz, a powerful, open-source, graph visualization and processing framework.
The Graphviz Cookbook, like a regular cookbook, is meant to be a practical guide that shows you how to create something tangible and, hopefully, teaches you how to improvise your own creations using similar techniques. You can find out more information and download sample chapters here.
DocumentAlchemy
I've been experimenting with DocumentAlchemy, a document-processing-as-a-service platform. DocumentAlchemy provides REST APIs for parsing, writing, processing and transforming documents in many formats, including Microsoft Word, Excel and PowerPoint, OpenOffice Writer, Calc and Impress, PDF, HTML, Markdown and other text formats, and PNG, JPEG, GIF and WebP image formats.
A large number of online demonstrations are available and with a free registration you can obtain an API key you can use with the interactive API documentation or within your own programs.
The Axion RDMS
Once upon a time I created a fully-functional relational database from scratch (with more than a bit of help from collaborators). I was a major developer behind Axion, a small, fast, open source relational database system written in and for Java. Axion has been dormant for quite a while, but it was and still is a fairly robust and complete system. Axion had and as far as I know still has some features no other RDBMS provides. Axion...
- is embedded (it runs in-process within the same JVM as the client code),
- supports both persistent (on-disk) and transient (in-memory) modes,
- supports both ANSI SQL and several extensions from Oracle's SQL dialect (circa 10g or whatever was released at the time),
- is fully transactional,
- is fully ACID (providing Atomicity, Consistency and Isolation and Durability),
- can be easily extended with custom "pluggable" table, index, column (field) and function types.
- can be found in commercial products containing millions of rows and gigabytes of data, processing thousands of transactions per second (while not a toy database by any standards, this certainly isn't "big data" volumes, but bear in mind that this was 10-15 years ago on what even then were low-end consumer models).
- was nominated as a Program to Read on the venerable C2 Wiki (a.k.a. "Ward's Wiki" or, notably, "the original wiki").
Building this wasn't as impractical as it might sound. The first version of Axion was created by a tiny team in less than 5 months in support of a top-selling, award-winning, shrink-wrapped retail CD/DVD-ROM product, and was successfully used in support of that product for nearly a decade.