A Writer’s Guide

As a former game creator, I’ve met many people over the years who wanted to “tell their story” within the medium of computer games. This article contains advice for people who want to do just that. It’s based on my experience both as a game player, and someone who has worked on games of this type.

Human beings are storytelling animals — we have a genetic predisposition to understand our environment in terms of stories. Our brains are wired for this. But to leverage this wiring requires following certain rules and conventions. …

In this article, I’ll show you everything you need to know in order to create portals in 3D scenes using the three.js framework.

Portals are probably best known because of the game Portal published by Valve software, but they are useful in all kinds of games and graphics. An example of this is connecting various game levels together, such as a portal that provides a transition between and above-ground and underground environment. Portals can also be used to simulate mirrors and reflective surfaces.

Conceptually, a portal is a kind of in-scene “window” which displays a view into a different…

Photo by Felix Mooneeram on Unsplash

Like most people, I enjoy watching movies. But I also get really annoyed at poor screen writing. It’s remarkable how many movies there are that have great acting & cinematography, but are completely ruined by a few words on paper.

There’s one particular kind of bad screen writing I see a lot, which I call “teleological” storytelling.

The term “teleology” refers to the tendency to explain phenomena in terms of the purpose they serve rather than by the cause by which they arise. For example, Aristotle believed that the purpose of an acorn was to become a fully-grown oak tree…

Photo by Luke Stackpoole on Unsplash

Engineering Insights

Experience is what you get when you didn’t get what you wanted.

One of the ironic facts of life is that we generally learn more from failure than from success. While it may feel like a bitter pill to swallow at the time, one of the things that you start to appreciate as you get older is the chance to have what can be charitably called “a learning experience”.

This is especially true when it comes to handling software errors.

In my experience, error handling code in large apps is often in a state of neglect (a characteristic it shares…

Project Xanadu was a widely-touted attempt to create a global, networked Hypertext publishing system. It was founded in 1960, three decades before the web was introduced in 1989. It shared many of the same ideals and aspirations. Yet, despite a substantial engineering team and corporate sponsorship, it never produced a viable product.

As someone interested in failure and its causes, I often think about why this is.

Part of Xanadu’s problem was that it was much more ambitious than the web. It was designed to have micropayments built in from the start: the act of reading a page would automatically…

Photo by Krzysztof Kowalik on Unsplash

Here’s a story from my Air Force days.

Back in those days, programming teams were structured very differently. All of the actual business logic and domain knowledge was performed by “system analysts”, who would write down in a document what the program was supposed to do. This document would then be handed to a “coder” whose job was to actually enter the code into the computer (often in the form of punch cards). …

Photo by Chris Ried on Unsplash

Engineering Insights

As a software engineer working on a large project, you’ll likely be asked to do cleanup work on the code to make it more readable and more maintainable. There are several different ways in which code can be reorganized, but one of the most common refactoring tasks that you’ll be tasked with is elimination of duplicate code.

In fact, the very word refactor sort of implies elimination of redundancies. That is because the term originally comes from the word factor in the mathematical sense. …

Photo by Shot by Cerqueira on Unsplash

Engineering Insights

I really enjoy working with young, newly-minted software engineers. I love their energy, their enthusiasm, how quickly they grasp new concepts and embrace new paradigms.

However, as a senior technical team lead working with less-experienced team mates, there are certain pitfalls you must learn to avoid. In this essay, I want to give some advice for senior technical leaders, including a description of some of the common “failure modes” I have seen with junior engineers.

You’re not in college and this isn’t a test

Sometimes when I assign a task to a junior engineer, they will get the idea that I am testing them in some way, and the…

Photo by Jason Barone on Unsplash

Most of the autobiographical essays that I have written so far have been about successful projects, or at very least, ones that accomplished something noteworthy before they died. However, in the interest of completeness I want to talk a bit about some of the others — the ones that weren’t so successful.

During the period from 1996 through 2002 I worked at four different startup companies. Each of the four projects that I worked on failed. That alone is not remarkable, as most startups do fail. However, they each failed in a different and interesting way.

Before I begin, I…

Why are human romantic relationships so complex?

There’s an episode of Star Trek: Voyager in which the Doctor attempts to explain the basics of romance and dating to the ex-Borg crew member, Seven of Nine (who happens to be one of my favorite Star Trek characters). Despite making a superficial sort of sense, the Doctor’s advice ends up creating a thorough mess of things. This is partly due to the fact that the Doctor’s role on the show is to be an occasional comedic foil; but it’s also because, I suspect, that the writers of the show didn’t really understand what they were talking about.

I have…


I’m not a mad scientist. I’m a mad natural philosopher.

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