Image: studiostoks/Shutterstock

“Nobody expects the Spanish Inquisition!”
– From A Monty Python Sketch

META: This is a copy of the story on my personal Web site.


I often write SDKs, and, when I do so, I like to follow a philosophy that I nickname “SQUID”.

One of the ways that I implement the “S” in “SQUID” (which stands for “Simplicity”), is to provide internal data structures as protocols, instead of classes or structs. It’s not a really big deal, but it does help to reduce the complexity and overhead of using the SDK.

As I was working on an SDK recently, I…

Image: Unknown/

“The large print giveth, and the small print taketh away.”

– Tom Waits

META: This essay is accompanied by a GitHub Repo, containing a sample Xcode project. We will link to tags in that repo, to denote various steps in our discussion.

We will also have a directory containing generated documentation. It, too, will have multiple revisions.

This is also a copy of the story on my personal Web site. The formatting options for Medium are limited. You may find it easier to follow the code samples on the other site.

Why Document?

META: This is a reprint from my personal Web Site.

Image: Pearson Scott Foresman/Wikimedia Commons/Tanyadzu/Robert Adrian Hillman/Shutterstock

“A clever person solves a problem. A wise person avoids it.”
-Albert Einstein

Life Is Risky. Learn to Live With It.

I can’t get anywhere, if I don’t take risks, but I won’t get anywhere if I’m reckless.

I have found that it’s…risky for me to evaluate risk without some kind of mental framework.

In this essay, I’ll give a brief overview of my approach to managing risk.

I‘m Terrible at Evaluating Risk

When it comes to evaluating risk, the human brain is a remarkably flawed instrument.

Many studies have been made as to how we perceive risk, and how it affects decision-making…

Image: anton_novik/fersuart/Shutterstock

META: This is a reprint from my personal Web site.

“Put all your eggs in the one basket and -WATCH THAT BASKET.”
– Mark Twain

Conventional wisdom in software engineering prescribes Unit Testing as a principal testing methodology.

Compared to unit tests, a test harness is a [usually] simple standalone application that incorporates the system under test, and presents a user interface. Since it is for testing, it may expose internal metrics and allow the user to access parts of the code that are usually hidden.

I prefer using test harnesses. Here’s why.

This Is Not a Diatribe Against Unit Tests

Unit tests are great. I use them…

Image: panco/Shutterstock

“Good judgment comes from experience. Experience comes from bad judgment.”
– Attributed to Nasrudin

Software Engineering has always stressed the importance of ensuring the product meets the specification.

In this essay, I turn that around, and suggest that we ensure that the specification meets the product.

This essay is basically a specialization of Forensic Design Documentation.

META: This is a reprint from my personal Web site.

Quick Warning

The technique that I will explain here won’t necessarily scale that well to large, hybrid projects; especially those that may cross corporate or enterprise boundaries. …

Image: Oleg Voronische/Shutterstock

“A ship in harbor is safe, but that is not what ships are built for.”
–John A. Shedd

Quick Disclaimer: This is NOT an original idea for an essay. Lots of folks have used this very quote to preface life advice. I’m just using it to talk about my own personal experience and approach. It’s not advice. It’s just me, talking about my favorite subject: myself.

META: This is a reprint from my personal Web site.

First, There Is the Terror

I don’t know how to do almost every single project I ever take on.

Image: BrAt82/Shutterstock

META: This article is a reprint of the article on my site.

“Prediction is very difficult, especially about the future.”
Niels Bohr

Image: National Museum of American History/WikimediaCommons

META: This is a copy of the story on my Web site. It’s a screed I wrote some time ago, in an effort to help folks get a better appreciation of the simple, yet vitally important, concept of infrastructure.

What’s the Big Deal?

Infrastructure is usually considered to be a dull, lifeless subject. No one wants to talk about it or hear about it. There’s no fast cars or buxom ladies. We always picture some guy with a buzz cut, heavy glasses, a short-sleeved white dress shirt, ugly tie and a pocket protector when we think of “infrastructure.” …

META: This is a copy of the case study on my Web site. It isn’t something that everyone will find interesting, but for some people, it’s absolutely fascinating.


This article contains a lot of technical jargon. That’s because I am giving a fairly detailed account of the decisions and considerations that went into the BMLT. You don’t need to understand the jargon (although I do provide links to fairly basic explanations of the topics, if you want to explore further). You can just glaze your eyes when the geekspeak starts, and skip over it.


“BMLT” stands for Basic Meeting List…

META: This is a reprint from my personal Web site. It’s an essay on avoiding “offroad travel,” when designing UX.

Image: CWB/ShutterStock

“There’s always an easy solution to every human problem; Neat, plausible and wrong.”
– H. L. Mencken


So I’m not even going to try to impress anyone with poitry. There’s the famous poem, where everyone thinks the poet celebrates individuality, bravely goes down “The Road Less Traveled By,” and gets all kinds of rewards for being an individualist.

Lotta folks think it’s sort of the opposite. The chap wanders down the “Road Less Traveled By,” and eventually wishes he’d followed…

Chris Marshall

Software engineer and developer of Things Apple, living in New York.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store