William walks two paths. He is as much a professional Software and DevSecOps Engineer as he is an accomplished Senior Manager/Director. Even in college, William earned degrees and distinction in both Computer Science and Business Administration. A 2-page résumé cannot capture all of William's accomplishments, so this portfolio is a supplementary to it.
Table of Contents
Leadership and Management
- Senior Director of Software Engineering
- Director of Engineering Services (DevOps)
- DevOps Lead
- DevOps Pioneer
- Data Services Team Manager
Artificial Intelligence and Machine Learning (AI/ML)
- Product Recommendation System for Amazon
- Medical Surface Selection for Denver Health
- Mitigating Revenue Loss for INN Hotels Group
- SMS Spam and Malware Detection for Cyber Solutions
Professional Software Engineering
- Realty 2000 (AKA: Lightning Synergy)
- Customer Data Integration (CDI)
- Target Express
- Enterprise Web Security
- Active Directory Synchronization Tool for Enterprise Web Security
- Address Book Synchronization Tool
- Innumerable Tools and Utilities
Open Source Contributions
- YAML Path
- Dynamic Package Builder
- YAML for Puppet RSpec Testing
- HTML Master Pages
- MySQL Connection Encryption for Apache Portable Runtime Utilities Library
- POP-Auth 3
- RPM Builder for MegaRAID Linux Driver
DevSecOps/DevOps and Various Administrator Roles
- Intel Web Security
- Customer Dialogue Manager (CDM)
- Debt Manager
- Network Administrator and Systems Administrator
- Database Administrator (DBA)
- Debt Manager (again)
- Hotel Booking Application
- Inter-Guild Link
- Bust Out
- Space Wars 2022
- Edge Cards
- Star Base Defender
- No Code AI and Machine Learning: Building Data Science Solutions
- Intensive Cloud Computing Hands-on Training
Leadership and Management
In both his professional and academic circles, William is often described as a natural and charismatic leader, an initiator, and a "take charge" person. People have said they are attracted to his positive energy, his enthusiasm, and his expertise. He leads by example and teaches anyone thirsty for knowledge. William is a mentor and a coach both professionally and for youth activities. He is a servant leader who creates value by crossing silos and breaking down barriers for his team. He is always looking for ways to improve himself and his team. Most importantly, William is not afraid to get his hands dirty and dive right into the work along with the rest of his team.
Senior Director of Software Engineering
When a small company of 26 employees exploded to over 200 in 3 years, William was rapidly promoted to Senior Director of Software Engineering, answering directly to the CTO and CEO, sometimes attending board meetings. Through direct-hire and M&A activities, he became quickly responsible for a team of 40+ software engineers in three States plus India, quality control engineers, and technical support agents. He was also responsible for the company's multi-million dollar software development budget, which he managed with a high degree of fiscal responsibility, usually completing initiatives earlier than committed and under budget. To his great amusement, the company CEO one day aptly realized and excitedly exclaimed that William was using "The Scotty Principle" of Star Trek fame for estimations. He was right. This became a running joke in the regular senior staff meetings but nobody could argue against his repeated success; sometimes William's team needed that extra buffer time, still delivering on schedule.
William's substantial team was responsible for the company's ever more complex flagship product, Realty 2000 (later rebranded as Lightning Synergy) -- which consistently held the #1 or #2 vertical market position -- along with myriad ancillary real estate products and tools (legal document management, virtual signatures and notary, virtual property tours, an upcoming Internet back-end, and more). Everything tied back into the flagship product in one way or another. William's team also grew to create and own the company's litany of web services, including the company's public facing web site, the customer portal, and the internal, employee-only intranet. This first-time exposure to the Internet rapidly brought on a new set of skills for William: Information Security. The Internet is indeed a dangerous place and an early set of setbacks taught some hard, unforgettable lessons.
As his first senior management role, William proved quite capable of managing very large teams through delegation, empowerment, clarity of mission and specifications, as well as precise communication and above all else, time management. He was an early adopter of new virtual team synchronous and asynchronous communications and task management tools, leading to a never-before-seen agility in the company's overall development staff.
Skills: Leadership, Executive-Level Communication, Business Management, Team Building, Negotiation, Critical Thinking, Decision-Making, Employee Management, Manager of Managers, Relationship Building, Conflict Management, Vendor Management, Forecasting, Budgeting, Market Analysis, Innovation, Intrapreneurship, Documentation, Best Practices Development, Standards Development, Project Management, Program Management, Software Development Life-Cycle (SDLC), Software Engineering, Software Architecture, Software Design, Software Testing, Software Quality Assurance (SQA), Software Release Management (SRM), Software Deployment, Software Installation, Software Maintenance, and others.
Director of Engineering Services (DevOps)
When FICO shed all of its non-platform products through divestiture in 2021, William was simultaneously tasked with the role and responsibilities of Senior DevOps Engineer as well as interim Director of Engineering Services for the newly formed company. He was initially responsible for two teams (DevOps and Configuration Management), through which he was tasked with building the new company's entire enterprise-wide infrastructure in the cloud. He was also responsible for the company's enterprise-wide DevSecOps initiatives including the company's myriad product cloud migrations, automation, continuous integration, continuous deployment (CI/CD), and configuration management (CM). Despite rapid turnover among his team members (not everyone appreciated the sudden, surprise divestiture), William managed to build a highly effective set of teams that successfully delivered on all of their commitments while under extreme stress.
William was repeatedly awarded and otherwise commended for his extraordinary ability to handle the chaos of the post-divestiture startup phase. His direct manager was often quoted as saying William was brilliant at "juggling chainsaws" (skillfully dealing with team turn-over, schedule shortening, budget reductions, project scope unpredictability, perpetual task re-prioritizations, etc.). William's direct reports and other senior managers often thanked him for his remarkable skill at "bringing order to chaos".
Skills: Leadership, Negotiation, DevOps, DevSecOps, Agile Methodology, Scrum, Kanban, Project Management, Software Engineering, Cloud Architecture, Cloud Migrations, Information Security, Automation, Configuration Management, Continuous Integration (CI), Continuous Deployment (CD, CI/CD, CICD), Configuration Management (CM), and others.
When William started working at FICO there was no cohesive DevOps organization or methodology. There were a few "DevOps" engineers scattered across the internal IT organization who had a hodge-podge of tools and scripts to perform nascent forms of automation, but they weren't dedicated positions and their solutions lacked maturity, robustness, and scalability. William took it upon himself to change that. He designed a novel, cross-functional CI/CD process with a CM overlay, which he personally implemented for one of FICO's leading products. It was such a success that the VP of the internal IT organization asked William to transfer to his organization to form a new, dedicated DevOps organization. William accepted.
His first task was to build a team. He hired or accepted internal transfers and personally trained a small team of new, dedicated DevOps engineers. There was no lax time; they were immediately tasked with taking ownership of the majority of internal development and testing assets, including the company's internal IT infrastructure including development and production assets. They were also tasked with automating the company's entire DevOps software development lifecycle (SDLC) from requirements gathering through development, testing, and deployment. William's team grew, resulting in a shift in middle-management to accommodate, and his team became further responsible for automating the company's cloud migrations, continuous integration, continuous deployment (CI/CD), and configuration management (CM). William's team was also responsible for the company's enterprise-wide security initiatives including automated vulnerability scanning, automated configuration scanning, and automated penetration testing.
Skills: Leadership, Proposals, Negotiation, Team Building, Agile Methodology, Scrum, Kanban, Standards Development (SOPs), Technical Documentation, Project Management, and others.
Agile methodology predates DevOps and William's story shows a strong relationship between the two. At Intel, William was part of a small, cross-functional team that were early adopters of the new -- at the time -- Agile methodology. Everyone had their "regular job" but they also took part in a daily standup meeting to discuss opportunities for collaboration to improve workflow and mitigate barriers. The team was also responsible for enterprise automation, a term which was later adopted by the DevOps movement to mean all of Continuous Integration, Continuous Deployment (CI/CD), and Configuration Management (CM).
Of particular note, William's team utilized Hudson (which was later rebranded as Jenkins) and Puppet (before it supported "modules") for most of their automation. William specifically contributed to Puppet by developing a custom hierarchical data layer for it based on CSV files. While this solution was effective, it is not related to the YAML-based Hiera product that was later officially adopted by Puppet for hierarchical configuration data (but the coincidence is extremely strong).
Skills: Leadership, Proposals, Proof of Concept (PoCs), Agile Methodology, Scrum, Kanban, Standards Development (SOPs), Technical Documentation, and others.
Data Services Team Manager
Only William's second job and he was put in charge of hiring and managing a team of data engineers to support planning activities for a general contractor, Baldhosky Enterprises. William grew his team to include three engineers plus himself. They were responsible for sourcing and ingressing population and migration data from myriad sources (tax rolls, USPS mover data, etc.) to a custom database which William designed specifically to support geospatial and time-series queries along with marketing campaigns.
Skills: Leadership, Team Building, Employee Management, Technical Documentation, and others.
Artificial Intelligence and Machine Learning (AI/ML)
Besides writing many AI opponents in various video games, William began studying AI/ML in college during his undergraduate coursework in Computer Science and Mathematics. He has more recently been involved in myriad AI/ML projects while studying NoCode AI/ML at MIT. The following are descriptions of the projects he has completed and case-studies he has been exposed to in this field.
Product Recommendation System for Amazon
A project for Amazon at MIT, William was tasked with developing a product recommendation system for Amazon. Using sparse data, William's model needed to perform the best possible item recommendations to users given almost no information about those users. He chose to employ Collaborative Filtering techniques using K-Nearest Neighbor processing to contrast User-User versus Item-Item filtering. For the available data (over 1 million records), William's models improved prediction ratings with Item-Item filtering by 1.5% over User-User filtering. This was a remarkable achievement given the complexity of the problem and that both User-User and Item-Item models otherwise scored identically well using traditional quality metrics (RMSE, MAE, and NMAE).
Technologies: RapidMiner, Rank-Based Recommendation System, User-User Similarity-Based Recommendation System, Item-Item Similarity-Based Recommendation System, Model-Based Recommendation System (Matrix Factorization), K-Nearest Neighbor (KNN) Algorithm, and others.
Medical Surface Selection for Denver Health
Most people would see a hospital bed and think nothing of it, not realizing that there are many specialized beds (called "surfaces" in healthcare) with very specific use-cases. There are so many in fact, that it can be overwhelming to order such a surface, especially at a high traffic medical facility and most notably for new staff. Making correct selections can be further complicated by organizational policies that override otherwise "correct" surfaces.
William performed the necessary primary research at Denver Health in Denver, Colorado and developed an Expert System for medical surface selection. This solution takes into account many factors through an intuitive Q&A process, weighting inputs appropriately for the most ideal surface for each presented case. It even captured the organizations own internal policies in addition to the usual metrics for selection.
Technologies: Expert Systems, Medical Surfaces
Mitigating Revenue Loss for INN Hotels Group
For this MIT project, INN Hotels Group was facing a rise in hotel booking cancellations, hurting profitability. In particular, last-minute cancellations were driving up staff and re-booking costs. The client asked for a means of reasonably identifying bookings that are likely to be cancelled in order to better plan necessary resource allocations for handling the expensive process of reselling the suddenly vacant rooms.
William developed, trained, and optimized a Random Forest Machine Learning Model based on past booking and cancellation data. Through extensive feature engineering and exhaustive hyperparameter tuning, William's model achieved an outstanding predictive quality rating of 98.14% for the training dataset and 90.81% for the test dataset, using F1-Score criteria. Given that a 75% F1-Score is considered "good", this was a remarkable achievement.
Technologies: RapidMiner, Decision Trees, Random Forests, Feature Engineering, and others.
SMS Spam and Malware Detection for Cyber Solutions
As a data scientist working on behalf of Cyber Solutions for this MIT project, William was tasked with developing a model for detecting spam and malware in SMS (cellphone text) messages using an appropriate Machine Learning model. He chose to lean into Natural Language Processing techniques to develop, train, and optimize a Random Tree ML model which achieved an outstanding accuracy rating of 97.9% for the training dataset and 96.6% for the test dataset. This was a remarkable achievement given the complexity of the problem and the limited amount of data available for training (roughly 5,500 sample e-mail messages pre-labeled as "spam" or "ham").
Technologies: RapidMiner, Natural Language Processing (NLP), Text Pre-processing, Sentiment Analysis, Decision Trees, Random Forests, and others.
Professional Software Engineering
William has been writing code since his youth in an ever growing list of computer programming languages. He is a polyglot programmer who is always learning new languages and technologies. He has written code for myriad industries including real estate, finance, advertising, security, government, and more. William is a full-stack developer who has written software for every layer of myriad N-tier stacks.
Realty 2000 (AKA: Lightning Synergy)
As a hobby while working in Technical Support for NDS Software, Inc., William single-handedly reinvented his employer's flagship desktop real estate management, marketing campaign, and client relationship management software. He envisioned a user experience (UX) that would shorten the learning curve for new users, reduce the number of clicks between common tasks, modernize the look and feel of the software, and above all else, have fewer bugs. One day unknown to him, his boss invited the company's owner to see what William had been working on. The owner was so impressed that he immediately transferred William to the very small Development team (three people, including William).
In less than a year, William became the company's Lead Developer for Realty 2000, hiring and managing a larger team of other developers to help him further realize his vision for the product. That same year, William's version of the product took the #1 market position, increasing company revenue more than ten-fold!
Within two years, William became directly involved in myriad M&A activities. This resulted in his being promoted to Senior Director of Software Engineering answering directly to the company's new CTO and CEO, responsible for myriad new products and their respective development teams along with a multi-million dollar budget. At the Board of Director's insistence, Realty 2000 was rebranded as Lightning Synergy and through it, users gained access to the various newly acquired applications and tools, greatly enhancing their capabilities as Real Estate Agents and Brokers. Even with its new name, his product maintained its #1 or #2 market positions.
Customer Data Integration (CDI)
Customer Dialogue Manager (CDM) is a product of FICO, Inc. William was the lead for the second-generation, fully-automated Customer Data Integration (CDI) component of CDM. Based entirely on Jenkins via Bash shell scripts driving Pentaho Data Integration (PDI) tools, William's automation framework enabled the CDI team to ingress record quantities of customer data from myriad sources, transform and normalize it, and then import it directly into CDM all on independent, per-client automatic schedules.
William's fully-automated solution was noted for its speed, robustness (automatic error-handling and sophisticated branching logic), ease-of-use, and maintainability resulting in multiple awards.
Technologies: Jenkins, Bash shell scripting, Pentaho Data Integration (PDI), Java, Red Hat Enterprise Linux (RHEL), CentOS, Subversion (SVN), and others.
Target Express was the premier print advertising service for the publishing industry. Through a SaaS web application, clients could automatically select the most cost-effective routes and newspaper stand boxes for maximum impressions per marketing campaign. Client data was uploaded, cleansed, standardized, enhanced (with additional marketing details for identified consumers), and presented in the web application for campaign selection.
William was the Lead Developer for Target Express in addition to serving as the small company's Database Administrator, hiring manager, vendor administrator, and assistant Network Administrator. Of his own volition, William over time upgraded the application from Classic ASP to ASP.NET, greatly enhancing its back-end capabilities by integrating with other services like Microsoft Message Queue (MSMQ) to mitigate the damage caused by service outages (electricity at the office building was somewhat unstable and server-rack uninterruptible power supplies were a luxury out of reach for this small business).
Enterprise Web Security
Intel acquired McAfee and formed Intel Security, rebranding the formerly McAfee suite of enterprise security products. The first Intel employee in the Denver, Colorado McAfee office, William was initially a full-stack Software Engineer for the enterprise web security product. With a maximum response time constraint of less than 10 milliseconds for over 2 million requests per second, William got to work on truly world-class code!
Discussed in the DevSecOps/DevOps and Various Administrator Roles section, William was quickly found to have a talent for automation and was assigned to the first Agile team which pioneered what would later become known in industry as DevOps.
Active Directory Synchronization Tool for Enterprise Web Security
Intel Security's suite of products had an Achilles Heel: Some customers refused -- or due to regulation were not permitted -- to expose their corporate Active Directory (AD) and LDAP services to the cloud-based SaaS product in order to synchronize their users and groups. This meant that these customers had to manually manage their sometimes vast numbers of users and groups in the Intel Security product. This was a tedious and error-prone process. One day, the product owner pitched this pain-point to the entire development organization and challenged anyone to solve it. William accepted the challenge and within only a few days, he had a working prototype that immediately proved successful with early adopters.
William was the sole developer for the Active Directory Synchronization Tool (ADST) for Intel Security. ADST was a SaaS tool that synchronized Active Directory (AD) users and groups with the Intel Security enterprise web security product. ADST was a mission-critical tool that was used by every Intel Security customer. It was also a highly complex tool that required a deep understanding of AD, LDAP, and other enterprise directory services. William's ADST tool was so successful that it was later adopted by the Intel Security product team as the standard AD synchronization tool for all of Intel Security's products.
Technologies: Microsoft PowerShell, Microsoft Active Directory (AD), LDAP, Microsoft SQL Server, Microsoft Visual Studio, Mercurial (Hg), and others.
William once worked in the technical support team of a company that didn't have a ticketing system and was unwilling to purchase one. Instead, they used a shared spreadsheet to track support requests. This was a very inefficient system that often resulted in duplicate work, lost work, and confusion. Between calls, William decided to write a desktop-based, simple-to-use ticketing system that provided dynamic scripts for the support agents. He called it TechLogs. It was a networked ticketing system that quickly became the standard solution for the whole team.
The team manager still insisted on using his spreadsheets, so William incorporated a portable export capability while also adding sophisticated reporting features that ultimately obviated the antiquated spreadsheet solution.
Technologies: Visual FoxPro
Address Book Synchronization Tool
While working for a government consultancy with an agency that cannot be disclosed, William was asked to solve a critical failure of their internal IT team: They were consolidating myriad, incompatible office productivity software and were being forced to forfeit entire address book data stores because the small IT team lacked the resources and programming skills necessary to migrate the tombstoned data. This forfeiture was deemed unacceptable. Further, the IT team insisted the solution be encapsulated entirely within Microsoft Internet Information Server (IIS) so that the IT team could invite all agency employees to self-serve their own data migration.
William's solution was a web-based tool that allowed agency employees to upload their address book data files (with extensive, detailed, step-by-step prompting), select the data they wanted to migrate, and then download the reformatted data in a transport file compatible with the new office productivity software. The tool was a mission-critical success, so much so that they asked William to further customize the tool so that it could import any data file format, allow custom field mapping, selection, and exclusion, and then export the data into any of several file types using wizard and data mapping templates they could manage themselves. This was also successful and became a turn-key, fire-and-forget solution.
Technologies: Microsoft Internet Information Server (IIS), Microsoft Active Server Pages (ASP, Classic JScript), Microsoft Outlook, Microsoft Exchange, and others anonymized here to obfuscate the client's identity.
Innumerable Tools and Utilities
William is a prolific computer programmer. Whether for employers or his own hobbies, he has written myriad tools and utilities over the years. In everything William does, he aims to impress. Someone once remarked that William "aims for the moon." As far as he is concerned, when it comes to software, there is no such thing as "too much" or "too good". He is a perfectionist who is always looking for ways to improve his code and the user experience.
William's tools and utilities are too numerous to fully list here. Those that are Open Source are listed elsewhere in this portfolio. Some remarkable private entries include:
- For Open Source Puppet users, an "environment" is a manifest-controlled (the Puppetfile), complete copy of infrastructure-as-code configuration data along with all of the various Puppet modules [code] which consume and act upon that data. The data and each of the many Puppet modules were stored in separate Git repositories. Puppet administrators necessarily used an environment-server synchronization tool (between the remote source code storage service(s) and the organization's Puppet servers) called r10k to manage the complexity of this deployment model. For very large enterprises with especially complex environments, r10k was remarkably slow and could process only one environment and one repository at a time. William solved this issue by writing an entirely new version of r10k from scratch in Ruby. His version operated as an always-running daemon (server) that listened for job requests, aggregated them over a few seconds into batches (reducing wait-time for users during peak traffic times), and processed all of the batched jobs using multi-threaded parallel processing. This solution was measured to remarkably reduce very large environment deployment time by 78% on fresh runs and 90% on subsequent runs. William's version also added additional capabilities not present in the original r10k tool like non-privileged use -- the original r10k required sudo/Administrator privileges or to run as the Puppet server's service user account), whole-server (all previously-deployed environments) resynchronization, discrete global-data (configuration which is shared by all environments) synchronization, local caching, and considerable customization.
- Vagrant Common
- While the Hashicorp Vagrant tool was a boon to software engineers in the years before Docker Desktop became available, it had a steep learning curve and was prone to sprawling, disorganized directory-structures on developer workstations. It was also remarkably useless without active Internet access. William created Vagrant Common to add major Quality of Life improvements for daily Vagrant users. His framework provided a Git-managed, per-project (branch) organizational system which also drastically lowered the learning-curve by replacing Vagrant configuration files with intuitive YAML alternatives that supported valuable variable expansions. William's solution also provided shared off-line caching for VM builds, enabling hard-core developers to continue working even when Internet access isn't available (e.g.: riding the bus to/from work). It further provided a VM build template engine which eliminated duplication for common classes of VMs.
- Git Repository Search Tool
- A sophisticated Bash shell script which enabled users to search any number of Git repositories for an arbitrary set of terms, producing an easy to understand and configure report of results.
- SonaType Nexus Artifact Promotion Tool
- For SonaType Nexus version 2, William wrote a Ruby script which enabled artifact owners and downstream users (usually DevOps Engineers) to "promote" artifacts from one "lower" repository to a "higher" repository, even when that target repository was on a different installation of Nexus. While it was specialized for RPM artifacts, it was useful for any file-type which had at least a name. The tool deeply used the Nexus API and was so intuitive to use that it was baked into Jenkins as a purpose-built job for two employers.
- Minimalist Puppet Modules
- Called "trivial_resources" by William in the Puppet version 3.x era, he invented a pattern for generic Puppet module writing whereby the Puppet module supported a bare minimum of parameters to control a vast number of like resources on target machines, with the entire configurable content of those resources being fully expressed as YAML data via Hiera (even complex, mergeable XML documents). This pattern caught on and was used by many other Puppet module authors who opted to call their implementations by different names.
- Multi-Threaded Puppet Inventory Tool
- Not every organization which uses Puppet wants to use PuppetDB. If you think that's silly because it hurts Puppet by removing its most powerful dynamic configuration capability as well as its capacity to produce inventory, health, and compliance reports, William agrees with you. But he also understands that some organizations just don't want to use PuppetDB for reasons ranging from "that's more infrastructure spend we aren't willing to outlay for Puppet" to "we already use CMDB (or other non-Puppet inventory tracking software) and don't care about dynamic configuration". So, William wrote a multi-threaded Bash shell script which crawled all machines registered as agents of a set of supplied Puppet servers and produced a report of every controlled resource on them along with other useful metrics (available memory and storage, installed Puppet agent version, whether it was running, and so on). The resulting inventory report was provided in CSV format, enabling it to be easily imported into spreadsheets and other data-processing tools for analytics. Being multi-threaded, the report generation was remarkably fast, even for very large networks. As a bonus, it would gather the survey results from PuppetDB when an instance was configured for any given Puppet server, which was vastly faster than individually logging into and surveying each agent machine.
Technologies: Bash shell scripting, Ruby, Puppet, Nexus, Git, and others.
Open Source Contributions
William deeply understands the value of open source and is always happy to share feedback, fixes, and new features. He has been involved in myriad open source projects over the years, both professionally and as a hobby. He has contributed to the Puppet project, the Apache Portable Runtime Utilities (APR-Util) project, and others. He has also originated his own popular and award-winning open source projects.
Available for installation from PyPI and for perusing the code on GitHub as an open source Python project, YAML Path provides:
- a standard for describing the precise location of one or more specific data elements within YAML, JSON, EYAML, and compatible data files providing for a robust and intuitive query language;
- a simple-to-implement, production-proven Python library; and
- a comprehensive set of command-line tools for getting, setting, deleting, merging, validating, scanning, and even diff'ing data within these files.
A hobby project, William wrote YAML Path primarily as an excuse to learn Python while solving day-to-day automation problems for his other personal Puppet-based projects. He was inspired by the elegance of the Hiera query language and the versatility of XPath, which he decided to blend into a single solution (Hiera was intuitive and simple, but limited in its node-addressing capabilities). William also wanted to make it especially easy for anyone to use YAML Path without having to learn a new, rigid query language even when dealing with complex operations.
PyPI awarded William's YAML Path project in 2022, naming it one of the "top 1% critical (most downloaded) Python libraries".
Technologies: Python, PyPI, GitHub, GitHub Actions, YAML, JSON, EYAML, XPath, Puppet (Hiera), Bash shell scripting, and others.
Dynamic Package Builder
Available for download and code perusal at GitHub, the Dynamic Package Builder is a sophisticated set of Bash shell scripts which enable users to quickly and easily build dynamic RPMs (installation packages for Red Hat and derivative Linux distributions). This project is a popular reference for extremely advanced Bash shell scripting techniques covering topics like dynamic text file parsing, template processing, recursive variable expansion, passing associative arrays to functions, multi-tiered configuration ingress with priorities, sophisticated input validation, and others (all in native Bash).
Of note, some of William's employers have adopted variations of this project for their own customized use.
Technologies: RPM, Bash shell scripting, GitHub.
YAML for Puppet RSpec Testing
William has been an avid Puppet module author since modules "became a thing" (circa Puppet version 0.17). One of the tools which responsible Puppet developers use most in common -- next to the Puppet DSL itself -- is RSpec for unit testing. However, the RSpec syntax just isn't intuitive and RSpec code is labored by the need to write every test in Ruby language. This raises the bar considerably for RSpec test writing, especially for newcomers. William's rspec-puppet-yaml offering removes the Ruby language barrier for anyone who can more easily learn the human-friendly syntax of YAML. In the process, William extended RSpec's capabilities to enable automatic variant testing. This is the ability for test authors to write very little instruction to re-run a particular test with any number of variations of the test inputs and test environment with very little additional configuration.
Technologies: Ruby, YAML, Puppet, RSpec, GitHub.
HTML Master Pages
Driving this very web-site and others, HTML Master Pages is William's take on a concept introduced to him while working with Microsoft ASP.Net, that of "master pages" (the idea of a main "container" HTML document with special place-holders for other HTML fragments to appear within). In applying this fundamental concept to Apache Web Server and improving upon it, William's version is an even simpler, yet highly intelligent whole HTML document merging solution; there are no HTML fragments to manage, making the entire site vastly simpler to expand and control compared to Microsoft's implementation.
MySQL Connection Encryption for Apache Portable Runtime Utilities Library
William contributed MySQL connection encryption (TLS) code to the Apache Portable Runtime Utilities Library (APR-Util). While APR-Util can be used by any products that link to it, this patch most notably enabled Apache Web Servers to securely connect to MySQL servers with mutual trust and end-to-end encryption.
Technologies: C, MySQL, Apache Web Server, APR-Util, and others.
This deprecated project once served as the basis for far more powerful anti-intrusion solutions. POP-Auth 3 was a simple, yet powerful e-mail server user authentication solution which also provided unique security features. It was a drop-in solution for SMTP authentication mechanisms provided for the postfix and sendmail e-mail servers. William extended the project to provide anti-intrusion features including the ability to automatically detect and block dictionary attacks, brute-force attacks, and other common intrusion attempts. It was also capable of automatically blacklisting IP addresses of known spammers and intruders while real-time blacklisting IP addresses of self-detected threats. Along with its predecessor, this was a very popular solution for protecting e-mail servers from the late 1990's through the early 2000's.
Technologies: Perl, C, postfix, Dovecot.
RPM Builder for MegaRAID Linux Driver
When William inherited a bunch of server hardware from a former employer, he built up a private VMWare and Red Hat Linux laboratory. It wasn't easy however, because they had formerly been running Windows and there was -- at the time -- no such thing as an RPM for MegaRAID hardware controller drivers. This meant that the RAID capabilities were inaccessible to the new operating system, which wouldn't boot up properly.
William reached out far and wide but nobody could help, so he forged his own path. The end-result was an original, automated RPM builder -- including building the MegaRAID drivers from source -- for the first generation of MegaRAID hardware controllers drivers for Red Hat (Fedora) Linux. When William published his work to the Linux Users Group, he received remarkable commendation for not only the package but also for the quality of his technical writing (he'd written a manual for other people to build and install the package).
Technologies: C, Bash Shell Scripting, RPM
DevSecOps/DevOps and Various Administrator Roles
William has been involved in DevSecOps/DevOps before the terms were even "a thing". Thanks to a strong personal disdain for repeating work, he has been an advocate for automation for most of his professional career. In a sense, it took the DevOps movement for industry to catch up to William.
Intel Web Security
What William and team did at Intel wasn't actually called "DevOps" at the time because that term wasn't yet known in industry. Rather, it was simply called "Agile" and was considered an emerging "best practice" for software development and deployment. Intel decided to pilot Agile methodologies with a small, cross-functional team of Software Engineers, Network Operations Center Engineers, QA Engineers, and Product Owners. William was on this team and was responsible for co-writing the automation framework that would enable the teams to quickly and reliably build, test, deploy, and configure the Enterprise Web Security product in what was -- at the time -- simply known as "end-to-end automation".
Several years later, "DevOps" became an industry term and was identical in practice to what William's Agile team at Intel had been doing.
William was remarkably awarded in this capacity for developing a novel RDBMS schema automation engine with scheduling, error detection, recovery, and safe fallback. This engine was built using Puppet, Bash Shell Scripting, RPM, and PostgreSQL.
Technologies: Bash Shell Scripting, Jenkins, Mercurial (Hg), Red Hat Enterprise Linux, CentOS Linux, RPM, Puppet, SonarCube, Selenium, PostgreSQL, and others.
Customer Dialogue Manager (CDM)
William was hired into FICO through one of their recent acquisitions, Entiera. Entiera was a small company that specialized in marketing campaign engagements and subsequent customer relationship management via a product named Customer Dialogue Manager (CDM). One of its components responsible for data import and transformation was named Customer Data Integration (CDI). Both were deployed by hand on a per-customer basis by a substantial team of engineers from multiple teams. Such deployments would take weeks of infrastructure build, software installation, customization, testing, and troubleshooting.
Having just left Intel for FICO, William was in a position to identify the gaps in automation, lack of DevOps methodologies, and abundant opportunities for time savings and quality improvements. He independently invented a tailored CI/CD and CM pipeline for CDM, writing the entire development artifact generation and testing pipeline as well as the deployment and configuration management solutions himself. It took only one demonstration to senior leadership to prove its immense value. The product could be deployed to bare-metal servers in mere minutes, fully configured, customized per client, and ready for customer logins every single time.
Technologies: Puppet, Jenkins, Subversion (SVN), Git, Bash Shell Scripting, Red Hat Enterprise Linux (RHEL), CentOS Linux, RPM, and others.
FICO took note of William's successful CI/CD and CM implementations for Customer Dialogue Manager (CDM), quickly forming an entirely new DevOps organization around him. After some years successfully implementing a formal DevOps culture within FICO, William volunteered to personally take on the challenge of adapting one of FICO's biggest (by revenue) products to CI/CD: Debt Manager. The product would normally take -- on average -- a full six months to deploy for each new client despite claims of infrastructure, deployment, and configuration automation.
The product was so complex that it took eight months to adapt the existing build, release, deployment, and configuration pipeline to a true CI/CD and CM pipeline. William's solution was so successful that it reduced the deployment time for new clients from 6 months to just 52 minutes! This was a huge win for FICO and its customers. William was awarded multiple times for this accomplishment.
Technologies: Puppet, Jenkins, Subversion (SVN), Git, Bash Shell Scripting, Red Hat Enterprise Linux (RHEL), CentOS Linux, RPM, Java, and others.
Network Administrator and Systems Administrator
Before he became the Data Services Team Manager for Baldhosky Enterprises, William started as Ray Baldhosky's "IT Guy". This most closely matched the role of Network and Systems Administrator. He was responsible for the company's network infrastructure including all physical equipment along with the company's central file server (neither of which existed before Ray hired William). William was also responsible for the company's desktop computers, including their operating systems, applications, and peripherals along with their regular backups and routine maintenance.
Technologies: Windows, Realty 2000, Microsoft Access, Symantec Q&A, and others.
Database Administrator (DBA)
William has served in this role at multiple employers. Most notable was his role as the Database Administrator (DBA) for ASTECH InterMedia, Inc. He was responsible for managing the company's multiple Microsoft SQL Server installations along with their infrastructure and health including their schema, data, backups, index performance, and routine maintenance. William also optimized indexes as well as relational and spatial queries for SaaS application performance including the company's flagship product, Target Express.
He has also served as DBA for MySQL, Oracle, and PostgreSQL installations.
Technologies: Microsoft SQL Server, SQL Server Management Studio, PostgreSQL, MySQL Server, MySQL Workbench, Oracle, and others.
While William's first exposure to "clouds" were in private, multi-national data centers for large employers like FICO and Intel, he'd been experimenting with public cloud providers like Amazon Web Services (AWS) for his own hobby projects for years before his first professional migration.
Debt Manager (again)
When FICO divested non-platform products like Debt Manager to C&R Software, William was tasked with being on the cross-functional team responsible for migrating Debt Manager from FICO's data centers to C&R Software's nascent Amazon Web Services (AWS) cloud infrastructure. This was a massive undertaking that required a deep understanding of the product's architecture, its dependencies, its data, and AWS' services and capabilities. A "lift-and-shift" operation was not possible due to the massive hardware requirements of each customer's deployment and the immense cost that would force upon C&R's customers.
The team decided early on to adapt Debt Manager itself to a pseudo-cloud version which would be further improved with each iteration. William was deeply involved in this effort, writing the infrastructure build-out automation, the product's configuration management, and the product's deployment automation. He was also heavily involved with the data migration and professional services teams to migrate customer data from FICO to AWS along with innumerable custom client configurations.
This was a very successful migration that was completed on-time (despite multiple schedule shortenings). William was awarded multiple times for the many accomplishments this major, multi-faceted effort required.
Technologies: Amazon Web Services (AWS), CloudFormation, Java, Puppet, Jenkins, Git, Subversion (SVN), Bash Shell Scripting, Red Hat Enterprise Linux (RHEL), CentOS Linux, Amazon Linux, RPM, and others.
Hotel Booking Application
While engaged with The Cloud Bootcamp, William took part in a multi-cloud migration of a hotel booking web application from a faux private data center to both Amazon Web Services (AWS) and Google Cloud Platform (GCP). The entire application, its data, and a large library of documents were successfully migrated in just three days with resources split between AWS and GCP. William employed Kubernetes and Terraform to orchestrate the migration with only a few commands.
Technologies: Amazon Web Services (AWS), Google Cloud Platform (GCP), MySQL, Kubernetes, Terraform, and others.
Since he was a small child, William has been writing video games in myriad programming languages. The joy of watching other people enjoy his games or his add-ons to games is the fruit of his deepest passion.
Inter-Guild Link (IGL) was an add-on for the World of Warcraft on-line MMORPG video game. William wrote it in the Lua programming language and used the Blizzard API to integrate deeply into the game's native UI, so much so that its presence was indistinguishable from the normal UI. Users truly believed everyone they saw in all Guild-based UI elements were in their own Guild. It was the first add-on of its kind and inspired other add-on authors to write similar tools including extensions to IGL.
Technologies: Lua, World of Warcraft API, Curse Gaming, and others.
Before CS:GO, there was just Counter-Strike, based on the popular video game Half-Life. William was an avid Counter-Strike player and private game server administrator. He also enjoyed writing add-ons for the game. One of the most popular add-ons he contributed to was PODBot, which generated robotic opponents that could be added to a Counter-Strike server. Doing so allowed players to play against computer-controlled opponents when there weren't enough other human players available for matches.
For most new computer programming languages William picks up, he teaches himself the language by rewriting the popular 1970's video game, Breakout. He has done so in many languages, including BASIC, Pascal, C, C++, and even programming languages not intended for use as performant video games platforms like Visual FoxPro (seriously!).
In the case of Bust Out, William wrote a hybrid rendition of the game by blending it with other popular video games including Bust a Move and Arkanoid. He wrote Bust Out originally in Pascal, then Turbo-C, then again in C++ (while seeking employment with one of the companies behind the Halo franchise, this time employing the ActiveX API at their direction).
William has since ported this game to Unity and C#.
Space Wars 2022
In collaboration with his friends and family, William created a modernized version of the classic 1970s computer game, Space War! Written natively for Unity in C#, Space Wars 2022 is a 2.5D space combat game that pits players against one another in a battle to the death. Players may choose from a variety of ships, each with its own unique characteristics. Players may also pick up any of a variety of weapons and countermeasures that were inspired by real-world systems as well as popular science fiction concepts.
Technologies: Unity, C#, Visual Studio
Inspired by a mini-game in a major franchise, William and friends remade a virtual tabletop game where cards are laid edge-to-edge in turns in a 2-dimensional matrix and the cards with more points on the contact edge(s) takes ownership of the weaker card(s). William's take on the game came out of a desire to create an AI that would be challenging to play against; the original game's AI was disappointingly easy to beat and William pursues challenge. On its own, the game concept is trivial; William's real interest with this project was in programming the AI.
William successfully implemented several AI modes, each employing a unique gameplay strategy. He also created an AI mode that self-determines which strategy to apply to each turn to ensure its own success against the player. While every AI mode he created is demonstrably more competent than the original mini-game's developers implemented, the smartest of them has been described by players as, "amazingly smart" and "a real b**** to beat!"
Technologies: Unity, C#, Visual Studio
Star Base Defender
One of William's earliest video games, Star Base Defender pitted players controlling vertically sliding turrets against an incoming, growing barrage of enemy spaceships that were intent on slamming themselves into the player's star base (the entire screen edge immediately behind the turret). The player had only one life and the objective of the game was simply to earn the highest score before death.
William is forever a student. When not working, he is either teaching himself new skills or taking formal training/classes to keep himself on the bleeding edge of technology.
No Code AI and Machine Learning: Building Data Science Solutions
Issuer: Massachusetts Institute of Technology (MIT)
Issued: June 2023
Intensive Cloud Computing Hands-on Training
Issuer: The Cloud Bootcamp
Issued: May 2023