Software Design
This page summarizes software and tooling I have designed or built over time. It is not intended as a portfolio or a catalog of technologies. Instead, it highlights recurring problem types and the kinds of solutions I tend to build when existing tools are insufficient.
Where links exist, they are provided for reference.
Patterns I return to
Across environments and eras, the work here tends to cluster around a few recurring needs:
- Make structured data easier to describe, validate, or transform
- Reduce manual steps in repeatable operational workflows
- Expose system state so failures are visible early
- Provide small, focused utilities that do one job well
- Build "glue" systems that bridge gaps between platforms
Data description and schema
Projects in this category focus on making datasets and text formats describable in a way that supports validation, transformation, and long-term clarity.
- Concise Logically Organized Data: A usage-agnostic method to describe a dataset.
- Text File Schema: A method to accurately describe text file data.
APIs and data utilities
These projects exist to provide narrowly scoped data services, typically focused on simplifying consumption, reducing processing cost, or providing consistent formatting.
- Toolbox Resources: A collection of API-oriented resources used for testing, training, and validating integration software.
- Weather API: A web API that retrieves and formats current weather observations from the National Weather Service.
Visualization and comprehension tools
Some tools exist primarily to make complex structures easier to understand.
- Railroad Diagram Generator: Generates an SVG railroad diagram (similar to the diagrams used by JSON.org).
Operational tooling and automation
This category covers tooling built to reduce manual work, increase visibility, and keep operational systems moving.
Examples include:
- File processing and integration tooling to bridge systems and automate routine workflows
- Monitors and checks that detect stalled processing before it becomes an operational issue
- Utilities that validate, index, archive, or route structured integration data
Representative examples:
- Cloud Conversions Sales Force API Connector: File processing system to move data between a warehouse system and an API, including OAuth and JSON/XML conversion.
- File Activity Monitors: Tools to detect integration files that have not processed within expected time windows.
- X12 File Indexer: Tooling to read and archive X12 documents based on direction, sender/receiver, and transaction type; originally implemented over a decade ago and still in active production use.
- Bulk File Processing System: Automated processing of network file shares for ingestion and indexing into an archive system.
Small utilities and personal tools
Some projects are intentionally small: a single purpose utility that is useful because it removes friction.
Examples include:
- Facilitating Fabulous Fantasy Football Foolery: Helper utilities used to facilitate league management and draft operations.
- Norfolk, VA Weather: A simple weather reporting utility illustrating practical data extraction and formatting.
- Out To Lunch: Randomly select from a predefined list of diners.
- Visual Decimal To Fraction: Visual relationship between decimals and common fractional measurements.
- TimeCard-O-Matic: Calculate take-home pay based on hours worked.
- WebVert: Simple value conversion utility.
- Palmvert: Measurement conversion for Palm devices.
Archive and catalog systems
A recurring interest is building systems that catalog, organize, and make collections usable.
Examples include:
- Snarky Contacts: Personal contact manager with address list generation.
- Snarky Catalog: Home collection catalog with the ability to fetch book data from the Library of Congress.
Historical note
Some work on this page spans older platforms and toolchains. The details are less important than the recurring concerns: clarity, repeatability, observability, and operator-oriented design.