Builds, Artifact, and Release Management Projects
The build system artifacts below may be used individually, or in concert, in most cases. The benefits of
these tools is that as a set they simplify Ant-based build management. The system employs several central
concepts that permeate it, simplifying build management for release engineers and software developers alike:
- Composition - engineers should be able to compose a number of elements to tailor an applicable solution without a whole lot of complexity.
- Inheritance - engineers should be able to inherit some default behaviors thus having less to write themselves.
- Boilerplate - engineers should be able to write their own boilerplate, or use other's boilerplate, to reduce the size of build files.
- Overriding - engineers should be able to override a behavior without having to rewrite lots of common boilerplate.
- Extension - engineers should be able to freely extend the build system to adapt it to solve both simple and complex problems equally.
NGINX Installer for Ivy RoundUp for Enterprises
NGINX Installer for Ivy RoundUp for Enterprises installs and configures
NGINX for use as the web server hosting RoundUp repositories. The default port for NGINX in this configuration
is 37373, and NGINX is installed to /usr/local/nginx. This configuration is not supported on Windows.
Ivy RoundUp for Enterprises
Ivy RoundUp for Enterprises is a metadata repository used to
construct concrete Ivy repositories. This fork of the main
project brings it to Github to productize its build system and resulting output, and notably this clean-room
version eliminates all the non-portable nonsense whereby the Ant build file had called out to bash, awk,
subversion, find, pipes, and the like; this version solely uses Ant syntax eliminating any and all references to
subversion and versions derived therefrom. The result is a repository generator that can run on any platform,
including Windows and Mac. Another useful result of all this work is the capability to generate secured Ivy
repositories for corporate environments demanding on-premises solutions that provide third-party artifacts that have
been verified safe and secure.
Bootstrap is a project meant to be composed within other
Ant-oriented projects and whose purpose is to solely bootstrap an environment suitable for running Build Flex
builds. Put another way, bootstrap sets up an environment that allows you to download and install both source
and tooling to be used as and within software build systems, namely through Ivy.
See the related build-flex project.
Flex is an Ant-oriented build-management solution that simplifies
use of Ant for individual-contributors by providing boilerplate macro-definitions in Ant, and a structured pluggable
build-system. The net result is local project files that are materially empty except for extended or overridden
behavior. The build-system can support not only Java-based applications, but any kind of application. The
build-system uses Ivy for both resolving external third-party libraries and for intra-module build ordering.
This project depends upon the build-bootstrap project.
The Build Flex system allows engineers to optionally compose a multi-project workspace from project ordinarily
not built together. For instance, given A->B, where ordinarily B is separately built and provides its jar files
through the IVY repository, a developer may opt to place both A and B in a single build workspace and build both.
No additional work than checking them out individually is required, and the Build Flex system automatically detects
the build order between projects.
Sample is a demo illustrating the use and integration of the
build-flex build-system. It demonstrates module ordering and resolving libraries.
This project depends upon the build-flex project.
Java Common Utilities
Java Commons provides common Java utilities that were
found to be useful over the years; some convenient wrappers are provided for Internationalization and
Localization, for UUID and random number generation, for natural sorting of text, for NIO ByteBuffer
based streams, for URN parsing, ISO-8601 date/time handling, and time zone handling.
Javadoc for Java Commons is available.
Jarfile for Java Commons is available. [MD5|SHA1]
Java Codecs Library
Java Codecs provides facilities to encode and decode
data, both binary and text, using standards-based algorithms such as base16, base32, base32hex, base64,
base64url, quoted-printable, percent-encoded, and url-encoded. As this is implemented using an SPI
users may freely extend the library to support additional codecs by implementing the SPI interface and
providing the additional classes in their own Jar file.
Javadoc for Java Codecs is available.
Jarfile for Java Codecs is available. [MD5|SHA1]
Iron Mountain, Inc.
Product Owner, Bedrock; 2010-present
- Worked closely with Product Management, Program Management, Service Delivery, and Business Development to
communicate expectations and schedule updates. Continually refined and clarified product requirements, made
technical requirements decisions based upon business requirements, and planned sprints and corresponding
deliverables. Built team success and confidence through a transparent process that invites early participation
by all stakeholders eliminating organizational boundaries through fostering the sense of one team.
- Worked with multiple organizations (internal and external) to deliver within three sprints a bulk transfer
device (data shuttle) whose purpose is to backup 10+ TiB of data to cloud-based storage systems; delivered the
product on time, within budget, and with a level of professional gloss that impressed business development and
other internal organizations.
- Balanced longer-term architectural priorities and shorter-term needs to minimize rework while features are
incrementally delivered to market. For example, for the data-shuttle by making the file format readable allowing
the device to be read-capable in the future.
- Architected a scheme to enable transparent near real-time data federation and migration across multiple
storage grid (NetApp StorageGrid, Dell DX) implementations by means of universal addressing and path-mapping.
Worked with development teams to define an implementation architecture and series of sprints that allows the
team to get early feedback from business partners through an Alpha program.
Software Architect, Mobile Messaging; 2005-2010
- Architect and author of a subscriptions engine event service to mediate SMS events, billing events, and
notifications, as well as to enable customization of related responses and work-flows.
- Architect and author of a high-performance Java-based global message bus tailored for distributed mobile
messaging networks (SMS, MMS); influence integration of the message bus into SMS and WS Gateways, and billing
systems. Scalable to over 8 billion messages per day. Directed the integration of the technology into several
products that have gone into production, where we saw huge gains in manageability, stability, and performance.
- Led an international team of architects representing four business acquisitions and platforms to define common
protocols for message exchange between these platforms, to occur in a language independent manner. Engaged with
and reported to the VeriSign VP of Engineering and other corporate executives to ensure that the goals for the
team of architects were aligned with expectations of corporate executives.
- Was the co-chair in technical working group that was a member of the VeriSign Software Architecture Board (VSAB)
representing the Mobile Messaging business unit of VeriSign.
- Architect and author of the high-volume iTV Voting Platform used to manage voting for multiple prime-time
television shows, such as Deal or No Deal. Works include a custom high-performance in-memory database
benchmarked at over 941k updates/sec, and has a custom query engine benchmarked at over 1.16M queries/sec. The
system uses a combination of hierarchical and chained locking techniques. Total system performance without
logging benchmarked at over 180k messages per second. In 7 months generated over 100M billable transactions;
at $0.99 per transaction the platform I built generated nearly $100 million dollars in its first seven months.
The MathWorks, Inc.
Principle Engineer, MATLAB Kernel; 2001-2005
In my tenure at MathWorks I architected and implemented several works:
- MATLAB C++ Logging Library
- MATLAB C++ Threading & Synchronization Library
- MATLAB Atomic Operations Library (hand written assembly for 5 hardware architectures)
- MATLAB C++ Unicode Integration and Library
- MATLAB C++ XML Serialization Library
- MATLAB Extensible Plugin Interface Library
Object Design, Inc.
Senior Sales Engineer, Senior Software Engineer, Manager Release Engineering, Manager Porting Group; 1998-2001
As a pre-sales Consultant and Java technical expert for northeast United States and the eastern half of Canada, I
handled high-profile and strategic accounts (GM, Ford, Cisco, etc).
Certified Scrum Product Owner; 2010
Independent studies, mathematics, computer science.
Bachelor of Science, Mechanical Engineering, 3.8 GPA