I like to write

A writing portfolio can be tough to maintain, as links tend to change over time. Instead, I've decided to share a copy of some of my contract work here, as well as some of own personal writing.

In need of some fresh technical content?

Fix Spaghetti Code and Other Pasta-Theory Antipatterns

Nobody ever said it’s easy to write clean code. Successful software development isn’t just about making software work; it’s about making sure it will continue to work. While hardly an exciting objective, code maintainability is one of the most important elements of any application. So, what does maintainable code look like? There is no single answer to that question. Every language, framework and company has a different strategy to ensure durable, maintainable code. Developers should understand the reasons why code fails to be maintainable, to avoid programming antipatterns. Nearly every software developer agrees on what maintainable code doesn’t look like: pasta. The pasta theory of programming, in which various types of unmaintainable code take on familiar food shapes and structures, is a menu of avoidable practices. The most well-known on this list is spaghetti code, lasagna code, ravioli code and pizza code. Here are examples of each antipattern and how...

Read more »

Putting the “Code” in Configuration Management

Let’s face it, when it comes to endpoint management, automation is king. In our hyper-connected, ultra-virtualized, cloud-based world, there is no shortage of machines that we have access to and no limitation to the amount of infrastructure we can manage. But with new scale comes new challenges, and configuration management is one of the first ones many organizations encounter. How do we ensure that every new machine we bring online stays online? And if something needs to change, how do we synthesize that update across twelve-hundred machines? Sure, a little scripting here and there can get the job done, but it’s hardly a scalable (or stable) solution. While there is no shortage of ways to remotely manage the configuration of the endpoints in your domain, the introduction of cross-platform requirements and hardware mismatches will nearly always introduce inconsistencies and workarounds. What works on Machine A might not work on Machine...

Read more »

The Life and Times of Configuration Management: A Brief History

In 2001, the Department of Defense published MIL-HDBK-61A(SE), a 221-page military handbook offering guidance on the practice of configuration management to all military departments and agencies. While MIL-HDBK-61A(SE) is the government’s most recent contribution to the practice of configuration management, the Department of Defense itself has a long history of expertise in the field, having originated the concept in the 1950s as a technical management discipline for hardware components—as opposed to the software-based discipline it is most commonly associated with today. From Military to Modernity Throughout the 1960s and 1970s, the Department of Defense went on to publish a series of military standards—known as the “480 series”—that outlined the uniform engineering and technical requirements for the then-military-specific discipline of Configuration Management. Over the next two decades, this series of standards would be consolidated into a single, all-encompassing standard known as MIL-STD-973, which was itself ultimately replaced by MIL-HDBK-61—the first iteration...

Read more »

Soft(there): Dealing With Deprecations

“If it ain’t broke, don’t fix it.” As a software developer, I can’t express how much I hate that phrase. Popularized in 1977 by Bert Lance, the then-Director of the Office of Management and Budget under President Carter, “if it ain’t broke, don’t fix it” is an oft-used mantra amongst the change-averse that—in the context of computing—can have disastrous effects on everything from productivity to security. While originally intended to highlight the importance of focusing resources on impactful problems instead of perceived ones—a process lovingly known as “yak shaving” in software development—this southern colloquialism-turned-cliché has become a catch-all for any marginally-convincing reason to avoid updating out-of-date software.

Read more »

Soft(where): Where Does Software Come From?

“If I have seen further it is by standing on the shoulders of Giants.” Most commonly attributed to Isaac Newton in 1675—who himself was paraphrasing a 12th-century parable—this quote has always resonated deeply with me as a programmer. An objectively new field of study by any standard, the practice of software development has undergone rapid evolutions since the first electronically stored program was created 70 years ago. While the software of today only superficially resembles the software of yesteryear, it wouldn’t be at all possible if it weren’t for the giants that laid the foundation before us.

Read more »