Daniel LaFavers

Software Engineer

(248) 231-4253

Some of the interesting things I have built

PHP Web Services

At Tweddle, I wrote a PHP-based service container framework that was self-documenting, rights controlled, and allowed code deploys from multiple repositories. Much of the data is stored as blobs with JSON metadata controlled by data model definitions that define the valid JSON structure and searchable fields. The data model definition drives a flexible browser form to create and update the item metadata.

C++ Testing framework

When we started Agile development at Cengage, I reviewed some C++ testing frameworks and then built my own. Provides setup/teardown with constructor/destructor fixture template that works with a class or library. Dynamic tests can be added at runtime.

Automated C++ build

Also as part of our agile transformation, I created a build tool that reads include statements in C++ code to track dependencies between code and libraries. Runs tests as part of the build to retest any changes. Incorporates gcov to generate code coverage reports. Includes a package builder and tracks dependencies for our in-house scripting language.

XML search engine

By creating tokens out of elements and tracking both character ranges and term positions, the search engine is able to perform searches both on text and its relationship to the XML structure. Also performs basic Boolean and text proximity logic. Layered so that leaves of the search tree can be modularized to read from different data formats on disk.

Embedded Script Language

Parses a simple procedural language into byte codes to be processed with a minimal virtual machine. The script language can be used to add scripting to any application. Provides a simple mechanism to extend the language with functions written in C, which can be part of the system or loaded dynamically. Minimal object orientation. Also includes a DOM structure designed to handle very large XML files, with native operators for traversing the tree.

Real-time logging and system monitoring

The logging server accepts connections from writers and readers. Readers express interest in message types, which flows back into the writers to enable/disable what is reported. Log files are written by a special reader. Other readers provide dashboard monitoring of whats happening in the system at any moment.

Rule system

Inspired by the Prolog language, the rule system associates template rules with scripts. When a client indicates a system event, using a three-part message, rules that match that event trigger scripts, which can generate other events. This allows building a sort of expert system that monitors and reacts to system activity.