Prior works
This is the official list of prior works of which I’m the sole owner or to which I retain some copyright. All of the content on this blog before a given date should be considered a prior work as well.
Number of works: 51
Last updated: 2024-02-24
This is a fairly complete survey of core automated testing concepts, using the Test Pyramid as the unifying metaphor. It makes these concepts accessible to programmers who have had little to no practical experience with writing (good) tests. If you're already familiar with Test-Driven Development, or writing automated tests in general, this may reinforce your existing principles and possibly deepen them further. The example system demonstrates the Test Pyramid strategy and incorporates Roy Osherove’s String Calculator kata as a hands-on Red-Green-Refactor cycle exercise.
- code
Rollup plugin to precompile Handlebars templates into JavaScript modules
- code
Enables an application's tests to open its own page URLs both in the browser and in Node.js using jsdom. Provides limited, though still very useful support for opening pages that load external JavaScript modules when using jsdom.
- code
Wrapper for the jsdoc command line tool for generating JSDoc HTML output. Removes the existing destination directory if it exists, runs jsdoc, and emits the relative path to the generated index.html file.
- code
This project incorporates the String Calculator kata to demonstrate Test-Driven Development in the context of a Test Pyramid-based testing strategy. Accompanies the Test Pyramid in Action training presentation.
Why internal software quality matters, why it's often unappreciated and sacrificed, and what we can do to improve it. Discusses the importance of instilling a quality culture to promote the proper mindset first as a foundation for seeking better processes, tools, metrics, and outcomes.
- presentation
A five-minute explanation of how to use the concepts of Pipelines, Roles, and Checklists, and their concrete expression in documentation, to mobilize people for organizational change
- presentation
A five-minute version of the full "Automated Testing—Why Bother?" talk
- code
Bats is a Test Anything Protocol-compliant testing framework for Bash. The date corresponds to the first commit I wrote that was merged into the code base, a3396cbc891d5f76832cd0cae65bf427c35bfb6c.
- code
Framework for writing modular, discoverable, testable Bash scripts
- code
An application for allowing authenticated users to create and dereference custom URLs hosted on a custom domain
- code
Encapsulates the steps needed to set up Certbot to use the Webroot plugin to install and renew Let's Encrypt SSL certificates
- code
Modular dev environment setup application
- presentation
A history of the Google Testing Grouplet's mission to drive adoption of automated testing, and a model for understanding how to execute similar change initiatives elsewhere
- presentation
An explanation of why automated testing is important ("The Why"), followed by a technical illustration of its fundamental principles ("The Bother")
- code
- documentation
Introductory unit testing exercise in Node.js
- code
Library for using Slack reaction_added events to file GitHub issues
- code
Hubot script using the Slack Real Time Messaging and Web APIs to file GitHub issues
- code
Personal utilities supporting my workflow and other miscellany.
- code
A Node.js server that responds to queries for Lunr.js indexes
- code
A set of Dockerfiles and Bash scripts to launch a specific set of services developed as part of my work for the U.S. federal government
- code
GitHub Pages-inspired static website publishing server
- code
Dockerfiles for images posted to mbland's repositories on Docker Hub
- code
- documentation
Demonstrates how to use the hubot-slack v4.2.0 Robot.react method
- code
- documentation
Jekyll template for 18F Guides, based on CFPB/DOCter
- code
Jekyll search plugin based on lunr.js and jekyll_pages_api
- documentation
A set of principles, practices, idioms, and strategies pertaining to automated software testing and its adoption.
- documentation
A guide to organizing grassroots initiatives for organization-wide improvement and enablement
- code
An archive of my Google Code repository, now available under the ISC license
- code
- documentation
Archive of my old Hub project from the federal government, a Jekyll-based documentation platform that aims to help teams organize and easily share their information, and to enable easy exploration of the connections between team members, projects, and skill sets.
- code
- documentation
Archive of the original 18F Guides site
- code
A server that routes authenticated requests to multiple authentication servers based on the presence of specific headers or cookies in a request
- code
Provides consistent style elements for Jekyll-based web sites
- code
Compiles information about team members, projects, etc. and exposes it via a JSON API.
- code
Node.js server that listens for GitHub push webhooks with modifications to a target file (typically .about.yml) and updates a destination repo with the contents of that file, renamed as <project_name>.yml.
- code
The .about.yml mechanism allows a project to publish and maintain metadata that can be easily maintained by project owners, that is visible and accessible to interested parties, and that can be harvested and processed by tools and automated systems. It is implemented using the YAML format.
- code
HMAC authentication package for Go that signs and authenticates HTTP requests based on a shared-secret HMAC signature
- code
HMAC authentication package for Node.js that signs and authenticates HTTP requests based on a shared-secret HMAC signature
- code
HMAC authentication package for Ruby that signs and authenticates HTTP requests based on a shared-secret HMAC signature
- code
HMAC authentication package for Python that signs and authenticates HTTP requests based on a shared-secret HMAC signature
- code
Proxy server that signs and authenticates HTTP requests using an HMAC signature
- code
Ruby Gem to support scripts providing a unified development environment interface; superseded by mbland/go-script-bash
- code
Performs pruning or one-level promotion of Hash attributes (typically labeled "private:"), and deep merges and joins of Hash objects. Works on Array objects containing Hash objects as well.
- code
This is a full implementation of the MapReduce algorithm specifically for use with lambdas. It is useful for problems that are a natural fit for the MapReduce model (such as building cross-references) when the data set fits easily within memory.
- code
Authenticates requests proxied by a bitly/oauth2_proxy server using shared-secret HMAC request signatures
- code
Contains resuable components extracted from the mbland/hub implementation for creating a team hub using Jekyll.
- code
Standardizes different weekly snippet formats into a common format, munges snippet text according to user-supplied rules, performs redaction of internal information, and publishes snippets in plaintext or Markdown format.
- code
A Node.js package for locking individual operations via the lockfile module
- code
A Node.js library that provides an Express middleware validator for GitHub webhooks that have a secret key defined
- code
Authenticates requests from bitly/oauth2_proxy using HMAC signatures
The personal blog of Mike Bland, a programmer, amateur musician, and Instigator