home

If your workflow requires a copy of this history, the simplest way is to copy everything below the line and paste it into a Word doc. If you would prefer that I generate one for you, email me at whblondeau@gmail.com. I'll happily and promptly send it.


Bill Blondeau Software Position & Project History

Bill Blondeau

122 N. 6th St.

Madison, WI 53704

whblondeau@gmail.com

http://billblondeau.com

References upon request.

Web Courseworks: DevOps Software deployment to Staging — January 2018 to present

DevOps

Web Courseworks maintains numerous GitHub repositories for several products. These all need to have new features and bugfixes applied; also, changes to the more general feature repositories need to be propagated to customized repos. Changes must then be pushed to the corresponding Staging servers for testing.

Code merges involve GitHub Pull Requests, scripted git commands, and manual sequences of git commands. This is followed by deployment to various hosting services, including Amazon Web Services. Pre-deploy database backups are often required. Often, several merge/push operations occur simultaneously.

I've done the majority of these operations for Web Courseworks for over a year. To keep this critical sequence of operations in order, keep things from falling through the cracks, and provide summary reports of actions taken, I wrote several Python utilities, which have proven to be indispensable.

git, GitHub, ssh, Ansible, MySQL, AWS, Python, vim

Web Courseworks: PHP Developer CourseStage Learning Management System — December 2017 to present

Developer

CourseStage is Web Courseworks's flagship product. It is a software as a service application built on top of Moodle, a worldwide open source Learning Management System project.

CourseStage is a very large monolithic object-oriented PHP application. The underlying Moodle codebase was from the beginning optimized for plugin-based extensibility. As a consequence, there is a heavy emphasis on in-application frameworks to standardize common operations. The database does not enforce referential integrity (another plugin optimization), so the application has to do so.

All in all, challenging and interesting work.

PHP, git, GitHub, NetBeans, MySQL, VirtualBox, elasticsearch, JavaScript

MARCout bibliographic export (November 2017 to January 2018)

Designer, Developer

The MARC 21 format is a bibliographic data representation standard published by the Library of Congress. Despite its difficult aspects (it's old, it goes back to times when information was expensive to store and represent, and its implementations are often inconsistently complete—the joke goes, "MARC is already here, it's just not evenly distributed yet"), MARC 21 is deeply embedded in library information systems everywhere.

This project was requested by Rabble as a more robust means of providing MARC21 bibliographic exports of Rabble customers' MUSICat music catalogs. The primary purpose was for the customers to extract bibliographic information from their MUSICat instance, and import it into their own main library catalogs. Important additional uses include the ability to provision shared catalogs.

Since the customers wanted various combinations and sequences of MARC elements in their import records, using various serializations—MARC, like many well-established open standards, breeds idiosyncratic patterns of usage—Rabble and I settled on a three-part design:

The component was implemented in Python (nothing else would have been expressive and comprehensible enough for my short deadline). The Webservice was written in Flask. I also wrote—directly into Rabble's codebase—the NodeJS client code with which they could call the Web Service and export the result.

The project turned out to be highly successful (especially for a rush job in off hours), allowing Rabble to affordably provide the desired customizable MARC21 exports to customers with varying MARC21 composition, format, and serialization requirements.

Now if I can just get a couple of the Rabble devs to send me some pull requests for fixes and enhancements they've implemented...

This project is at https://github.com/whblondeau/marcout. It includes an example MARCout file.

Python, Flask, linux CLI, git, NodeJS for client code

Independent project JNPath (ongoing since June 2017)

Language Designer, Developer

I'm highly proficient with the XPath languages and tools for XML. While working with JSON data for Rabble's MUSICat, I became increasingly dissatisfied with the lack of a comparably useful set of declarative capabilities for JSON. JNPath is a pragmatic attempt to provide a considered, limited set of such capabilities. Its pattern-matching expression language avoids the syntax of the XML world, concentrating on familiar JSON notation conventions. Expressions are also designed for cognitive accessibility.

JNPath will provide a specification, a reference implementation in Python, a set of derived command line utililties, and a convenience implementation in JavaScript.

This project is at https://github.com/whblondeau/jnpath.

JSON, Python, linux CLI, git, JavaScript

Rabble: MUSICat local music curation for public libraries — May 2016 to November 2017

Developer, Devops, Data Mechanic

MUSICat is a hosted web app for managing collections of music. It's explicitly designed and built for public libraries. It provides essential capabilities:

MUSICat is a single page web app. The front end is implemented in Ember JS and Node JS; the back end is NodeJS and Redis, hosted on a Google Compute Engine Debian server.

Examples of live MUSICat sites:

JavaScript, Python, NodeJS, Redis DB, EmberJS, JSON, Google Compute Engine, Debian, linux CLI, git

Anchor Bank / Old National Bank: Nautilus administration and automation — December 2015 to May 2016

System Administrator, Documentation specialist, Programmer

Anchor Bank's Nautilus document image management system was being administered by a set of manual tasks guided by institutional knowledge that had been lost. Documentation was insufficient. My task was to upgrade the outdated Nautilus system, catch up with elapsed maintenance, properly document the procedures for maintenance, and automate any recurring work that I could. Much of the work involved harvesting information from Nautilus's formatted text reports. Automation was done with Python.

Shortly after I came aboard, Old National Bank bought Anchor Bank out. This increased the urgency of knowledge capture and automation, due to anticipated losses of key personnel during the transition period.

This project was effective and successful. By the time I myself departed, the necessary aspects of the Nautilus system had been documented, automated, and stabilized.

Python, Nautilus admin console, Cygwin CLI, Windows Active Directory

Independent project rocket-appliances (ongoing)

Researcher, Developer

I was introduced to geospatial coding during some minor work at USGS/CIDA. I was interested enough to dig into the underlying mathematical and geographic concepts. (Face it: generating a map view with multiple superimposed data layers is simply cool.) I responded by developing a conceptual model that represents the key abstractions of geopatial work; this will ultimately be extended into a high-level language specification.

This project is at https://github.com/whblondeau/rocket-appliances.

Python, git

USGS/CIDA: Documentation of NGWMN — March and April 2015

Technical Analyst and Writer

The National Groundwater Monitoring Network (NGWMN)—built, maintained, and operated by CIDA—had imposed high ongoing costs due to a lack of documentation and an idiosyncratic technology stack. I documented a great deal of it while it was still fresh in mind after the refactoring project listed below.

More information, with a link to some samples of delivered content, in my Technical Writing portfolio.

Confluence Wiki, Google Docs

USGS/CIDA: Refactor of NGWMN Mediation — January to March 2015

Researcher, Developer

The National Groundwater Monitoring Network (NGWMN), a portal for shared groundwater quality data from disparate sources, had been running in limited prototype mode for several years. In anticipation of a major increase in the number of participating agencies, I refactored NGWMN's information topology for Mediation, the term of art for accepting information from multiple contributors in arbitrary formats, and converting it to the NGWMN's standard internal data representation.

As a necessary part of that, I developed a heavyweight regression test, exercised it, and delivered it with thorough documentation. (You can see a summary documentation excerpt here.)

Apache Cocoon, Python, XML/XSLT, Oxygen XML Editor

USGS/CIDA: Internal monitoring using NAGIOS — November 2014 to January 2015

Researcher, Developer

CIDA was evaluating NAGIOS, an open source framework for monitoring server, network, and application assets. I wrote a prototype client in Python that would invoke the built-in self-reporting capabilities of Tomcat Manager included by default in each installation of the Apache Tomcat HTTP Server.

NAGIOS, Python, Python Requests, Python Beautiful Soup, Tomcat HTTP Server, Tomcat Manager, REST, bash scripting

USGS/CIDA: USGS Pubs Warehouse behavioral testing — October & November 2014

Developer

The USGS Publications Warehouse provides online access to the very large, and continually increasing, store of official USGS publications. Internal document management was being implemented using JSON notation for semantics. I was tasked with writing Behavioral Tests in Gherkin to ensure that the mechanism for documents to supersede previous versions was correct.

Python, JSON, Lettuce BDD framework, Gherkin

USGS/CIDA: pywqp Water Quality Dataset Client — June to September 2014

Developer

The Water Quality Data Portal, built and operated by CIDA, offers a web client for download of large datasets. This project created a complementary scriptable Python client to accomplish the same task. See the pywqp GitHub repository for code, documentation, and details.

Python, Python-Requests, REST, Lettuce BDD framework, Gherkin

USGS/CIDA: NGWMN Groundwater Service extension — July 2013

Developer

CIDA had collaborated with the Canadian agency NRCAN to do some proof of concept cross-border groundwater data sharing, connecting the National Groundwater Monitoring Network (NGWMN) via parts of the OGC Sensor Observation web services.

On a short timeframe, NRCAN requested that the SOS service suite be fully implemented to support a cross-border information sharing demo for the United Nations. I assisted with that, and received a knowledge transfer from a departing engineer while doing so. I documented everything I could learn about the NGWMN.

Apparently the UN was duly impressed with the demo.

Java Spring, OGC SOS specification, Google Docs

USGS/CIDA: Automated Installer for WDNR Fish Mobile AppDecember 2013 to January 2014

Developer, Researcher

There was no automated install/update utility for the new Fish Mobile App, and WDNR needed to install it on a lot of Windows tablets. Working with a tech-savvy Project Lead, designed and built a utility that installed Python and CouchDB (adjusting for variations in the Windows security model), and then used Python to control installation and setup of the application via CouchDB's REST API.

Very interesting (and oddly rewarding) project.

Python, CouchDB, REST, Python Requests, Windows cmd.exe

USGS/CIDA: Technical Debt containment advocacy — April 2013 to March 2015

Analyst, Evangelist

Ongoing campaign to introduce the concept of Technical Debt; to raise awareness of Technical Debt's nature and severity; and to advocate for its containment and reduction, among management and staff at CIDA. This was particularly important given CIDA's funding model and large deployed portfolio of successful major applications.

Gratifyingly, CIDA to this day uses Technical Debt as a concept when reasoning about architecture, design, and support for applications.

Google Presentations, email, stand & deliver

USGS/CIDA: Water Quality Portal rewrite — May 2013 to July 2014

Architect/Designer, Developer

The National Water Quality Monitoring Council's Water Quality Portal is a high-volume download mechanism for very large datasets from disparate sources.

Built high-performance multiformat SAX aggregator for XML content from multiple HTTP response streams.

Java, XML, SAX, Apache HttpClient

USGS/CIDA: WDNR Fish Mobile App BDD — February 2013 to June 2013

Developer. Test Suite Designer

Wisconsin DNR uses tablets in the field for biological surveys of fish populations.

Assisted with conversion of native Java app to online/offline Web app.

Designed and developed extensive Behavior-Driven Development test suite.

Cucumber, Gherkin, PhantomJS, Java, CoffeeScript, CouchDB

Aurora Fashions mobile site — July 2012 to October 2012

Project Manager/Mobile Web Developer/Xpath Specialist

Coordinated work between teams in Britain, San Francisco, and Madison.

Wrote core transformation code to convert eCommerce site to mobile website.

Worked with HTML5 and CSS3 to control appearance and behavior of resulting site.

CSS3/SASS, HTML5/HAML, Tritium transformation language, JavaScript

ALICE Law search website — June and July 2012

Web Developer/Data Wrangler

Generated large quantities of sample data from raw program inputs.

Built Front-end components.

Worked with Designer to implement user interface.

Ruby on Rails, Python, HTML5/HAML, CSS3/SASS

American Family Insurance: Financial Data Warehousing — Sept 2011 to March 2012

Data Architect

Defined operational data feed to general ledger.

Developed logical models for financial data in dimensional warehouse.

Worked with Project Management to define workflow and goals.

Enterprise Architect, Visio

TDS Telecommunications: Enterprise Java Support — June 2011 to August 2011

Java and Database Developer/Analyst

Bugfixes and short-term enhancements to a large, highly complex legacy J2EE application.

Fixed problems and contributed minor modifications.

Performed cost/benefit analysis for various fix strategies.

Wrote DDL for database modifications.

Java, Linux, Oracle, SQL Developer, Spring, Eclipse, JBoss, Python

State of WI, ETF: Java Framework Evaluation and Component Architecture — October 2010 to May 2011

Senior Developer/SOA Architect

Worked with a team of senior ETF Developers to evaluate Java Frameworks.

Designed, recommended, and delivered a component Service Oriented Architecture.

Researched and evaluated candidate Enterprise Java frameworks including Spring, Struts, and MyBatis.

Designed a scalable component-style SOA and XML datamodel for ETF's increased Web presence.

Java, Spring, Struts, RAD/Websphere, MyBatis, XML Schema, XSLT, Python

State of WI, OJA: Distribution Monitoring Application — February 2010 to October 2010

Graphic Designer/Technical Developer

Designed and developed a monitoring and display application to display operational status of a mission-critical traffic citation distribution/forwarding application.

XQuery, eXist, oXygen XML Editor, XSLT, CSS

State of WI, OJA: "SSAF" Simple Information Sharing Application — April 2008 to May 2010

Specification Author/Implementation Designer/Project Lead/Developer

Designed a rugged and simple information sharing software appliance. "SSAF" is an acronym for "Secure Storage and Forwarding"; the appliance is a loosely coupled outward-facing Web app optimized for agencies with small technical resources.

Wrote SSAF as a platform-neutral Specification, so that this appliance can be implemented in any desired language (Python, Java, Ruby, .NET etc) for any platform.

Published Specification at http://wijiscommons.org/

Technical Lead for a project to implement the Specification in Java and deliver it to a large metropolitan police force and corresponding county sheriff in order to facilitate booking data exchange and upload of incident data to the FBI.

XML Schema, REST, SOAP, Java, Python

Voter Legal Support Google Maps Application — October and November 2008

Designer/Developer/Host/Operational Support

Designed, developed, and deployed a Google Maps application that provided color and size coding of polling locations (for various factors that flagged each place's likelihood of requiring legal assistance for voters), parametric selection of displayed polls, and drill-down to detailed information on any displayed polling place.

Google Maps API, JavaScript, XHTML/CSS

State of WI, OJA: Electronic Citation Distribution Application — September 2007 to March 2008

Project Technical Lead/Developer

Adopted a stalled project and pushed it through to going live. Project involved accepting REST uploads of traffic citations and dispatching them to appropriate destinations (District attorneys, Circuit courts etc.)

Rewrote entire existing XQuery codebase for maintainability and stability.

Completed unfinished functionality.

Redesigned workflow operations.

XML, REST, XQuery, eXist XML database, oXygen XML editor, XSLT, CSS

State of WI, OJA: Disclosure Control Language and Framework — April 2006 to February 2009

Language and Framework Primary Developer/Project Lead

Invented two languages and a set of framework components to solve the very difficult problem of Rule-based Information Disclosure Control in a multi-author setting, presenting the results at several national conferences.

Invented a Boolean rule definition language based on indented bulleted lists.

Designed a higher level graph-based language on top of RDF for unbreakable rule formulations.

RDF, EBNF, Graph Theory mathematics, Python, Java

State of WI, OJA: "Gateway" Disparately Sourced Data Search/ Retrieval Application — November 2005 to August 2007

Data Architect/Designer/Project Lead/Developer

Defined the high-level system architecture, and redefined it several times to adapt to a chronically unstable deployment context.

Designed the message formats and search/retrieval paradigm.

Designed a "cached pointer/sourced retrieval" strategy for searching data distributed over hundreds of autonomous sources. Wrote heavily annotated XML Schema definitions for message conversation patterns.

Wrote components (including a high-speed shredder for XML messages entering an RDBMS) of the application, in Java.

Java, Hibernate, XML, XML Schema, SAX, Python

State of WI, CCAP: "SLAM" Layout Language and Metalanguage Design and Implementation — October 2005

Language Designer/Implementor/Project Lead

Wrote a simplified XML layout language that described essential page layout items for Circuit Court forms in general, flexible syntax.

Implemented the language in CSS 2.1.

Designed a higher-level "metalanguage" to denote frequently-recurring elements.

XML, CSS 2.1, XSLT

State of WI, CCAP: Configuration Server API Specification — August 2005 to September 2005

Architect/Designer/Specification Author

Designed a simple request-response protocol for managing configuration information. Requests are all URIs, and responses are all XML.

Wrote specification for representing configuration states and operations.

URI, XML

State of WI, CCAP: Versioned Database Descriptor Architecture — June 2005 to August 2005

Information Architect/Component Model Designer

Defined XML Descriptors for state descriptions for databases.

Defined XML Descriptors for change events.

Defined a simple component model to interoperate between State descriptors, Change Descriptors, and actual database instances.

XML, DDL, SQL

State of WI, CCAP: Production Support Enhancement — September 2004 to September 2005

Production Support Specialist/ Designer/Developer

Provided ongoing support, troubleshooting, and monitoring while simultaneously introducing useful improvements at the process and utility level.

Wrote and executed SQL queries against production data.

Wrote numerous Python scripts to automate key support processes.

Wrote multiple special-purpose, in-house Web applications to provide monitoring and administration of production processes.

Modified production Java applications to improve reliability, auditability, and logging.

Java, Python, XML, SQL

State of WI, CCAP: E-Filing Message Handling applications — November 2004 to April 2005

Architect/Designer/Specification Author

Wrote applications to retrieve submitted messages from message queues, modify the messages on the fly according to extrinsic transform specifications.

Wrote message-handling agent applications in Java.

Specified RDF-compliant URI message definition model.

Defined message transformation/configuration XSLT formats.

Implemented multiple message type definitions for processing.

Java, RDF, XML, XSLT, SMTP

State of WI, CCAP: Various Projects — May 2003 to December 2004

Developer/Maintainer/Designer

Performed maintenance on queue-based messaging systems.

Diagnosed the incompatibility between the fundamental concepts of dates and times as year/month/day/hour/minute on the one hand, and the (Java standard) millisecond stream on the other. Designed and built a package of value classes that avoided the problem, while providing comparable date.

Java URI/URL, XML, RDF

Beacon Technologies: Workflow Management Application — November 2002 to February 2003

Data Designer/XML expert/XSLT Developer

An in-house application designed to graphically describe complicated workflow processes without sacrificing sophistication and flexibility.

Designed the XML structures for run-time representation and for persistence.

Wrote XSLT transformations to create Java 2D serializations during retrieval.

XML, XML Schema, XSLT, Java

SBSA: Vehicle Repair Invoice Entry and Management — September 2002 to December 2002

Analyst/Designer/Programmer

Designed and implemented a Web front end for real-time invoice entry and general invoice status tracking. Requirements included fast query execution, low server load, and strict data confidentiality.

JavaScript, XML, CSS, XHTML, ASP, MS SQL Server

CUNA Mutual Insurance: Insurance/Finance application — Jan 2001 to August 2002

Project Lead/Designer/Developer/Mentor

Designed and implemented an XML Query Definition engine.

Designed XML query definition formats and XSLT SQL transformers.

Designed and implemented a cross-database reporting system.

Designed and implemented the server monitoring system in ASP/XML/CSS.

Responsible for performing all bug fixes within a tight timeframe.

Mentored team members in web development and SQL.

ASP, HTML/CSS, XML, XSLT, JavaScript, VB6, Java, DB2, MQ-Series, JSP, ASP, XPath, XSLT, Lotus Notes

American Family Insurance: Web Based Enterprise Application and Staff Performance Award — September 2000 to December 2000

Designer/Developer

Built an internally complex application with a simple web navigational interface.

ASP, JavaScript, HTML/CSS, Oracle 8i, IIS

GE Medical: Service/Web Based Applications - April 2000 to August 2000

Project Lead/Designer/Developer

Developed a system to handle XML calls across the Internet between Active Server Pages and Java Server Pages for a Web-based time and expense tracking system.

Developed a Web application as front end to an Oracle database for managing corporate acquistions.

ASP, HTML, IIS, Java, JavaScript, JSP, SOAP, SQL, SQL Server, VBScript, Windows NT Server, XML

Cap Gemini Consulting: various projects — June 1999 to March 2000

Developer/Designer/Trainer

Complex SQL application for high-volume EDI submissions of Medical data.

Web Development trainer.

Web Services researcher.

TextPad, Sybase, PowerPoint

InterMedia LLC: Student Information Systems — June 1997 to June 1999

Developer/Designer

Developed back-end database.

Developed Windows client applications.

Developed Web client applications.

MS SQL Server, VB 3-5, ASP, VBScript, JavaScript, HTML