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
122 N. 6th St.
Madison, WI 53704
References upon request.
DevOps
Software deployment to Staging — January 2018 to presentDevOps
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
PHP Developer
CourseStage Learning Management System — December 2017 to presentDeveloper
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
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
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
MUSICat
local music curation for public libraries — May 2016 to November 2017Developer, 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Designer/Developer
Built an internally complex application with a simple web navigational interface.
ASP, JavaScript, HTML/CSS, Oracle 8i, IIS
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
Developer/Designer/Trainer
Complex SQL application for high-volume EDI submissions of Medical data.
Web Development trainer.
Web Services researcher.
TextPad, Sybase, PowerPoint
Developer/Designer
Developed back-end database.
Developed Windows client applications.
Developed Web client applications.
MS SQL Server, VB 3-5, ASP, VBScript, JavaScript, HTML